diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 43389076f..ed1245c77 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -49,6 +49,6 @@ jobs: run: | npm run test:smoke npm run testb - npm run perf + # npm run perf npm run test:types # npm run test:stress diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b3bbd6ba3..96caf8b12 100755 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,7 @@ jobs: run: | npm run test:smoke npm run testb - npm run perf + # npm run perf npm run test:types # npm run test:stress diff --git a/README.md b/README.md index 852521b66..3ab5b71ee 100644 --- a/README.md +++ b/README.md @@ -338,7 +338,7 @@ nlp.extend((Doc, world) => { | [Tokenization](https://observablehq.com/@spencermountain/compromise-tokenization) | [Text](https://observablehq.com/@spencermountain/compromise-text) | [Pronounce](https://observablehq.com/@spencermountain/compromise-pronounce) | [Named-Entities](https://observablehq.com/@spencermountain/compromise-topics) | [Utils](https://observablehq.com/@spencermountain/compromise-utils) | [Strict](https://observablehq.com/@spencermountain/compromise-strict) | [Whitespace](https://observablehq.com/@spencermountain/compromise-whitespace) | [Verbs](https://observablehq.com/@spencermountain/verbs) | [Penn-tags](https://observablehq.com/@spencermountain/compromise-penn-tags) -| [World data](https://observablehq.com/@spencermountain/compromise-world) | [Normalization](https://observablehq.com/@spencermountain/compromise/Normalization) | +| [World data](https://observablehq.com/@spencermountain/compromise-world) | [Normalization](https://observablehq.com/@spencermountain/compromise/Normalization) | [Typeahead](https://observablehq.com/@spencermountain/compromise/compromise-typeahead) | [Fuzzy-matching](https://observablehq.com/@spencermountain/compromise-fuzzy-matching) |[Typescript](https://observablehq.com/@spencermountain/compromise-typescript) | diff --git a/builds/compromise-tokenize.js b/builds/compromise-tokenize.js index 88256817c..b1b50b70f 100644 --- a/builds/compromise-tokenize.js +++ b/builds/compromise-tokenize.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).nlp=e()}(this,(function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var r=0;rr?n:r)+1;if(Math.abs(r-n)>(i||100))return i||100;for(var o,s,a,u,c,h,l=[],f=0;f4)return r;u=s===(a=e[o-1])?0:1,c=l[v-1][o]+1,(h=l[v][o-1]+1)1&&o>1&&s===e[o-2]&&t[v-2]===a&&(h=l[v-2][o-2]+u)2&&void 0!==arguments[2]?arguments[2]:3;if(t===e)return 1;if(t.lengthe.fuzzy)return!0;if(!0===e.soft&&(i=B(e.word,t.root))>e.fuzzy)return!0}return e.word===t.clean||e.word===t.text||e.word===t.reduced}return void 0!==e.tag?!0===t.tags[e.tag]:void 0!==e.method?"function"==typeof t[e.method]&&!0===t[e.method]():void 0!==e.regex?e.regex.test(t.clean):void 0!==e.fastOr?e.fastOr.hasOwnProperty(t.reduced)||e.fastOr.hasOwnProperty(t.text):void 0!==e.choices&&("and"===e.operator?e.choices.every((function(e){return S(t,e,r,n)})):e.choices.some((function(e){return S(t,e,r,n)})))},z=S=function(t,e,r,n){var i=I(t,e,r,n);return!0===e.negative?!i:i},D={},_={doesMatch:function(t,e,r){return z(this,t,e,r)},isAcronym:function(){return b(this.text)},isImplicit:function(){return""===this.text&&Boolean(this.implicit)},isKnown:function(){return Object.keys(this.tags).some((function(t){return!0!==D[t]}))},setRoot:function(t){var e=t.transforms,r=this.implicit||this.clean;if(this.tags.Plural&&(r=e.toSingular(r,t)),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=e.toInfinitive(r,t,n)}this.root=r}},M=/[\s-]/,G=/^[A-Z-]+$/,q={textOut:function(t,e,r){t=t||{};var n=this.text,i=this.pre,o=this.post;return!0===t.reduced&&(n=this.reduced||""),!0===t.root&&(n=this.root||""),!0===t.implicit&&this.implicit&&(n=this.implicit||""),!0===t.normal&&(n=this.clean||this.text||""),!0===t.root&&(n=this.root||this.reduced||""),!0===t.unicode&&(n=p(n)),!0===t.titlecase&&(this.tags.ProperNoun&&!this.titleCase()||(this.tags.Acronym?n=n.toUpperCase():G.test(n)&&!this.tags.Acronym&&(n=n.toLowerCase()))),!0===t.lowercase&&(n=n.toLowerCase()),!0===t.acronyms&&this.tags.Acronym&&(n=n.replace(/\./g,"")),!0!==t.whitespace&&!0!==t.root||(i="",o=" ",!1!==M.test(this.post)&&!t.last||this.implicit||(o="")),!0!==t.punctuation||t.root||(!0===this.hasPost(".")?o="."+o:!0===this.hasPost("?")?o="?"+o:!0===this.hasPost("!")?o="!"+o:!0===this.hasPost(",")?o=","+o:!0===this.hasEllipses()&&(o="..."+o)),!0!==e&&(i=""),!0!==r&&(o=""),!0===t.abbreviations&&this.tags.Abbreviation&&(o=o.replace(/^\./,"")),i+n+o}},L={Auxiliary:1,Possessive:1},W=function(t,e){var r=Object.keys(t.tags),n=e.tags;return r=r.sort((function(t,e){return L[e]||!n[e]?-1:n[e]?n[t]?n[t].lineage.length>n[e].lineage.length?1:n[t].isA.length>n[e].isA.length?-1:0:0:1}))},U={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},R={json:function(t,e){t=t||{};var r={};return(t=Object.assign({},U,t)).text&&(r.text=this.text),t.normal&&(r.normal=this.clean),t.tags&&(r.tags=Object.keys(this.tags)),t.clean&&(r.clean=this.clean),(t.id||t.offset)&&(r.id=this.id),t.implicit&&null!==this.implicit&&(r.implicit=this.implicit),t.whitespace&&(r.pre=this.pre,r.post=this.post),t.bestTag&&(r.bestTag=W(this,e)[0]),r}},H=Object.assign({},N,V,_,q,R);function Q(){return"undefined"!=typeof window&&window.document}var Z=function(t,e){for(t=t.toString();t.length0&&void 0!==arguments[0]?arguments[0]:"";e(this,t),r=String(r);var n=F(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=h(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(t,[{key:"set",value:function(t){var e=F(t);return this.text=e.text,this.clean=e.clean,this}}]),t}();st.prototype.clone=function(){var t=new st(this.text);return t.pre=this.pre,t.post=this.post,t.clean=this.clean,t.reduced=this.reduced,t.root=this.root,t.implicit=this.implicit,t.tags=Object.assign({},this.tags),t},Object.assign(st.prototype,H),Object.assign(st.prototype,ot);var at=st,ut={terms:function(t){if(0===this.length)return[];if(this.cache.terms)return void 0!==t?this.cache.terms[t]:this.cache.terms;for(var e=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof t&&(t="normal"===t?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===t?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,normal:!0}:"reduced"===t?{punctuation:!1,titlecase:!1,lowercase:!0,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"implicit"===t?{punctuation:!0,implicit:!0,whitespace:!0,trim:!0}:"root"===t?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),i=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(i=!0);var o=n.reduce((function(o,s,a){if(0===a&&""===s.text&&null!==s.implicit&&!t.implicit)return o;t.last=r&&a===n.length-1;var u=!0,c=!0;return!1===i&&(0===a&&e&&(u=!1),a===n.length-1&&r&&(c=!1)),o+s.textOut(t,u,c)}),"");return!0===i&&r&&(o=ct(o)),!0===t.trim&&(o=o.trim()),o}},lt={trim:function(){var t=this.terms();if(t.length>0){t[0].pre=t[0].pre.replace(/^\s+/,"");var e=t[t.length-1];e.post=e.post.replace(/\s+$/,"")}return this}},ft=/[.?!]\s*$/,pt=function(t,e){e[0].pre=t[0].pre;var r,n,i=t[t.length-1],o=e[e.length-1];o.post=(r=i.post,n=o.post,ft.test(n)?n+r.match(/\s*$/):r),i.post="",""===i.post&&(i.post+=" ")},vt=function(t,e,r){var n=t.terms(),i=e.terms();pt(n,i),function(t,e,r){var n=t[t.length-1],i=e[e.length-1],o=n.next;n.next=e[0].id,i.next=o,o&&(r.get(o).prev=i.id);var s=t[0].id;s&&(e[0].prev=s)}(n,i,t.pool);var o,s=[t],a=t.start,u=[r];return(u=u.concat(r.parents())).forEach((function(t){var e=t.list.filter((function(t){return t.hasId(a)}));s=s.concat(e)})),(s=(o=s).filter((function(t,e){return o.indexOf(t)===e}))).forEach((function(t){t.length+=e.length})),t.cache={},t},dt=/ /,mt=function(t,e,r){var n=t.start,i=e.terms();!function(t){var e=t[t.length-1];!1===dt.test(e.post)&&(e.post+=" ")}(i),function(t,e,r){var n=r[r.length-1];n.next=t.start;var i=t.pool,o=i.get(t.start);o.prev&&(i.get(o.prev).next=e.start),r[0].prev=t.terms(0).prev,t.terms(0).prev=n.id}(t,e,i);var o,s=[t],a=[r];return(a=a.concat(r.parents())).forEach((function(t){var r=t.list.filter((function(t){return t.hasId(n)||t.hasId(e.start)}));s=s.concat(r)})),(s=(o=s).filter((function(t,e){return o.indexOf(t)===e}))).forEach((function(t){t.length+=e.length,t.start===n&&(t.start=e.start),t.cache={}})),t},gt=function(t,e){var r=e.pool(),n=t.terms(),i=r.get(n[0].prev)||{},o=r.get(n[n.length-1].next)||{};n[0].implicit&&i.implicit&&(i.set(i.implicit),i.post+=" "),function(t,e,r,n){var i=t.parents();i.push(t),i.forEach((function(t){var i=t.list.find((function(t){return t.hasId(e)}));i&&(i.length-=r,i.start===e&&(i.start=n.id),i.cache={})})),t.list=t.list.filter((function(t){return!(!t.start||!t.length)}))}(e,t.start,t.length,o),i&&(i.next=o.id),o&&(o.prev=i.id)},bt={append:function(t,e){return vt(this,t,e),this},prepend:function(t,e){return mt(this,t,e),this},delete:function(t){return gt(this,t),this},replace:function(t,e){var r=this.length;vt(this,t,e);var n=this.buildFrom(this.start,this.length);n.length=r,gt(n,e)},splitOn:function(t){var e=this.terms(),r={before:null,match:null,after:null},n=e.findIndex((function(e){return e.id===t.start}));if(-1===n)return r;var i=e.slice(0,n);i.length>0&&(r.before=this.buildFrom(i[0].id,i.length));var o=e.slice(n,n+t.length);o.length>0&&(r.match=this.buildFrom(o[0].id,o.length));var s=e.slice(n+t.length,e.length);return s.length>0&&(r.after=this.buildFrom(s[0].id,s.length,this.pool)),r}},yt={json:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r={};return t.text&&(r.text=this.text()),t.normal&&(r.normal=this.text("normal")),t.clean&&(r.clean=this.text("clean")),t.reduced&&(r.reduced=this.text("reduced")),t.implicit&&(r.implicit=this.text("implicit")),t.root&&(r.root=this.text("root")),t.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),t.terms&&(!0===t.terms&&(t.terms={}),r.terms=this.terms().map((function(r){return r.json(t.terms,e)}))),r}},At={lookAhead:function(t){t||(t=".*");var e=this.pool,r=[],n=this.terms();return function t(n){var i=e.get(n);i&&(r.push(i),i.prev&&t(i.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(t)},lookBehind:function(t){t||(t=".*");var e=this.pool,r=[];return function t(n){var i=e.get(n);i&&(r.push(i),i.prev&&t(i.prev))}(e.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(t)}},wt=Object.assign({},ut,ht,lt,bt,yt,At),xt=function(t,e){if(0===e.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},Pt=T((function(t,e){e.getGreedy=function(t,e){for(var r=Object.assign({},t.regs[t.r],{start:!1,end:!1}),n=t.t;t.t1&&void 0!==arguments[1]?arguments[1]:0,n=t.regs[t.r],i=!1,o=0;oe&&(e=r.length),n}))&&e},e.getGroup=function(t,e,r){if(t.groups[t.groupId])return t.groups[t.groupId];var n=t.terms[e].id;return t.groups[t.groupId]={group:String(r),start:n,length:0},t.groups[t.groupId]}})),jt=function(t,e,r,n){for(var i={t:0,terms:t,r:0,regs:e,groups:{},start_i:r,phrase_length:n,hasGroup:!1,groupId:null,previousGroup:null};i.ri.t)return null;if(!0===o.end&&i.start_i+i.t!==n)return null}if(!0===i.hasGroup){var d=Pt.getGroup(i,f,o.named);i.t>1&&o.greedy?d.length+=i.t-f:d.length++}}else{if(o.negative){var m=Object.assign({},o);if(m.negative=!1,!0===i.terms[i.t].doesMatch(m,i.start_i+i.t,i.phrase_length))return null}if(!0!==o.optional){if(i.terms[i.t].isImplicit()&&e[i.r-1]&&i.terms[i.t+1]){if(i.terms[i.t-1]&&i.terms[i.t-1].implicit===e[i.r-1].word)return null;if(i.terms[i.t+1].doesMatch(o,i.start_i+i.t,i.phrase_length)){i.t+=2;continue}}return null}}}else{var g=Pt.greedyTo(i,e[i.r+1]);if(void 0!==o.min&&g-i.to.max){i.t=i.t+o.max;continue}if(null===g)return null;!0===i.hasGroup&&(Pt.getGroup(i,i.t,o.named).length=g-i.t),i.t=g}}return{match:i.terms.slice(0,i.t),groups:i.groups}},Et=function(t,e,r){if(!r||0===r.length)return r;if(e.some((function(t){return t.end}))){var n=t[t.length-1];r=r.filter((function(t){return-1!==t.match.indexOf(n)}))}return r},Ot=/\{([0-9]+,?[0-9]*)\}/,kt=/&&/,Ct=new RegExp(/^<(\S+)>/),Ft=function(t){return t[t.length-1]},Tt=function(t){return t[0]},Nt=function(t){return t.substr(1)},Vt=function(t){return t.substr(0,t.length-1)},$t=function(t){return t=Nt(t),t=Vt(t)},Bt=function t(e){for(var r,n={},i=0;i<2;i+=1){if("$"===Ft(e)&&(n.end=!0,e=Vt(e)),"^"===Tt(e)&&(n.start=!0,e=Nt(e)),("["===Tt(e)||"]"===Ft(e))&&(n.named=!0,"["===Tt(e)?n.groupType="]"===Ft(e)?"single":"start":n.groupType="end",e=(e=e.replace(/^\[/,"")).replace(/\]$/,""),"<"===Tt(e))){var o=Ct.exec(e);o.length>=2&&(n.named=o[1],e=e.replace(o[0],""))}if("+"===Ft(e)&&(n.greedy=!0,e=Vt(e)),"*"!==e&&"*"===Ft(e)&&"\\*"!==e&&(n.greedy=!0,e=Vt(e)),"?"===Ft(e)&&(n.optional=!0,e=Vt(e)),"!"===Tt(e)&&(n.negative=!0,e=Nt(e)),"("===Tt(e)&&")"===Ft(e)){kt.test(e)?(n.choices=e.split(kt),n.operator="and"):(n.choices=e.split("|"),n.operator="or"),n.choices[0]=Nt(n.choices[0]);var s=n.choices.length-1;n.choices[s]=Vt(n.choices[s]),n.choices=n.choices.map((function(t){return t.trim()})),n.choices=n.choices.filter((function(t){return t})),n.choices=n.choices.map((function(e){return e.split(/ /g).map(t)})),e=""}if("/"===Tt(e)&&"/"===Ft(e))return e=$t(e),n.regex=new RegExp(e),n;if("~"===Tt(e)&&"~"===Ft(e))return e=$t(e),n.soft=!0,n.word=e,n}return!0===Ot.test(e)&&(e=e.replace(Ot,(function(t,e){var r=e.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,""}))),"#"===Tt(e)?(n.tag=Nt(e),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===Tt(e)?(n.method=Nt(e),n):"."===e?(n.anything=!0,n):"*"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace("\\*","*")).replace("\\.","."),n.word=e.toLowerCase()),n)},St=function(t){for(var e,r=!1,n=-1,i=0;i1&&void 0!==arguments[1]?arguments[1]:{},r=t.filter((function(t){return t.groupType})).length;return r>0&&(t=St(t)),e.fuzzy||(t=It(t)),t},Dt=/[^[a-z]]\//g,_t=function(t){return"[object Array]"===Object.prototype.toString.call(t)},Mt=function(t){var e=t.split(/([\^\[\!]*(?:<\S+>)?\(.*?\)[?+*]*\]?\$?)/);return e=e.map((function(t){return t.trim()})),Dt.test(t)&&(e=function(t){return t.forEach((function(e,r){var n=e.match(Dt);null!==n&&1===n.length&&t[r+1]&&(t[r]+=t[r+1],t[r+1]="",null!==(n=t[r].match(Dt))&&1===n.length&&(t[r]+=t[r+2],t[r+2]=""))})),t=t.filter((function(t){return t}))}(e)),e},Gt=function(t){var e=[];return t.forEach((function(t){if(/\(.*\)/.test(t))e.push(t);else{var r=t.split(" ");r=r.filter((function(t){return t})),e=e.concat(r)}})),e},qt=function(t){return[{choices:t.map((function(t){return[{word:t}]})),operator:"or"}]},Lt=function(t){if(!t||!t.list||!t.list[0])return[];var e=[];return t.list.forEach((function(t){var r=[];t.terms().forEach((function(t){r.push(t.id)})),e.push(r)})),[{idBlocks:e}]},Wt=function(t,e){return!0===e.fuzzy&&(e.fuzzy=.85),"number"==typeof e.fuzzy&&(t=t.map((function(t){return e.fuzzy>0&&t.word&&(t.fuzzy=e.fuzzy),t.choices&&t.choices.forEach((function(t){t.forEach((function(t){t.fuzzy=e.fuzzy}))})),t}))),t},Ut=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==e||""===e)return[];if("object"===t(e)){if(_t(e)){if(0===e.length||!e[0])return[];if("object"===t(e[0]))return e;if("string"==typeof e[0])return qt(e)}return e&&"Doc"===e.isA?Lt(e):[]}"number"==typeof e&&(e=String(e));var n=Mt(e);return n=(n=Gt(n)).map((function(t){return Bt(t)})),n=zt(n,r),n=Wt(n,r)},Rt=function(t,e){for(var r=[],n=e[0].idBlocks,i=function(e){n.forEach((function(n){0!==n.length?n.every((function(r,n){return o=e,t[e+n].id===r}))&&(r.push({match:t.slice(e,e+n.length)}),e+=n.length-1):o=e})),o=e},o=0;o2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e&&(e=Ut(e)),!0===xt(t,e))return[];var n=e.filter((function(t){return!0!==t.optional&&!0!==t.negative})).length,i=t.terms(),o=[];if(e[0].idBlocks){var s=Rt(i,e);if(s&&s.length>0)return Et(i,e,s)}if(!0===e[0].start){var a=jt(i,e,0,i.length);return a&&a.match&&a.match.length>0&&(a.match=a.match.filter((function(t){return t})),o.push(a)),Et(i,e,o)}for(var u=0;ui.length);u+=1){var c=jt(i.slice(u),e,u,i.length);if(c&&c.match&&c.match.length>0&&(u+=c.match.length-1,c.match=c.match.filter((function(t){return t})),o.push(c),!0===r))return Et(i,e,o)}return Et(i,e,o)},Qt=function(t,e){var r={};Ht(t,e).forEach((function(t){t.match.forEach((function(t){r[t.id]=!0}))}));var n=t.terms(),i=[],o=[];return n.forEach((function(t){!0!==r[t.id]?o.push(t):o.length>0&&(i.push(o),o=[])})),o.length>0&&i.push(o),i},Zt={match:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Ht(this,t,r);return n=n.map((function(t){var r=t.match,n=t.groups,i=e.buildFrom(r[0].id,r.length,n);return i.cache.terms=r,i}))},has:function(t){return Ht(this,t,!0).length>0},not:function(t){var e=this,r=Qt(this,t);return r=r.map((function(t){return e.buildFrom(t[0].id,t.length)}))},canBe:function(t,e){for(var r=this,n=[],i=this.terms(),o=!1,s=0;s0})).map((function(t){return r.buildFrom(t[0].id,t.length)}))}},Jt=function t(r,n,i){e(this,t),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:i}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Jt.prototype.buildFrom=function(t,e,r){var n=new Jt(t,e,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Jt.prototype,Zt),Object.assign(Jt.prototype,wt);var Yt={term:"terms"};Object.keys(Yt).forEach((function(t){return Jt.prototype[t]=Jt.prototype[Yt[t]]}));var Kt=Jt,Xt=function(){function t(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(t,[{key:"add",value:function(t){return this.words[t.id]=t,this}},{key:"get",value:function(t){return this.words[t]}},{key:"remove",value:function(t){delete this.words[t]}},{key:"merge",value:function(t){return Object.assign(this.words,t.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),t}();Xt.prototype.clone=function(){var t=this,e=Object.keys(this.words).reduce((function(e,r){var n=t.words[r].clone();return e[n.id]=n,e}),{});return new Xt(e)};var te=Xt,ee=function(t){t.forEach((function(e,r){r>0&&(e.prev=t[r-1].id),t[r+1]&&(e.next=t[r+1].id)}))},re=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,ne=/\S/,ie=/[ .][A-Z]\.? *$/i,oe=/(?:\u2026|\.{2,}) *$/,se=/((?:\r?\n|\r)+)/,ae=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,ue=/^\s+/,ce=function(t,e){if(!0===ie.test(t))return!1;if(!0===oe.test(t))return!1;if(!1===ae.test(t))return!1;var r=t.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!e.hasOwnProperty(n)},he=function(t,e){var r=e.cache.abbreviations;t=t||"";var n=[],i=[];if(!(t=String(t))||"string"!=typeof t||!1===ne.test(t))return n;for(var o=function(t){for(var e=[],r=t.split(se),n=0;n0&&(n.push(c),i[u]="")}if(0===n.length)return[t];for(var h=1;h0?(e[e.length-1]+=o,e.push(a)):e.push(o+a),o=""):o+=a}return o&&(0===e.length&&(e[0]=""),e[e.length-1]+=o),e=(e=function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof t&&("number"==typeof t?t=String(t):ye(t)&&(n=t)),n=(n=n||he(t,e)).map((function(t){return be(t)})),r=r||new te;var i=n.map((function(t){t=t.map((function(t){var e=new at(t);return r.add(e),e})),ee(t);var e=new Kt(t[0].id,t.length,r);return e.cache.terms=t,e}));return i},we=function(t,e){var r=new te;return t.map((function(t,n){var i=t.terms.map((function(i,o){var s=new at(i.text);return s.pre=void 0!==i.pre?i.pre:"",void 0===i.post&&(i.post=" ",o>=t.terms.length-1&&(i.post=". ",n>=t.terms.length-1&&(i.post="."))),s.post=void 0!==i.post?i.post:" ",i.tags&&i.tags.forEach((function(t){return s.tag(t,"",e)})),r.add(s),s}));return ee(i),new Kt(i[0].id,i.length,r)}))},xe=["Person","Place","Organization"],Pe={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:xe},Actor:{isA:"Noun",notA:xe},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:xe},Demonym:{isA:["Noun","ProperNoun"],notA:xe},Possessive:{isA:"Noun"}},je={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"]}},Ee={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"}},Oe=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],ke={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"]},Time:{isA:["Date"],notA:["AtMention"]},Determiner:{notA:Oe},Conjunction:{notA:Oe},Preposition:{notA:Oe},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"]}},Ce={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Fe=function(t){return Object.keys(t).forEach((function(e){t[e].color?t[e].color=t[e].color:Ce[e]?t[e].color=Ce[e]:t[e].isA.some((function(r){return!!Ce[r]&&(t[e].color=Ce[r],!0)}))})),t},Te=function(t){return Object.keys(t).forEach((function(e){for(var r=t[e],n=r.isA.length,i=0;i1&&(r.hasCompound[o[0]]=!0),void 0===De[i]?void 0!==e[n]?("string"==typeof e[n]&&(e[n]=[e[n]]),"string"==typeof i?e[n].push(i):e[n]=e[n].concat(i)):e[n]=i:De[i](e,n,r)}))},Me=function(t){var e=Object.assign({},Ie);return Object.keys(Ie).forEach((function(r){var n=Ie[r];Object.keys(n).forEach((function(t){n[t]=r})),_e(n,e,t)})),e},Ge=_e,qe=function(t){for(var e=t.irregulars.nouns,r=Object.keys(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&"number"!=typeof e&&null!==e||(e={group:e});var r=Ut(t,e);if(0===r.length)return this.buildFrom([]);if(!1===Ye(this,r))return this.buildFrom([]);var n=this.list.reduce((function(t,e){return t.concat(e.match(r))}),[]);return void 0!==e.group&&null!==e.group&&""!==e.group?this.buildFrom(n).groups(e.group):this.buildFrom(n)},e.not=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e);if(0===r.length||!1===Ye(this,r))return this;var n=this.list.reduce((function(t,e){return t.concat(e.not(r))}),[]);return this.buildFrom(n)},e.matchOne=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e);if(!1===Ye(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e);if(!1===Ye(this,r))return this.buildFrom([]);var n=this.list.filter((function(t){return!0===t.has(r)}));return this.buildFrom(n)},e.ifNo=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e),n=this.list.filter((function(t){return!1===t.has(r)}));return this.buildFrom(n)},e.has=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e);return!1!==Ye(this,r)&&this.list.some((function(t){return!0===t.has(r)}))},e.lookAhead=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t||(t=".*");var r=Ut(t,e),n=[];return this.list.forEach((function(t){n=n.concat(t.lookAhead(r))})),n=n.filter((function(t){return t})),this.buildFrom(n)},e.lookAfter=e.lookAhead,e.lookBehind=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t||(t=".*");var r=Ut(t,e),n=[];return this.list.forEach((function(t){n=n.concat(t.lookBehind(r))})),n=n.filter((function(t){return t})),this.buildFrom(n)},e.lookBefore=e.lookBehind,e.before=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e),n=this.if(r).list,i=n.map((function(t){var e=t.terms().map((function(t){return t.id})),n=t.match(r)[0],i=e.indexOf(n.start);return 0===i||-1===i?null:t.buildFrom(t.start,i)}));return i=i.filter((function(t){return null!==t})),this.buildFrom(i)},e.after=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e),n=this.if(r).list,i=n.map((function(t){var e=t.terms(),n=e.map((function(t){return t.id})),i=t.match(r)[0],o=n.indexOf(i.start);if(-1===o||!e[o+i.length])return null;var s=e[o+i.length].id,a=t.length-o-i.length;return t.buildFrom(s,a)}));return i=i.filter((function(t){return null!==t})),this.buildFrom(i)},e.hasAfter=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookAfter(t,e).found}))},e.hasBefore=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookBefore(t,e).found}))}})),Xe=function(t,e,r,n){var i=[];"string"==typeof t&&(i=t.split(" ")),e.list.forEach((function(o){var s=o.terms();!0===r&&(s=s.filter((function(r){return r.canBe(t,e.world)}))),s.forEach((function(r,o){i.length>1?i[o]&&"."!==i[o]&&r.tag(i[o],n,e.world):r.tag(t,n,e.world)}))}))},tr={tag:function(t,e){return t?(Xe(t,this,!1,e),this):this},tagSafe:function(t,e){return t?(Xe(t,this,!0,e),this):this},unTag:function(t,e){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(t,e,r.world)}))})),this},canBe:function(t){if(!t)return this;var e=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(t,e))}),[]);return this.buildFrom(r)}},er={map:function(e){var r=this;if(!e)return this;var n=this.list.map((function(t,n){var i=r.buildFrom([t]);i.from=null;var o=e(i,n);return o&&o.list&&o.list[0]?o.list[0]:o}));return 0===(n=n.filter((function(t){return t}))).length?this.buildFrom(n):"object"!==t(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(t,e){var r=this;return t?(this.list.forEach((function(n,i){var o=r.buildFrom([n]);!0===e&&(o.from=null),t(o,i)})),this):this},filter:function(t){var e=this;if(!t)return this;var r=this.list.filter((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)}));return this.buildFrom(r)},find:function(t){var e=this;if(!t)return this;var r=this.list.find((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)}));return r?this.buildFrom([r]):void 0},some:function(t){var e=this;return t?this.list.some((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)})):this},random:function(t){if(!this.found)return this;var e=Math.floor(Math.random()*this.list.length);if(void 0===t){var r=[this.list[e]];return this.buildFrom(r)}return e+t>this.length&&(e=(e=this.length-t)<0?0:e),this.slice(e,e+t)}},rr=function(t){return t.split(/[ -]/g)},nr=function(t,e,r){for(var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return t.forEach((function(t,n){var i=!0;void 0!==e[n]&&(i=e[n]),t=(t=(t||"").toLowerCase()).replace(/[,;.!?]+$/,"");var o=rr(t).map((function(t){return t.trim()}));r[o[0]]=r[o[0]]||{},1===o.length?r[o[0]].value=i:(r[o[0]].more=r[o[0]].more||[],r[o[0]].more.push({rest:o.slice(1),value:i}))})),r}(t,e),i=[],o=function(t){for(var e=r.list[t],o=e.terms().map((function(t){return t.reduced})),s=function(t){void 0!==n[o[t]]&&(void 0!==n[o[t]].more&&n[o[t]].more.forEach((function(r){void 0!==o[t+r.rest.length]&&(!0===r.rest.every((function(e,r){return e===o[t+r+1]}))&&i.push({id:e.terms()[t].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[o[t]].value&&i.push({id:e.terms()[t].id,value:n[o[t]].value,length:1}))},a=0;a1&&void 0!==arguments[1]?arguments[1]:{};return e?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(i){var o,s=e;if("function"==typeof e&&(s=e(i)),s&&"object"===t(s)&&"Doc"===s.isA)o=s.list,r.pool().merge(s.pool());else{if("string"!=typeof s)return;!1!==n.keepCase&&i.terms(0).isTitleCase()&&(s=sr(s)),o=Ae(s,r.world,r.pool());var a=r.buildFrom(o);a.tagger(),o=a.list}if(!0===n.keepTags){var u=i.json({terms:{tags:!0}}).terms;o[0].terms().forEach((function(t,e){u[e]&&t.tagSafe(u[e].tags,"keptTag",r.world)}))}i.replace(o[0],r)})),this):this.delete()},replace:function(t,e,r){return void 0===e?this.replaceWith(t,r):(this.match(t).replaceWith(e,r),this)}},ur=T((function(t,e){var r=function(t){return t&&"[object Object]"===Object.prototype.toString.call(t)},n=function(t,e){var r=Ae(t,e.world)[0],n=e.buildFrom([r]);return n.tagger(),e.list=n.list,e};e.append=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e?this.found?(this.uncache(),this.list.forEach((function(n){var i;r(e)&&"Doc"===e.isA?i=e.list[0].clone():"string"==typeof e&&(i=Ae(e,t.world,t.pool())[0]),t.buildFrom([i]).tagger(),n.append(i,t)})),this):n(e,this):this},e.insertAfter=e.append,e.insertAt=e.append,e.prepend=function(t){var e=this;return t?this.found?(this.uncache(),this.list.forEach((function(n){var i;r(t)&&"Doc"===t.isA?i=t.list[0].clone():"string"==typeof t&&(i=Ae(t,e.world,e.pool())[0]),e.buildFrom([i]).tagger(),n.prepend(i,e)})),this):n(t,this):this},e.insertBefore=e.prepend,e.concat=function(){this.uncache();for(var t=this.list.slice(0),e=0;e0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof e&&this.list[e])return this.list[e].json(r);!0===(e=n(e)).root&&this.list.forEach((function(e){e.terms().forEach((function(e){null===e.root&&e.setRoot(t.world)}))}));var i=this.list.map((function(r){return r.json(e,t.world)}));if((e.terms.offset||e.offset||e.terms.index||e.index)&&lr(this,i,e),e.frequency||e.freq||e.count){var o={};this.list.forEach((function(t){var e=t.text("reduced");o[e]=o[e]||0,o[e]+=1})),this.list.forEach((function(t,e){i[e].count=o[t.text("reduced")]}))}if(e.unique){var s={};i=i.filter((function(t){return!0!==s[t.reduced]&&(s[t.reduced]=!0,!0)}))}return i},e.data=e.json})),pr=T((function(t){var e="",r=function(t,e){for(t=t.toString();t.lengthe.count?-1:t.countn?1:0},length:function(t,e){var r=t.text().trim().length,n=e.text().trim().length;return rn?-1:0},wordCount:function(t,e){var r=t.wordCount(),n=e.wordCount();return rn?-1:0}};mr.alphabetical=mr.alpha,mr.wordcount=mr.wordCount;var gr={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},br={sort:function(t){return"freq"===(t=t||"alpha")||"frequency"===t||"topk"===t?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(e=this).list.forEach((function(t){var e=t.text(n);r[e]=r[e]||0,r[e]+=1})),e.list.sort((function(t,e){var i=r[t.text(n)],o=r[e.text(n)];return io?-1:0})),e):gr.hasOwnProperty(t)?function(t){var e={};return t.json({terms:{offset:!0}}).forEach((function(t){e[t.terms[0].id]=t.terms[0].offset.start})),t.list=t.list.sort((function(t,r){return e[t.start]>e[r.start]?1:e[t.start]0){i+=s;continue}}if(void 0===r[o]||!0!==r.hasOwnProperty(o))if(o===t[i].reduced||!0!==r.hasOwnProperty(t[i].reduced)){if(!0===Ir.test(o)){var a=o.replace(Ir,"");!0===r.hasOwnProperty(a)&&t[i].tag(r[a],"noprefix-lexicon",e)}}else t[i].tag(r[t[i].reduced],"lexicon",e);else t[i].tag(r[o],"lexicon",e)}return t},_r=function(t){var e=t.termList();return Dr(e,t.world),t.world.taggers.forEach((function(e){e(t)})),t},Mr=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"stripPeriods",value:function(){return this.termList().forEach((function(t){!0===t.tags.Abbreviation&&t.next&&(t.post=t.post.replace(/^\./,""));var e=t.text.replace(/\./,"");t.set(e)})),this}},{key:"addPeriods",value:function(){return this.termList().forEach((function(t){t.post=t.post.replace(/^\./,""),t.post="."+t.post})),this}}]),o}(t);return r.prototype.unwrap=r.prototype.stripPeriods,t.prototype.abbreviations=function(t){var e=this.match("#Abbreviation");return"number"==typeof t&&(e=e.get(t)),new r(e.list,this,this.world)},t},Gr=/\./,qr=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"stripPeriods",value:function(){return this.termList().forEach((function(t){var e=t.text.replace(/\./g,"");t.set(e)})),this}},{key:"addPeriods",value:function(){return this.termList().forEach((function(t){var e=t.text.replace(/\./g,"");e=e.split("").join("."),!1===Gr.test(t.post)&&(e+="."),t.set(e)})),this}}]),o}(t);return r.prototype.unwrap=r.prototype.stripPeriods,r.prototype.strip=r.prototype.stripPeriods,t.prototype.acronyms=function(t){var e=this.match("#Acronym");return"number"==typeof t&&(e=e.get(t)),new r(e.list,this,this.world)},t},Lr=function(t){return t.prototype.clauses=function(e){var 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),i=n.quotations(),o=(n=n.splitOn(i)).parentheses(),s=(n=n.splitOn(o)).if("#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb").match("#Conjunction"),a=(n=n.splitBefore(s)).if("if .{2,9} then .").match("then"),u=(n=(n=(n=(n=(n=(n=n.splitBefore(a)).splitBefore("as well as .")).splitBefore("such as .")).splitBefore("in addition to .")).splitAfter("@hasSemicolon")).splitAfter("@hasDash")).filter((function(t){return t.wordCount()>5&&t.match("#Verb+").length>=2}));if(u.found){var c=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(c.eq(0))}return"number"==typeof e&&(n=n.get(e)),new t(n.list,this,this.world)},t},Wr=function(t){var r=function(t){i(o,t);var r=u(o);function o(t,n,i){var s;return e(this,o),(s=r.call(this,t,n,i)).contracted=null,s}return n(o,[{key:"expand",value:function(){return this.list.forEach((function(t){var e=t.terms(),r=e[0].isTitleCase();e.forEach((function(t,r){t.set(t.implicit||t.text),t.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),i=this.not(n).splitAfter("@hasComma"),o=(i=i.concat(n)).quotations();return o.found&&(i=i.splitOn(o.eq(0))),i=i.match("#Noun+ (of|by)? the? #Noun+?"),!0!==e.keep_anaphora&&(i=(i=(i=(i=i.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),i=i.not("(of|for|by|the)$"),"number"==typeof t&&(i=i.get(t)),new r(i.list,this,this.world)},t},sn=/\(/,an=/\)/,un=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"unwrap",value:function(){return this.list.forEach((function(t){var e=t.terms(0);e.pre=e.pre.replace(sn,"");var r=t.lastTerm();r.post=r.post.replace(an,"")})),this}}]),o}(t);return t.prototype.parentheses=function(t){var e=[];return this.list.forEach((function(t){for(var r=t.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return o.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(t,[{key:"tagger",value:function(){return _r(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),t}();kn.prototype.buildFrom=function(t){return t=t.map((function(t){return t.clone(!0)})),new kn(t,this,this.world)},kn.prototype.fromText=function(t){var e=Ae(t,this.world,this.pool());return this.buildFrom(e)},Object.assign(kn.prototype,On.misc),Object.assign(kn.prototype,On.selections),En(kn);var Cn={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(Cn).forEach((function(t){return kn.prototype[t]=kn.prototype[Cn[t]]}));var Fn=kn;return function t(e){var r=e,n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0;e&&r.addWords(e);var n=Ae(t,r),i=new Fn(n,null,r);return i.tagger(),i};return n.tokenize=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,n=r;e&&((n=n.clone()).words={},n.addWords(e));var i=Ae(t,n),o=new Fn(i,null,n);return(e||o.world.taggers.length>0)&&_r(o),o},n.extend=function(t){return t(Fn,r,this,Kt,at,te),this},n.fromJSON=function(t){var e=we(t,r);return new Fn(e,null,r)},n.clone=function(){return t(r.clone())},n.verbose=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(t),this},n.world=function(){return r},n.parseMatch=function(t,e){return Ut(t,e)},n.version="13.10.1",n.import=n.load,n.plugin=n.extend,n}(new Qe)})); +!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).nlp=e()}(this,(function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var r=0;rr?n:r)+1;if(Math.abs(r-n)>(i||100))return i||100;for(var o,s,a,u,c,h,l=[],f=0;f4)return r;u=s===(a=e[o-1])?0:1,c=l[v-1][o]+1,(h=l[v][o-1]+1)1&&o>1&&s===e[o-2]&&t[v-2]===a&&(h=l[v-2][o-2]+u)2&&void 0!==arguments[2]?arguments[2]:3;if(t===e)return 1;if(t.lengthe.fuzzy)return!0;if(!0===e.soft&&(i=B(e.word,t.root))>e.fuzzy)return!0}return e.word===t.clean||e.word===t.text||e.word===t.reduced}return void 0!==e.tag?!0===t.tags[e.tag]:void 0!==e.method?"function"==typeof t[e.method]&&!0===t[e.method]():void 0!==e.regex?e.regex.test(t.clean):void 0!==e.fastOr?!(!t.implicit||!0!==e.fastOr.hasOwnProperty(t.implicit))||(e.fastOr.hasOwnProperty(t.reduced)||e.fastOr.hasOwnProperty(t.text)):void 0!==e.choices&&("and"===e.operator?e.choices.every((function(e){return S(t,e,r,n)})):e.choices.some((function(e){return S(t,e,r,n)})))},z=S=function(t,e,r,n){var i=I(t,e,r,n);return!0===e.negative?!i:i},D={},_={doesMatch:function(t,e,r){return z(this,t,e,r)},isAcronym:function(){return b(this.text)},isImplicit:function(){return""===this.text&&Boolean(this.implicit)},isKnown:function(){return Object.keys(this.tags).some((function(t){return!0!==D[t]}))},setRoot:function(t){var e=t.transforms,r=this.implicit||this.clean;if(this.tags.Plural&&(r=e.toSingular(r,t)),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=e.toInfinitive(r,t,n)}this.root=r}},M=/[\s-]/,G=/^[A-Z-]+$/,q={textOut:function(t,e,r){t=t||{};var n=this.text,i=this.pre,o=this.post;return!0===t.reduced&&(n=this.reduced||""),!0===t.root&&(n=this.root||""),!0===t.implicit&&this.implicit&&(n=this.implicit||""),!0===t.normal&&(n=this.clean||this.text||""),!0===t.root&&(n=this.root||this.reduced||""),!0===t.unicode&&(n=p(n)),!0===t.titlecase&&(this.tags.ProperNoun&&!this.titleCase()||(this.tags.Acronym?n=n.toUpperCase():G.test(n)&&!this.tags.Acronym&&(n=n.toLowerCase()))),!0===t.lowercase&&(n=n.toLowerCase()),!0===t.acronyms&&this.tags.Acronym&&(n=n.replace(/\./g,"")),!0!==t.whitespace&&!0!==t.root||(i="",o=" ",!1!==M.test(this.post)&&!t.last||this.implicit||(o="")),!0!==t.punctuation||t.root||(!0===this.hasPost(".")?o="."+o:!0===this.hasPost("?")?o="?"+o:!0===this.hasPost("!")?o="!"+o:!0===this.hasPost(",")?o=","+o:!0===this.hasEllipses()&&(o="..."+o)),!0!==e&&(i=""),!0!==r&&(o=""),!0===t.abbreviations&&this.tags.Abbreviation&&(o=o.replace(/^\./,"")),i+n+o}},L={Auxiliary:1,Possessive:1},W=function(t,e){var r=Object.keys(t.tags),n=e.tags;return r=r.sort((function(t,e){return L[e]||!n[e]?-1:n[e]?n[t]?n[t].lineage.length>n[e].lineage.length?1:n[t].isA.length>n[e].isA.length?-1:0:0:1}))},U={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},R={json:function(t,e){t=t||{};var r={};return(t=Object.assign({},U,t)).text&&(r.text=this.text),t.normal&&(r.normal=this.clean),t.tags&&(r.tags=Object.keys(this.tags)),t.clean&&(r.clean=this.clean),(t.id||t.offset)&&(r.id=this.id),t.implicit&&null!==this.implicit&&(r.implicit=this.implicit),t.whitespace&&(r.pre=this.pre,r.post=this.post),t.bestTag&&(r.bestTag=W(this,e)[0]),r}},H=Object.assign({},N,V,_,q,R);function Q(){return"undefined"!=typeof window&&window.document}var Z=function(t,e){for(t=t.toString();t.length0&&void 0!==arguments[0]?arguments[0]:"";e(this,t),r=String(r);var n=F(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=h(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(t,[{key:"set",value:function(t){var e=F(t);return this.text=e.text,this.clean=e.clean,this}}]),t}();st.prototype.clone=function(){var t=new st(this.text);return t.pre=this.pre,t.post=this.post,t.clean=this.clean,t.reduced=this.reduced,t.root=this.root,t.implicit=this.implicit,t.tags=Object.assign({},this.tags),t},Object.assign(st.prototype,H),Object.assign(st.prototype,ot);var at=st,ut={terms:function(t){if(0===this.length)return[];if(this.cache.terms)return void 0!==t?this.cache.terms[t]:this.cache.terms;for(var e=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof t&&(t="normal"===t?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===t?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,normal:!0}:"reduced"===t?{punctuation:!1,titlecase:!1,lowercase:!0,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"implicit"===t?{punctuation:!0,implicit:!0,whitespace:!0,trim:!0}:"root"===t?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),i=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(i=!0);var o=n.reduce((function(o,s,a){if(0===a&&""===s.text&&null!==s.implicit&&!t.implicit)return o;t.last=r&&a===n.length-1;var u=!0,c=!0;return!1===i&&(0===a&&e&&(u=!1),a===n.length-1&&r&&(c=!1)),o+s.textOut(t,u,c)}),"");return!0===i&&r&&(o=ct(o)),!0===t.trim&&(o=o.trim()),o}},lt={trim:function(){var t=this.terms();if(t.length>0){t[0].pre=t[0].pre.replace(/^\s+/,"");var e=t[t.length-1];e.post=e.post.replace(/\s+$/,"")}return this}},ft=/[.?!]\s*$/,pt=function(t,e){e[0].pre=t[0].pre;var r,n,i=t[t.length-1],o=e[e.length-1];o.post=(r=i.post,n=o.post,ft.test(n)?n+r.match(/\s*$/):r),i.post="",""===i.post&&(i.post+=" ")},vt=function(t,e,r){var n=t.terms(),i=e.terms();pt(n,i),function(t,e,r){var n=t[t.length-1],i=e[e.length-1],o=n.next;n.next=e[0].id,i.next=o,o&&(r.get(o).prev=i.id);var s=t[0].id;s&&(e[0].prev=s)}(n,i,t.pool);var o,s=[t],a=t.start,u=[r];return(u=u.concat(r.parents())).forEach((function(t){var e=t.list.filter((function(t){return t.hasId(a)}));s=s.concat(e)})),(s=(o=s).filter((function(t,e){return o.indexOf(t)===e}))).forEach((function(t){t.length+=e.length})),t.cache={},t},dt=/ /,mt=function(t,e,r){var n=t.start,i=e.terms();!function(t){var e=t[t.length-1];!1===dt.test(e.post)&&(e.post+=" ")}(i),function(t,e,r){var n=r[r.length-1];n.next=t.start;var i=t.pool,o=i.get(t.start);o.prev&&(i.get(o.prev).next=e.start),r[0].prev=t.terms(0).prev,t.terms(0).prev=n.id}(t,e,i);var o,s=[t],a=[r];return(a=a.concat(r.parents())).forEach((function(t){var r=t.list.filter((function(t){return t.hasId(n)||t.hasId(e.start)}));s=s.concat(r)})),(s=(o=s).filter((function(t,e){return o.indexOf(t)===e}))).forEach((function(t){t.length+=e.length,t.start===n&&(t.start=e.start),t.cache={}})),t},gt=function(t,e){var r=e.pool(),n=t.terms(),i=r.get(n[0].prev)||{},o=r.get(n[n.length-1].next)||{};n[0].implicit&&i.implicit&&(i.set(i.implicit),i.post+=" "),function(t,e,r,n){var i=t.parents();i.push(t),i.forEach((function(t){var i=t.list.find((function(t){return t.hasId(e)}));i&&(i.length-=r,i.start===e&&(i.start=n.id),i.cache={})})),t.list=t.list.filter((function(t){return!(!t.start||!t.length)}))}(e,t.start,t.length,o),i&&(i.next=o.id),o&&(o.prev=i.id)},bt={append:function(t,e){return vt(this,t,e),this},prepend:function(t,e){return mt(this,t,e),this},delete:function(t){return gt(this,t),this},replace:function(t,e){var r=this.length;vt(this,t,e);var n=this.buildFrom(this.start,this.length);n.length=r,gt(n,e)},splitOn:function(t){var e=this.terms(),r={before:null,match:null,after:null},n=e.findIndex((function(e){return e.id===t.start}));if(-1===n)return r;var i=e.slice(0,n);i.length>0&&(r.before=this.buildFrom(i[0].id,i.length));var o=e.slice(n,n+t.length);o.length>0&&(r.match=this.buildFrom(o[0].id,o.length));var s=e.slice(n+t.length,e.length);return s.length>0&&(r.after=this.buildFrom(s[0].id,s.length,this.pool)),r}},yt={json:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r={};return t.text&&(r.text=this.text()),t.normal&&(r.normal=this.text("normal")),t.clean&&(r.clean=this.text("clean")),t.reduced&&(r.reduced=this.text("reduced")),t.implicit&&(r.implicit=this.text("implicit")),t.root&&(r.root=this.text("root")),t.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),t.terms&&(!0===t.terms&&(t.terms={}),r.terms=this.terms().map((function(r){return r.json(t.terms,e)}))),r}},At={lookAhead:function(t){t||(t=".*");var e=this.pool,r=[],n=this.terms();return function t(n){var i=e.get(n);i&&(r.push(i),i.prev&&t(i.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(t)},lookBehind:function(t){t||(t=".*");var e=this.pool,r=[];return function t(n){var i=e.get(n);i&&(r.push(i),i.prev&&t(i.prev))}(e.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(t)}},wt=Object.assign({},ut,ht,lt,bt,yt,At),xt=function(t,e){if(0===e.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},Pt=T((function(t,e){e.getGreedy=function(t,e){for(var r=Object.assign({},t.regs[t.r],{start:!1,end:!1}),n=t.t;t.t1&&void 0!==arguments[1]?arguments[1]:0,n=t.regs[t.r],i=!1,o=0;oe&&(e=r.length),n}))&&e},e.getGroup=function(t,e,r){if(t.groups[t.groupId])return t.groups[t.groupId];var n=t.terms[e].id;return t.groups[t.groupId]={group:String(r),start:n,length:0},t.groups[t.groupId]}})),jt=function(t,e,r,n){for(var i={t:0,terms:t,r:0,regs:e,groups:{},start_i:r,phrase_length:n,hasGroup:!1,groupId:null,previousGroup:null};i.ri.t)return null;if(!0===o.end&&i.start_i+i.t!==n)return null}if(!0===i.hasGroup){var d=Pt.getGroup(i,f,o.named);i.t>1&&o.greedy?d.length+=i.t-f:d.length++}}else{if(o.negative){var m=Object.assign({},o);if(m.negative=!1,!0===i.terms[i.t].doesMatch(m,i.start_i+i.t,i.phrase_length))return null}if(!0!==o.optional){if(i.terms[i.t].isImplicit()&&e[i.r-1]&&i.terms[i.t+1]){if(i.terms[i.t-1]&&i.terms[i.t-1].implicit===e[i.r-1].word)return null;if(i.terms[i.t+1].doesMatch(o,i.start_i+i.t,i.phrase_length)){i.t+=2;continue}}return null}}}else{var g=Pt.greedyTo(i,e[i.r+1]);if(void 0!==o.min&&g-i.to.max){i.t=i.t+o.max;continue}if(null===g)return null;!0===i.hasGroup&&(Pt.getGroup(i,i.t,o.named).length=g-i.t),i.t=g}}return{match:i.terms.slice(0,i.t),groups:i.groups}},Et=function(t,e,r){if(!r||0===r.length)return r;if(e.some((function(t){return t.end}))){var n=t[t.length-1];r=r.filter((function(t){return-1!==t.match.indexOf(n)}))}return r},Ot=/\{([0-9]+,?[0-9]*)\}/,kt=/&&/,Ct=new RegExp(/^<(\S+)>/),Ft=function(t){return t[t.length-1]},Tt=function(t){return t[0]},Nt=function(t){return t.substr(1)},Vt=function(t){return t.substr(0,t.length-1)},$t=function(t){return t=Nt(t),t=Vt(t)},Bt=function t(e){for(var r,n={},i=0;i<2;i+=1){if("$"===Ft(e)&&(n.end=!0,e=Vt(e)),"^"===Tt(e)&&(n.start=!0,e=Nt(e)),("["===Tt(e)||"]"===Ft(e))&&(n.named=!0,"["===Tt(e)?n.groupType="]"===Ft(e)?"single":"start":n.groupType="end",e=(e=e.replace(/^\[/,"")).replace(/\]$/,""),"<"===Tt(e))){var o=Ct.exec(e);o.length>=2&&(n.named=o[1],e=e.replace(o[0],""))}if("+"===Ft(e)&&(n.greedy=!0,e=Vt(e)),"*"!==e&&"*"===Ft(e)&&"\\*"!==e&&(n.greedy=!0,e=Vt(e)),"?"===Ft(e)&&(n.optional=!0,e=Vt(e)),"!"===Tt(e)&&(n.negative=!0,e=Nt(e)),"("===Tt(e)&&")"===Ft(e)){kt.test(e)?(n.choices=e.split(kt),n.operator="and"):(n.choices=e.split("|"),n.operator="or"),n.choices[0]=Nt(n.choices[0]);var s=n.choices.length-1;n.choices[s]=Vt(n.choices[s]),n.choices=n.choices.map((function(t){return t.trim()})),n.choices=n.choices.filter((function(t){return t})),n.choices=n.choices.map((function(e){return e.split(/ /g).map(t)})),e=""}if("/"===Tt(e)&&"/"===Ft(e))return e=$t(e),n.regex=new RegExp(e),n;if("~"===Tt(e)&&"~"===Ft(e))return e=$t(e),n.soft=!0,n.word=e,n}return!0===Ot.test(e)&&(e=e.replace(Ot,(function(t,e){var r=e.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,""}))),"#"===Tt(e)?(n.tag=Nt(e),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===Tt(e)?(n.method=Nt(e),n):"."===e?(n.anything=!0,n):"*"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace("\\*","*")).replace("\\.","."),n.word=e.toLowerCase()),n)},St=function(t){for(var e,r=!1,n=-1,i=0;i1&&void 0!==arguments[1]?arguments[1]:{},r=t.filter((function(t){return t.groupType})).length;return r>0&&(t=St(t)),e.fuzzy||(t=It(t)),t},Dt=/[^[a-z]]\//g,_t=function(t){return"[object Array]"===Object.prototype.toString.call(t)},Mt=function(t){var e=t.split(/([\^\[\!]*(?:<\S+>)?\(.*?\)[?+*]*\]?\$?)/);return e=e.map((function(t){return t.trim()})),Dt.test(t)&&(e=function(t){return t.forEach((function(e,r){var n=e.match(Dt);null!==n&&1===n.length&&t[r+1]&&(t[r]+=t[r+1],t[r+1]="",null!==(n=t[r].match(Dt))&&1===n.length&&(t[r]+=t[r+2],t[r+2]=""))})),t=t.filter((function(t){return t}))}(e)),e},Gt=function(t){var e=[];return t.forEach((function(t){if(/\(.*\)/.test(t))e.push(t);else{var r=t.split(" ");r=r.filter((function(t){return t})),e=e.concat(r)}})),e},qt=function(t){return[{choices:t.map((function(t){return[{word:t}]})),operator:"or"}]},Lt=function(t){if(!t||!t.list||!t.list[0])return[];var e=[];return t.list.forEach((function(t){var r=[];t.terms().forEach((function(t){r.push(t.id)})),e.push(r)})),[{idBlocks:e}]},Wt=function(t,e){return!0===e.fuzzy&&(e.fuzzy=.85),"number"==typeof e.fuzzy&&(t=t.map((function(t){return e.fuzzy>0&&t.word&&(t.fuzzy=e.fuzzy),t.choices&&t.choices.forEach((function(t){t.forEach((function(t){t.fuzzy=e.fuzzy}))})),t}))),t},Ut=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==e||""===e)return[];if("object"===t(e)){if(_t(e)){if(0===e.length||!e[0])return[];if("object"===t(e[0]))return e;if("string"==typeof e[0])return qt(e)}return e&&"Doc"===e.isA?Lt(e):[]}"number"==typeof e&&(e=String(e));var n=Mt(e);return n=(n=Gt(n)).map((function(t){return Bt(t)})),n=zt(n,r),n=Wt(n,r)},Rt=function(t,e){for(var r=[],n=e[0].idBlocks,i=function(e){n.forEach((function(n){0!==n.length?n.every((function(r,n){return o=e,t[e+n].id===r}))&&(r.push({match:t.slice(e,e+n.length)}),e+=n.length-1):o=e})),o=e},o=0;o2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e&&(e=Ut(e)),!0===xt(t,e))return[];var n=e.filter((function(t){return!0!==t.optional&&!0!==t.negative})).length,i=t.terms(),o=[];if(e[0].idBlocks){var s=Rt(i,e);if(s&&s.length>0)return Et(i,e,s)}if(!0===e[0].start){var a=jt(i,e,0,i.length);return a&&a.match&&a.match.length>0&&(a.match=a.match.filter((function(t){return t})),o.push(a)),Et(i,e,o)}for(var u=0;ui.length);u+=1){var c=jt(i.slice(u),e,u,i.length);if(c&&c.match&&c.match.length>0&&(u+=c.match.length-1,c.match=c.match.filter((function(t){return t})),o.push(c),!0===r))return Et(i,e,o)}return Et(i,e,o)},Qt=function(t,e){var r={};Ht(t,e).forEach((function(t){t.match.forEach((function(t){r[t.id]=!0}))}));var n=t.terms(),i=[],o=[];return n.forEach((function(t){!0!==r[t.id]?o.push(t):o.length>0&&(i.push(o),o=[])})),o.length>0&&i.push(o),i},Zt={match:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Ht(this,t,r);return n=n.map((function(t){var r=t.match,n=t.groups,i=e.buildFrom(r[0].id,r.length,n);return i.cache.terms=r,i}))},has:function(t){return Ht(this,t,!0).length>0},not:function(t){var e=this,r=Qt(this,t);return r=r.map((function(t){return e.buildFrom(t[0].id,t.length)}))},canBe:function(t,e){for(var r=this,n=[],i=this.terms(),o=!1,s=0;s0})).map((function(t){return r.buildFrom(t[0].id,t.length)}))}},Jt=function t(r,n,i){e(this,t),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:i}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Jt.prototype.buildFrom=function(t,e,r){var n=new Jt(t,e,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Jt.prototype,Zt),Object.assign(Jt.prototype,wt);var Yt={term:"terms"};Object.keys(Yt).forEach((function(t){return Jt.prototype[t]=Jt.prototype[Yt[t]]}));var Kt=Jt,Xt=function(){function t(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(t,[{key:"add",value:function(t){return this.words[t.id]=t,this}},{key:"get",value:function(t){return this.words[t]}},{key:"remove",value:function(t){delete this.words[t]}},{key:"merge",value:function(t){return Object.assign(this.words,t.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),t}();Xt.prototype.clone=function(){var t=this,e=Object.keys(this.words).reduce((function(e,r){var n=t.words[r].clone();return e[n.id]=n,e}),{});return new Xt(e)};var te=Xt,ee=function(t){t.forEach((function(e,r){r>0&&(e.prev=t[r-1].id),t[r+1]&&(e.next=t[r+1].id)}))},re=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,ne=/\S/,ie=/[ .][A-Z]\.? *$/i,oe=/(?:\u2026|\.{2,}) *$/,se=/((?:\r?\n|\r)+)/,ae=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,ue=/^\s+/,ce=function(t,e){if(!0===ie.test(t))return!1;if(!0===oe.test(t))return!1;if(!1===ae.test(t))return!1;var r=t.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!e.hasOwnProperty(n)},he=function(t,e){var r=e.cache.abbreviations;t=t||"";var n=[],i=[];if(!(t=String(t))||"string"!=typeof t||!1===ne.test(t))return n;for(var o=function(t){for(var e=[],r=t.split(se),n=0;n0&&(n.push(c),i[u]="")}if(0===n.length)return[t];for(var h=1;h0?(e[e.length-1]+=o,e.push(a)):e.push(o+a),o=""):o+=a}return o&&(0===e.length&&(e[0]=""),e[e.length-1]+=o),e=(e=function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof t&&("number"==typeof t?t=String(t):ye(t)&&(n=t)),n=(n=n||he(t,e)).map((function(t){return be(t)})),r=r||new te;var i=n.map((function(t){t=t.map((function(t){var e=new at(t);return r.add(e),e})),ee(t);var e=new Kt(t[0].id,t.length,r);return e.cache.terms=t,e}));return i},we=function(t,e){var r=new te;return t.map((function(t,n){var i=t.terms.map((function(i,o){var s=new at(i.text);return s.pre=void 0!==i.pre?i.pre:"",void 0===i.post&&(i.post=" ",o>=t.terms.length-1&&(i.post=". ",n>=t.terms.length-1&&(i.post="."))),s.post=void 0!==i.post?i.post:" ",i.tags&&i.tags.forEach((function(t){return s.tag(t,"",e)})),r.add(s),s}));return ee(i),new Kt(i[0].id,i.length,r)}))},xe=["Person","Place","Organization"],Pe={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:xe},Actor:{isA:"Noun",notA:xe},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:xe},Demonym:{isA:["Noun","ProperNoun"],notA:xe},Possessive:{isA:"Noun"}},je={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"]}},Ee={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"}},Oe=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],ke={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:Oe},Conjunction:{notA:Oe},Preposition:{notA:Oe},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"]}},Ce={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Fe=function(t){return Object.keys(t).forEach((function(e){t[e].color?t[e].color=t[e].color:Ce[e]?t[e].color=Ce[e]:t[e].isA.some((function(r){return!!Ce[r]&&(t[e].color=Ce[r],!0)}))})),t},Te=function(t){return Object.keys(t).forEach((function(e){for(var r=t[e],n=r.isA.length,i=0;i1&&(r.hasCompound[o[0]]=!0),void 0===De[i]?void 0!==e[n]?("string"==typeof e[n]&&(e[n]=[e[n]]),"string"==typeof i?e[n].push(i):e[n]=e[n].concat(i)):e[n]=i:De[i](e,n,r)}))},Me=function(t){var e=Object.assign({},Ie);return Object.keys(Ie).forEach((function(r){var n=Ie[r];Object.keys(n).forEach((function(t){n[t]=r})),_e(n,e,t)})),e},Ge=_e,qe=function(t){for(var e=t.irregulars.nouns,r=Object.keys(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&"number"!=typeof e&&null!==e||(e={group:e});var r=Ut(t,e);if(0===r.length)return this.buildFrom([]);if(!1===Ye(this,r))return this.buildFrom([]);var n=this.list.reduce((function(t,e){return t.concat(e.match(r))}),[]);return void 0!==e.group&&null!==e.group&&""!==e.group?this.buildFrom(n).groups(e.group):this.buildFrom(n)},e.not=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e);if(0===r.length||!1===Ye(this,r))return this;var n=this.list.reduce((function(t,e){return t.concat(e.not(r))}),[]);return this.buildFrom(n)},e.matchOne=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e);if(!1===Ye(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e);if(!1===Ye(this,r))return this.buildFrom([]);var n=this.list.filter((function(t){return!0===t.has(r)}));return this.buildFrom(n)},e.ifNo=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e),n=this.list.filter((function(t){return!1===t.has(r)}));return this.buildFrom(n)},e.has=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e);return!1!==Ye(this,r)&&this.list.some((function(t){return!0===t.has(r)}))},e.lookAhead=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t||(t=".*");var r=Ut(t,e),n=[];return this.list.forEach((function(t){n=n.concat(t.lookAhead(r))})),n=n.filter((function(t){return t})),this.buildFrom(n)},e.lookAfter=e.lookAhead,e.lookBehind=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t||(t=".*");var r=Ut(t,e),n=[];return this.list.forEach((function(t){n=n.concat(t.lookBehind(r))})),n=n.filter((function(t){return t})),this.buildFrom(n)},e.lookBefore=e.lookBehind,e.before=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e),n=this.if(r).list,i=n.map((function(t){var e=t.terms().map((function(t){return t.id})),n=t.match(r)[0],i=e.indexOf(n.start);return 0===i||-1===i?null:t.buildFrom(t.start,i)}));return i=i.filter((function(t){return null!==t})),this.buildFrom(i)},e.after=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Ut(t,e),n=this.if(r).list,i=n.map((function(t){var e=t.terms(),n=e.map((function(t){return t.id})),i=t.match(r)[0],o=n.indexOf(i.start);if(-1===o||!e[o+i.length])return null;var s=e[o+i.length].id,a=t.length-o-i.length;return t.buildFrom(s,a)}));return i=i.filter((function(t){return null!==t})),this.buildFrom(i)},e.hasAfter=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookAfter(t,e).found}))},e.hasBefore=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookBefore(t,e).found}))}})),Xe=function(t,e,r,n){var i=[];"string"==typeof t&&(i=t.split(" ")),e.list.forEach((function(o){var s=o.terms();!0===r&&(s=s.filter((function(r){return r.canBe(t,e.world)}))),s.forEach((function(r,o){i.length>1?i[o]&&"."!==i[o]&&r.tag(i[o],n,e.world):r.tag(t,n,e.world)}))}))},tr={tag:function(t,e){return t?(Xe(t,this,!1,e),this):this},tagSafe:function(t,e){return t?(Xe(t,this,!0,e),this):this},unTag:function(t,e){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(t,e,r.world)}))})),this},canBe:function(t){if(!t)return this;var e=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(t,e))}),[]);return this.buildFrom(r)}},er={map:function(e){var r=this;if(!e)return this;var n=this.list.map((function(t,n){var i=r.buildFrom([t]);i.from=null;var o=e(i,n);return o&&o.list&&o.list[0]?o.list[0]:o}));return 0===(n=n.filter((function(t){return t}))).length?this.buildFrom(n):"object"!==t(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(t,e){var r=this;return t?(this.list.forEach((function(n,i){var o=r.buildFrom([n]);!0===e&&(o.from=null),t(o,i)})),this):this},filter:function(t){var e=this;if(!t)return this;var r=this.list.filter((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)}));return this.buildFrom(r)},find:function(t){var e=this;if(!t)return this;var r=this.list.find((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)}));return r?this.buildFrom([r]):void 0},some:function(t){var e=this;return t?this.list.some((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)})):this},random:function(t){if(!this.found)return this;var e=Math.floor(Math.random()*this.list.length);if(void 0===t){var r=[this.list[e]];return this.buildFrom(r)}return e+t>this.length&&(e=(e=this.length-t)<0?0:e),this.slice(e,e+t)}},rr=function(t){return t.split(/[ -]/g)},nr=function(t,e,r){for(var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return t.forEach((function(t,n){var i=!0;void 0!==e[n]&&(i=e[n]),t=(t=(t||"").toLowerCase()).replace(/[,;.!?]+$/,"");var o=rr(t).map((function(t){return t.trim()}));r[o[0]]=r[o[0]]||{},1===o.length?r[o[0]].value=i:(r[o[0]].more=r[o[0]].more||[],r[o[0]].more.push({rest:o.slice(1),value:i}))})),r}(t,e),i=[],o=function(t){for(var e=r.list[t],o=e.terms().map((function(t){return t.reduced})),s=function(t){void 0!==n[o[t]]&&(void 0!==n[o[t]].more&&n[o[t]].more.forEach((function(r){void 0!==o[t+r.rest.length]&&(!0===r.rest.every((function(e,r){return e===o[t+r+1]}))&&i.push({id:e.terms()[t].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[o[t]].value&&i.push({id:e.terms()[t].id,value:n[o[t]].value,length:1}))},a=0;a1&&void 0!==arguments[1]?arguments[1]:{};return e?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(i){var o,s=e;if("function"==typeof e&&(s=e(i)),s&&"object"===t(s)&&"Doc"===s.isA)o=s.list,r.pool().merge(s.pool());else{if("string"!=typeof s)return;!1!==n.keepCase&&i.terms(0).isTitleCase()&&(s=sr(s)),o=Ae(s,r.world,r.pool());var a=r.buildFrom(o);a.tagger(),o=a.list}if(!0===n.keepTags){var u=i.json({terms:{tags:!0}}).terms;o[0].terms().forEach((function(t,e){u[e]&&t.tagSafe(u[e].tags,"keptTag",r.world)}))}i.replace(o[0],r)})),this):this.delete()},replace:function(t,e,r){return void 0===e?this.replaceWith(t,r):(this.match(t).replaceWith(e,r),this)}},ur=T((function(t,e){var r=function(t){return t&&"[object Object]"===Object.prototype.toString.call(t)},n=function(t,e){var r=Ae(t,e.world)[0],n=e.buildFrom([r]);return n.tagger(),e.list=n.list,e};e.append=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e?this.found?(this.uncache(),this.list.forEach((function(n){var i;r(e)&&"Doc"===e.isA?i=e.list[0].clone():"string"==typeof e&&(i=Ae(e,t.world,t.pool())[0]),t.buildFrom([i]).tagger(),n.append(i,t)})),this):n(e,this):this},e.insertAfter=e.append,e.insertAt=e.append,e.prepend=function(t){var e=this;return t?this.found?(this.uncache(),this.list.forEach((function(n){var i;r(t)&&"Doc"===t.isA?i=t.list[0].clone():"string"==typeof t&&(i=Ae(t,e.world,e.pool())[0]),e.buildFrom([i]).tagger(),n.prepend(i,e)})),this):n(t,this):this},e.insertBefore=e.prepend,e.concat=function(){this.uncache();for(var t=this.list.slice(0),e=0;e0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof e&&this.list[e])return this.list[e].json(r);!0===(e=n(e)).root&&this.list.forEach((function(e){e.terms().forEach((function(e){null===e.root&&e.setRoot(t.world)}))}));var i=this.list.map((function(r){return r.json(e,t.world)}));if((e.terms.offset||e.offset||e.terms.index||e.index)&&lr(this,i,e),e.frequency||e.freq||e.count){var o={};this.list.forEach((function(t){var e=t.text("reduced");o[e]=o[e]||0,o[e]+=1})),this.list.forEach((function(t,e){i[e].count=o[t.text("reduced")]}))}if(e.unique){var s={};i=i.filter((function(t){return!0!==s[t.reduced]&&(s[t.reduced]=!0,!0)}))}return i},e.data=e.json})),pr=T((function(t){var e="",r=function(t,e){for(t=t.toString();t.lengthe.count?-1:t.countn?1:0},length:function(t,e){var r=t.text().trim().length,n=e.text().trim().length;return rn?-1:0},wordCount:function(t,e){var r=t.wordCount(),n=e.wordCount();return rn?-1:0}};mr.alphabetical=mr.alpha,mr.wordcount=mr.wordCount;var gr={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},br={sort:function(t){return"freq"===(t=t||"alpha")||"frequency"===t||"topk"===t?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(e=this).list.forEach((function(t){var e=t.text(n);r[e]=r[e]||0,r[e]+=1})),e.list.sort((function(t,e){var i=r[t.text(n)],o=r[e.text(n)];return io?-1:0})),e):gr.hasOwnProperty(t)?function(t){var e={};return t.json({terms:{offset:!0}}).forEach((function(t){e[t.terms[0].id]=t.terms[0].offset.start})),t.list=t.list.sort((function(t,r){return e[t.start]>e[r.start]?1:e[t.start]0){i+=s;continue}}if(void 0===r[o]||!0!==r.hasOwnProperty(o))if(o===t[i].reduced||!0!==r.hasOwnProperty(t[i].reduced)){if(!0===Ir.test(o)){var a=o.replace(Ir,"");!0===r.hasOwnProperty(a)&&t[i].tag(r[a],"noprefix-lexicon",e)}}else t[i].tag(r[t[i].reduced],"lexicon",e);else t[i].tag(r[o],"lexicon",e)}return t},_r=function(t){var e=t.termList();return Dr(e,t.world),t.world.taggers.forEach((function(e){e(t)})),t},Mr=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"stripPeriods",value:function(){return this.termList().forEach((function(t){!0===t.tags.Abbreviation&&t.next&&(t.post=t.post.replace(/^\./,""));var e=t.text.replace(/\./,"");t.set(e)})),this}},{key:"addPeriods",value:function(){return this.termList().forEach((function(t){t.post=t.post.replace(/^\./,""),t.post="."+t.post})),this}}]),o}(t);return r.prototype.unwrap=r.prototype.stripPeriods,t.prototype.abbreviations=function(t){var e=this.match("#Abbreviation");return"number"==typeof t&&(e=e.get(t)),new r(e.list,this,this.world)},t},Gr=/\./,qr=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"stripPeriods",value:function(){return this.termList().forEach((function(t){var e=t.text.replace(/\./g,"");t.set(e)})),this}},{key:"addPeriods",value:function(){return this.termList().forEach((function(t){var e=t.text.replace(/\./g,"");e=e.split("").join("."),!1===Gr.test(t.post)&&(e+="."),t.set(e)})),this}}]),o}(t);return r.prototype.unwrap=r.prototype.stripPeriods,r.prototype.strip=r.prototype.stripPeriods,t.prototype.acronyms=function(t){var e=this.match("#Acronym");return"number"==typeof t&&(e=e.get(t)),new r(e.list,this,this.world)},t},Lr=function(t){return t.prototype.clauses=function(e){var 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),i=n.quotations(),o=(n=n.splitOn(i)).parentheses(),s=(n=n.splitOn(o)).if("#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb").match("#Conjunction"),a=(n=n.splitBefore(s)).if("if .{2,9} then .").match("then"),u=(n=(n=(n=(n=(n=(n=n.splitBefore(a)).splitBefore("as well as .")).splitBefore("such as .")).splitBefore("in addition to .")).splitAfter("@hasSemicolon")).splitAfter("@hasDash")).filter((function(t){return t.wordCount()>5&&t.match("#Verb+").length>=2}));if(u.found){var c=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(c.eq(0))}return"number"==typeof e&&(n=n.get(e)),new t(n.list,this,this.world)},t},Wr=function(t){var r=function(t){i(o,t);var r=u(o);function o(t,n,i){var s;return e(this,o),(s=r.call(this,t,n,i)).contracted=null,s}return n(o,[{key:"expand",value:function(){return this.list.forEach((function(t){var e=t.terms(),r=e[0].isTitleCase();e.forEach((function(t,r){t.set(t.implicit||t.text),t.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),i=this.not(n).splitAfter("@hasComma"),o=(i=i.concat(n)).quotations();return o.found&&(i=i.splitOn(o.eq(0))),i=i.match("#Noun+ (of|by)? the? #Noun+?"),!0!==e.keep_anaphora&&(i=(i=(i=(i=i.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),i=i.not("(of|for|by|the)$"),"number"==typeof t&&(i=i.get(t)),new r(i.list,this,this.world)},t},sn=/\(/,an=/\)/,un=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"unwrap",value:function(){return this.list.forEach((function(t){var e=t.terms(0);e.pre=e.pre.replace(sn,"");var r=t.lastTerm();r.post=r.post.replace(an,"")})),this}}]),o}(t);return t.prototype.parentheses=function(t){var e=[];return this.list.forEach((function(t){for(var r=t.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return o.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(t,[{key:"tagger",value:function(){return _r(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),t}();kn.prototype.buildFrom=function(t){return t=t.map((function(t){return t.clone(!0)})),new kn(t,this,this.world)},kn.prototype.fromText=function(t){var e=Ae(t,this.world,this.pool());return this.buildFrom(e)},Object.assign(kn.prototype,On.misc),Object.assign(kn.prototype,On.selections),En(kn);var Cn={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(Cn).forEach((function(t){return kn.prototype[t]=kn.prototype[Cn[t]]}));var Fn=kn;return function t(e){var r=e,n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0;e&&r.addWords(e);var n=Ae(t,r),i=new Fn(n,null,r);return i.tagger(),i};return n.tokenize=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,n=r;e&&((n=n.clone()).words={},n.addWords(e));var i=Ae(t,n),o=new Fn(i,null,n);return(e||o.world.taggers.length>0)&&_r(o),o},n.extend=function(t){return t(Fn,r,this,Kt,at,te),this},n.fromJSON=function(t){var e=we(t,r);return new Fn(e,null,r)},n.clone=function(){return t(r.clone())},n.verbose=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(t),this},n.world=function(){return r},n.parseMatch=function(t,e){return Ut(t,e)},n.version="13.10.2",n.import=n.load,n.plugin=n.extend,n}(new Qe)})); diff --git a/builds/compromise.js b/builds/compromise.js index 25085c4dc..d2dea0cfb 100644 --- a/builds/compromise.js +++ b/builds/compromise.js @@ -1,4 +1,4 @@ -/* compromise 13.10.1 MIT */ +/* compromise 13.10.2 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -711,6 +711,10 @@ if (reg.fastOr !== undefined) { + if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { + return true; + } + return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text); } //support slower (one|two) @@ -3860,7 +3864,7 @@ var fromJSON_1 = fromJSON; - var _version = '13.10.1'; + var _version = '13.10.2'; var entity = ['Person', 'Place', 'Organization']; var nouns$1 = { @@ -4119,6 +4123,11 @@ WeekDay: { isA: ['Date', 'Noun'] }, + // 'PST' + Timezone: { + isA: ['Date', 'Noun'], + notA: ['Adjective', 'ProperNoun'] + }, // '9:20pm' Time: { isA: ['Date'], @@ -4394,16 +4403,16 @@ "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¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1ern1Mi0;en2Hlni2Z;lenc2Uncouv0Gr2Gughn;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", - "Country": "true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;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:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma", - "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,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:CW;7:C8;8:B6;9:DL;A:DK;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,nde8sD;!l7t1;de,lErr9yD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro6s1;nAr5C;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,l7;lom1nBFuD;leyma6ta;dDlBm1yabonga;!dhart7Bn7;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y6;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;e5Og3n7olfo,ri7A;co,ky;bCeB7;cDl7;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ub9x,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,rHsEtDumAw9;is,to;aEcAkAm0vD;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;!e8;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk7;aEeD;al,l;el,l;hElv2rD;le,ri8v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe8;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha8tDv2;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;g0nn7SrenFuDv8Jwe8;!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;a8ri59;r,th;cp3j5m66na73rEspAthem,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;a6BemEmai6oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKd9kImHrFsEvi3yD;!d9s1;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;aPeJoIuDydA;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4Jd9;an,s0;lGo50rFuDv7;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;ffr7rge;brEl9rDv2;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;ar04dZfrYit0lSmKnHo2rFsteb0th0uge6vDym9zra;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;!dCgAmGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay6ight;a6dl7nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e8ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay6ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne8rDyl;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,sA;il;lGmer1rD;ey,lEro8y;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;!foDl7y;rd;bErDyd;is;!by;i6ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n7rDt;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;i6nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePd9eJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;d9mA;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:9X;3:9H;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:77;B:6E;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaA;aAhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsA;liA1s2;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukB;lk5roby5;dBllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisA;dor95lst31m3rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps2s0Y;hirBkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot3lliv4zuA;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,lFnDr3saAto,v3;ch7d0AtDz;a4Pe,os;as,ihBm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins2;!on;bei0LcEes,vDzzo;as,e8;ci,hards2;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,ss2;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;eEkolDlsCx2;ic,ov6X;ls1miD;!n1;ils2mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov3;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dBti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkBqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k3nDo;d,gu;mbarDpe2Rvr3;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;czDsA;yk;cFlD;!cDen3Q;huk;!ev3ic,s;e6uiveD;rt;eff0l3mu8nnun1;hn,lloe,minsArEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r3;e2JhFnErge2Ju2NvD;anB;es,ss2;anEnsD;en,on,t2;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks2obs1;brahimBglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz3fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers2;kkiEnD;on1;la,n1;dz3g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw2;o,staf2Utierr7zm4;ayDg3iffitUub0;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;hatBnandeVrD;arDei8;a,i;ov3;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s2;er,is2wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov3;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e2uD;ca;hl,mcevsAnErw6t2EviD;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;bGl09ng3rD;eghetEnD;a,y;ti;an,ota0M;cer9lder2mpbeIrFstDvadi08;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;ev3;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss2;asD;hi;er,ham;b3ch,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,s2;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", - "LastName": "true¦0:9F;1:9V;2:9X;3:9H;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:77;B:6E;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaA;aAhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsA;liA1s2;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukB;lk5roby5;dBllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisA;dor95lst31m3rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps2s0Y;hirBkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot3lliv4zuA;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,lFnDr3saAto,v3;ch7d0AtDz;a4Pe,os;as,ihBm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins2;!on;bei0LcEes,vDzzo;as,e8;ci,hards2;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,ss2;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;eEkolDlsCx2;ic,ov6X;ls1miD;!n1;ils2mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov3;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dBti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkBqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k3nDo;d,gu;mbarDpe2Rvr3;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;czDsA;yk;cFlD;!cDen3Q;huk;!ev3ic,s;e6uiveD;rt;eff0l3mu8nnun1;hn,lloe,minsArEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r3;e2JhFnErge2Ju2NvD;anB;es,ss2;anEnsD;en,on,t2;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks2obs1;brahimBglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz3fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers2;kkiEnD;on1;la,n1;dz3g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw2;o,staf2Utierr7zm4;ayDg3iffitUub0;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;hatBnandeVrD;arDei8;a,i;ov3;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s2;er,is2wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov3;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e2uD;ca;hl,mcevsAnErw6t2EviD;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;bGl09ng3rD;eghetEnD;a,y;ti;an,ota0M;cer9lder2mpbeIrFstDvadi08;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;ev3;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss2;asD;hi;er,ham;b3ch,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,s2;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta", - "MaleName": "true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:CW;7:C8;8:B6;9:DL;A:DK;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,nde8sD;!l7t1;de,lErr9yD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro6s1;nAr5C;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,l7;lom1nBFuD;leyma6ta;dDlBm1yabonga;!dhart7Bn7;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y6;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;e5Og3n7olfo,ri7A;co,ky;bCeB7;cDl7;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ub9x,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,rHsEtDumAw9;is,to;aEcAkAm0vD;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;!e8;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk7;aEeD;al,l;el,l;hElv2rD;le,ri8v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe8;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha8tDv2;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;g0nn7SrenFuDv8Jwe8;!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;a8ri59;r,th;cp3j5m66na73rEspAthem,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;a6BemEmai6oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKd9kImHrFsEvi3yD;!d9s1;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;aPeJoIuDydA;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4Jd9;an,s0;lGo50rFuDv7;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;ffr7rge;brEl9rDv2;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;ar04dZfrYit0lSmKnHo2rFsteb0th0uge6vDym9zra;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;!dCgAmGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay6ight;a6dl7nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e8ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay6ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne8rDyl;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,sA;il;lGmer1rD;ey,lEro8y;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;!foDl7y;rd;bErDyd;is;!by;i6ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n7rDt;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;i6nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePd9eJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;d9mA;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", "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:71;8:6O;9:6P;A:5T;B:7L;C:7J;D:7D;E:7C;F:6Q;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietFr1Ms0FtVuTvacuum 1wLyammerEzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r8s8;eel Dip G;aJiIn2L;gh 0Crd0;n Dr 3S;it 60k8lk6rm 6Bsh 7Lt6Ov53;rgeEsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleFp G;ckFde 02;neFp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov7up;aIe 4Vll52;m 1r 01;ckEke Jlk I;ov7u53;aIba4d2in,o3Fup;ba4ft7p58w3;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;arHeLiKlJrIurE;ingEuc8;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row D;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v7;gn 4WngJt Iz8;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v8;aTeQiPoLuI;b 4Sle0n Istl8;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arBin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleEess JiLoI;p 1;ah1Ron;iIp 5Fr3XurFwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leEn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt D;arrowFerd0oI;d6teF;aQeNiMoKuI;ddl8lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur8lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft7ba4d2forw2Jin45ov7uI;nd7p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arBd2;av1Mt 36velI; o3T;c8p 1sh ItchEugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic8mpA;ke30tF;c39zz 1;aUePiMoJuI;nkerFrry 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,oIrBt0Su18;ff,n,v7;bo5ft7hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrBup;ff,n,ut,v7;cJhIl1WrBt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownEy 1;aw3oC;eIshe1N; 1z8;lKol I;aIwi1G;bo5rB;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 D;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v7;a4ehi20;e J;at0dge0nd Iy8;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl8;aYhVlean 9oIross Dut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd7;ogeth7;ut,v7;th,wI;ard;a4y;pIrBw3;art;eIipA;ck DeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Dt6;ry JvI;e 01;aw3o18;l ImF;aIba4d2o16up;rBw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t D;in,o5up;e I;ov7;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrBw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgFil 9n8oLssKttlJunce Ix D;aw3ba4;e 9; arB;k Dt 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov7up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h D;ainEe D;g DkE; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arBo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut", @@ -9438,6 +9447,8 @@ [/^[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 @@ -11229,6 +11240,28 @@ 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; @@ -12240,10 +12273,16 @@ 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|or|pa|sc|tn|tx|ut|vt|pr)]', + 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)', diff --git a/builds/compromise.min.js b/builds/compromise.min.js index d500aefa1..4ddf82814 100644 --- a/builds/compromise.min.js +++ b/builds/compromise.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).nlp=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?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)})))},z=O=function(e,t,r,n){var a=G(e,t,r,n);return!0===t.negative?!a:a},T={},V={doesMatch:function(e,t,r){return z(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-]+$/,S={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}},L={Auxiliary:1,Possessive:1},_=function(e,t){var r=Object.keys(e.tags),n=t.tags;return r=r.sort((function(e,t){return L[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({},x,F,V,S,q);function W(){return"undefined"!=typeof window&&window.document}var Q=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),r=String(r);var n=I(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=I(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},fe=/ /,me=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===fe.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 me(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=N((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 f=De.getGroup(a,d,i.named);a.t>1&&i.greedy?f.length+=a.t-d:f.length++}}else{if(i.negative){var m=Object.assign({},i);if(m.negative=!1,!0===a.terms[a.t].doesMatch(m,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},He=/\{([0-9]+,?[0-9]*)\}/,je=/&&/,Ee=new RegExp(/^<(\S+)>/),Ie=function(e){return e[e.length-1]},Ne=function(e){return e[0]},xe=function(e){return e.substr(1)},Fe=function(e){return e.substr(0,e.length-1)},Ce=function(e){return e=xe(e),e=Fe(e)},Be=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===Ie(t)&&(n.end=!0,t=Fe(t)),"^"===Ne(t)&&(n.start=!0,t=xe(t)),("["===Ne(t)||"]"===Ie(t))&&(n.named=!0,"["===Ne(t)?n.groupType="]"===Ie(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===Ne(t))){var i=Ee.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===Ie(t)&&(n.greedy=!0,t=Fe(t)),"*"!==t&&"*"===Ie(t)&&"\\*"!==t&&(n.greedy=!0,t=Fe(t)),"?"===Ie(t)&&(n.optional=!0,t=Fe(t)),"!"===Ne(t)&&(n.negative=!0,t=xe(t)),"("===Ne(t)&&")"===Ie(t)){je.test(t)?(n.choices=t.split(je),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=xe(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Fe(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("/"===Ne(t)&&"/"===Ie(t))return t=Ce(t),n.regex=new RegExp(t),n;if("~"===Ne(t)&&"~"===Ie(t))return t=Ce(t),n.soft=!0,n.word=t,n}return!0===He.test(t)&&(t=t.replace(He,(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,""}))),"#"===Ne(t)?(n.tag=xe(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===Ne(t)?(n.method=xe(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)},Oe=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=Oe(e)),t.fuzzy||(e=Ge(e)),e},Te=/[^[a-z]]\//g,Ve=function(e){return"[object Array]"===Object.prototype.toString.call(e)},Je=function(e){var t=e.split(/([\^\[\!]*(?:<\S+>)?\(.*?\)[?+*]*\]?\$?)/);return t=t.map((function(e){return e.trim()})),Te.test(e)&&(t=function(e){return e.forEach((function(t,r){var n=t.match(Te);null!==n&&1===n.length&&e[r+1]&&(e[r]+=e[r+1],e[r+1]="",null!==(n=e[r].match(Te))&&1===n.length&&(e[r]+=e[r+2],e[r+2]=""))})),e=e.filter((function(e){return e}))}(t)),t},Me=function(e){var t=[];return e.forEach((function(e){if(/\(.*\)/.test(e))t.push(e);else{var r=e.split(" ");r=r.filter((function(e){return e})),t=t.concat(r)}})),t},Se=function(e){return[{choices:e.map((function(e){return[{word:e}]})),operator:"or"}]},Le=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}]},_e=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},Ke=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||""===t)return[];if("object"===e(t)){if(Ve(t)){if(0===t.length||!t[0])return[];if("object"===e(t[0]))return t;if("string"==typeof t[0])return Se(t)}return t&&"Doc"===t.isA?Le(t):[]}"number"==typeof t&&(t=String(t));var n=Je(t);return n=(n=Me(n)).map((function(e){return Be(e)})),n=ze(n,r),n=_e(n,r)},qe=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=Ke(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=qe(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)},We=function(e,t){var r={};Re(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},Qe={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Re(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 Re(this,e,!0).length>0},not:function(e){var t=this,r=We(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)}))}},Ue=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:{}})};Ue.prototype.buildFrom=function(e,t,r){var n=new Ue(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Ue.prototype,Qe),Object.assign(Ue.prototype,ke);var Ze={term:"terms"};Object.keys(Ze).forEach((function(e){return Ue.prototype[e]=Ue.prototype[Ze[e]]}));var Xe=Ue,Ye=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}();Ye.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 Ye(t)};var et=Ye,tt=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},rt=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,nt=/\S/,at=/[ .][A-Z]\.? *$/i,it=/(?:\u2026|\.{2,}) *$/,ot=/((?:\r?\n|\r)+)/,st=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,ut=/^\s+/,lt=function(e,t){if(!0===at.test(e))return!1;if(!0===it.test(e))return!1;if(!1===st.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},ct=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===nt.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(ot),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):yt(e)&&(n=e)),n=(n=n||ct(e,t)).map((function(e){return bt(e)})),r=r||new et;var a=n.map((function(e){e=e.map((function(e){var t=new se(e);return r.add(t),t})),tt(e);var t=new Xe(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},kt=function(e,t){var r=new et;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 tt(a),new Xe(a[0].id,a.length,r)}))},At=["Person","Place","Organization"],Dt={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:At},Actor:{isA:"Noun",notA:At},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:At},Demonym:{isA:["Noun","ProperNoun"],notA:At},Possessive:{isA:"Noun"}},$t={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"]}},Pt={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"}},Ht=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],jt={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"]},Time:{isA:["Date"],notA:["AtMention"]},Determiner:{notA:Ht},Conjunction:{notA:Ht},Preposition:{notA:Ht},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"]}},Et={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},It=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:Et[t]?e[t].color=Et[t]:e[t].isA.some((function(r){return!!Et[r]&&(e[t].color=Et[r],!0)}))})),e},Nt=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},Jt=function(e,t,r){var n=Vt(t);return n1&&(r.hasCompound[i[0]]=!0),void 0===_t[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:_t[a](t,n,r)}))},qt=function(e){var t=Object.assign({},Lt);return Object.keys(Gt).forEach((function(r){var n=St(Gt[r]);Object.keys(n).forEach((function(e){n[e]=r})),Kt(n,t,e)})),t},Rt=Kt,Wt=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===tr.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({},ar(e),r)).Gerund&&(r.Gerund=or.Gerund(e)),void 0===r.PastTense&&(r.PastTense=or.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=or.PresentTense(e)),r},ur=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],lr=[/ary$/],cr={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},hr=[{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"}],dr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],gr=[/ary$/,/ous$/],pr={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},fr=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],mr={toSuperlative:function(e){if(cr.hasOwnProperty(e))return cr[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=wr(e);return null!==n?n:yr.test(e)?e+"es":e+"s"},Ar=[[/([^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,""]],Dr=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=Ke(e,t);if(0===r.length)return this.buildFrom([]);if(!1===Or(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=Ke(e,t);if(0===r.length||!1===Or(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=Ke(e,t);if(!1===Or(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=Ke(e,t);if(!1===Or(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=Ke(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=Ke(e,t);return!1!==Or(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=Ke(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=Ke(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=Ke(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=Ke(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}))}})),zr=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)}))}))},Tr={tag:function(e,t){return e?(zr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(zr(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)}},Vr={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)}},Jr=function(e){return e.split(/[ -]/g)},Mr=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=Jr(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=_r(o)),i=wt(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)}},qr=N((function(e,t){var r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)},n=function(e,t){var r=wt(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=wt(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=wt(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)&&Qr(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})),Zr=N((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}};en.alphabetical=en.alpha,en.wordcount=en.wordCount;var tn={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},rn={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):tn.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===kn.test(i)){var s=i.replace(kn,"");!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},$n=/[\'‘’‛‵′`´]$/,Pn=/^(m|k|cm|km|m)\/(s|h|hr)$/,Hn=[[/^[\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"],[/^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,2}[-–][0-9]{1,2}$/,["Value","NumberRange"]],[/^[0-9.]{1,3}(st|nd|rd|th)?[-–][0-9\.]{1,3}(st|nd|rd|th)?$/,"NumberRange"],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],jn=/^[IVXLCDM]{2,}$/,En=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,In="Adjective",Nn="Infinitive",xn="PresentTense",Fn="Singular",Cn="PastTense",Bn="Adverb",On="Expression",Gn="Actor",zn="Verb",Tn="Noun",Vn="LastName",Jn={a:[[/.[aeiou]na$/,Tn],[/.[oau][wvl]ska$/,Vn],[/.[^aeiou]ica$/,Fn],[/^([hyj]a)+$/,On]],c:[[/.[^aeiou]ic$/,In]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,Cn],[/.[aeo]{2}[bdgmnprvz]ed$/,Cn],[/.[aeiou][sg]hed$/,Cn],[/.[aeiou]red$/,Cn],[/.[aeiou]r?ried$/,Cn],[/.[bcdgtr]led$/,Cn],[/.[aoui]f?led$/,Cn],[/.[iao]sed$/,Cn],[/[aeiou]n?[cs]ed$/,Cn],[/[aeiou][rl]?[mnf]ed$/,Cn],[/[aeiou][ns]?c?ked$/,Cn],[/[aeiou][nl]?ged$/,Cn],[/.[tdbwxz]ed$/,Cn],[/[^aeiou][aeiou][tvx]ed$/,Cn],[/.[cdlmnprstv]ied$/,Cn],[/[^aeiou]ard$/,Fn],[/[aeiou][^aeiou]id$/,In],[/.[vrl]id$/,In]],e:[[/.[lnr]ize$/,Nn],[/.[^aeiou]ise$/,Nn],[/.[aeiou]te$/,Nn],[/.[^aeiou][ai]ble$/,In],[/.[^aeiou]eable$/,In],[/.[ts]ive$/,In]],h:[[/.[^aeiouf]ish$/,In],[/.v[iy]ch$/,Vn],[/^ug?h+$/,On],[/^uh[ -]?oh$/,On]],i:[[/.[oau][wvl]ski$/,Vn]],k:[[/^(k){2}$/,On]],l:[[/.[gl]ial$/,In],[/.[^aeiou]ful$/,In],[/.[nrtumcd]al$/,In],[/.[^aeiou][ei]al$/,In]],m:[[/.[^aeiou]ium$/,Fn],[/[^aeiou]ism$/,Fn],[/^h*u*m+$/,On],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,In],[/[^aeiou]ician$/,Gn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,On],[/^(yo)+$/,On],[/^woo+[pt]?$/,On]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,Fn],[/[^i]fer$/,Nn],[/.[^aeiou][ao]pher$/,Gn],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,In],[/[aeiou].*ist$/,In],[/^[a-z]et$/,zn]],s:[[/.[^aeiou]ises$/,xn],[/.[rln]ates$/,xn],[/.[^z]ens$/,zn],[/.[lstrn]us$/,Fn],[/.[aeiou]sks$/,xn],[/.[aeiou]kes$/,xn],[/[aeiou][^aeiou]is$/,Fn],[/[a-z]\'s$/,Tn],[/^yes+$/,On]],v:[[/.[^aeiou][ai][kln]ov$/,Vn]],y:[[/.[cts]hy$/,In],[/.[st]ty$/,In],[/.[gk]y$/,In],[/.[tnl]ary$/,In],[/.[oe]ry$/,Fn],[/[rdntkbhs]ly$/,Bn],[/...lly$/,Bn],[/[bszmp]{2}y$/,In],[/.(gg|bb|zz)ly$/,In],[/.[ai]my$/,In],[/[ea]{2}zy$/,In],[/.[^aeiou]ity$/,Fn]]},Mn="Adjective",Sn="Infinitive",Ln="PresentTense",_n="Singular",Kn="PastTense",qn="Adverb",Rn="Plural",Wn="Actor",Qn="Verb",Un="Noun",Zn="LastName",Xn="Modal",Yn=[null,null,{ea:_n,ia:Un,ic:Mn,ly:qn,"'n":Qn,"'t":Qn},{oed:Kn,ued:Kn,xed:Kn," so":qn,"'ll":Xn,"'re":"Copula",azy:Mn,eer:Un,end:Qn,ped:Kn,ffy:Mn,ify:Sn,ing:"Gerund",ize:Sn,lar:Mn,mum:Mn,nes:Ln,nny:Mn,oid:Mn,ous:Mn,que:Mn,rol:_n,sis:_n,zes:Ln},{amed:Kn,aped:Kn,ched:Kn,lked:Kn,nded:Kn,cted:Kn,dged:Kn,akis:Zn,cede:Sn,chuk:Zn,czyk:Zn,ects:Ln,ends:Qn,enko:Zn,ette:_n,fies:Ln,fore:qn,gate:Sn,gone:Mn,ices:Rn,ints:Rn,ines:Rn,ions:Rn,less:qn,llen:Mn,made:Mn,nsen:Zn,oses:Ln,ould:Xn,some:Mn,sson:Zn,tage:Sn,teen:"Value",tion:_n,tive:Mn,tors:Un,vice:_n},{tized:Kn,urned:Kn,eased:Kn,ances:Rn,bound:Mn,ettes:Rn,fully:qn,ishes:Ln,ities:Rn,marek:Zn,nssen:Zn,ology:Un,ports:Rn,rough:Mn,tches:Ln,tieth:"Ordinal",tures:Rn,wards:qn,where:qn},{auskas:Zn,keeper:Wn,logist:Wn,teenth:"Value"},{opoulos:Zn,borough:"Place",sdottir:Zn}],ea={":(":!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)}Pn.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&jn.test(r)&&En.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===Yn[i.length].hasOwnProperty(i)){var o=Yn[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===Jn.hasOwnProperty(n))for(var a=Jn[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(ta)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),ea.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},na=function(e,t){var r=e.world;ra.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},pa={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]},fa=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],ma=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],va=[/i$/,/ae$/],ba=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(fa.find((function(t){return e.tags[t]})))return;if(pa.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(pa.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(ma.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(va.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},ya=["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}),{}),wa=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()))},ka=/^[A-Z]('s|,)?$/,Aa=/([A-Z]\.){2}[A-Z]?/i,Da={I:!0,A:!0},$a={neighbours:sa,case:ca,stem:ga,plural:ba,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)):!Da.hasOwnProperty(e.text)&&ka.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))}))}},Pa=function(e,t){var r=e.world;return $a.neighbours(t,r),$a.case(e),$a.stem(t,r),t.forEach((function(t){!1===t.isKnown()&&t.tag("Noun","noun-fallback",e.world)})),$a.organizations(t,r),$a.acronyms(t,r),t.forEach((function(t){$a.plural(t,e.world)})),e},Ha=/n't$/,ja={"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"]},Ea=function(e,t){return!0===ja.hasOwnProperty(e.clean)?ja[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===Ha.test(e.clean)?[e.clean.replace(Ha,""),"not"]:null},Ia=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i,Na={ll:"will",ve:"have",re:"are",m:"am","n't":"not"},xa=function(e){var t=e.text.match(Ia);return null===t?null:Na.hasOwnProperty(t[2])?[t[1],Na[t[2]]]:null},Fa={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"]},Ca=function(e){return Fa.hasOwnProperty(e.clean)?Fa[e.clean]:null},Ba=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i,Oa={that:!0,there:!0},Ga={here:!0,there:!0,everywhere:!0},za=function(e,t,r){var n=e.text.match(Ba);if(null!==n){if(!0===function(e,t){if(e.tags.Possessive)return!0;if(e.tags.Pronoun||e.tags.QuestionWord)return!1;if(Oa.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!==Ga.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},Ta=/[a-z\u00C0-\u00FF]'d$/,Va={how:!0,what:!0},Ja=function(e,t){if(Ta.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?fi=fi.concat(t):fi.push(e)})),fi.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:Xa(r),words:Xa(n)}),e}));var mi=fi,vi=function(e){mi.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=Xa(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},$i=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},Vi=/\(/,Ji=/\)/,Mi=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(Vi,"");var r=e.lastTerm();r.post=r.post.replace(Ji,"")})),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 yi(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();oo.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new oo(e,this,this.world)},oo.prototype.fromText=function(e){var t=wt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(oo.prototype,io.misc),Object.assign(oo.prototype,io.selections),ao(oo);var so={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(so).forEach((function(e){return oo.prototype[e]=oo.prototype[so[e]]}));var uo=oo,lo=function(e){var t=e.termList();return Dn(t,e.world),e.world.taggers.forEach((function(t){t(e)})),e};return 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=wt(e,r),a=new uo(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=wt(e,n),i=new uo(a,null,n);return(t||i.world.taggers.length>0)&&lo(i),i},n.extend=function(e){return e(uo,r,this,Xe,se,et),this},n.fromJSON=function(e){var t=kt(e,r);return new uo(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 Ke(e,t)},n.version="13.10.1",n.import=n.load,n.plugin=n.extend,n}(new Fr)})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).nlp=t()}(this,(function(){"use strict";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)})))},z=O=function(e,t,r,n){var a=G(e,t,r,n);return!0===t.negative?!a:a},T={},V={doesMatch:function(e,t,r){return z(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({},x,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=I((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},He=/\{([0-9]+,?[0-9]*)\}/,je=/&&/,Ee=new RegExp(/^<(\S+)>/),Ne=function(e){return e[e.length-1]},Ie=function(e){return e[0]},xe=function(e){return e.substr(1)},Ce=function(e){return e.substr(0,e.length-1)},Fe=function(e){return e=xe(e),e=Ce(e)},Be=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===Ne(t)&&(n.end=!0,t=Ce(t)),"^"===Ie(t)&&(n.start=!0,t=xe(t)),("["===Ie(t)||"]"===Ne(t))&&(n.named=!0,"["===Ie(t)?n.groupType="]"===Ne(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===Ie(t))){var i=Ee.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===Ne(t)&&(n.greedy=!0,t=Ce(t)),"*"!==t&&"*"===Ne(t)&&"\\*"!==t&&(n.greedy=!0,t=Ce(t)),"?"===Ne(t)&&(n.optional=!0,t=Ce(t)),"!"===Ie(t)&&(n.negative=!0,t=xe(t)),"("===Ie(t)&&")"===Ne(t)){je.test(t)?(n.choices=t.split(je),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=xe(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Ce(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("/"===Ie(t)&&"/"===Ne(t))return t=Fe(t),n.regex=new RegExp(t),n;if("~"===Ie(t)&&"~"===Ne(t))return t=Fe(t),n.soft=!0,n.word=t,n}return!0===He.test(t)&&(t=t.replace(He,(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,""}))),"#"===Ie(t)?(n.tag=xe(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===Ie(t)?(n.method=xe(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)},Oe=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=Oe(e)),t.fuzzy||(e=Ge(e)),e},Te=/[^[a-z]]\//g,Ve=function(e){return"[object Array]"===Object.prototype.toString.call(e)},Je=function(e){var t=e.split(/([\^\[\!]*(?:<\S+>)?\(.*?\)[?+*]*\]?\$?)/);return t=t.map((function(e){return e.trim()})),Te.test(e)&&(t=function(e){return e.forEach((function(t,r){var n=t.match(Te);null!==n&&1===n.length&&e[r+1]&&(e[r]+=e[r+1],e[r+1]="",null!==(n=e[r].match(Te))&&1===n.length&&(e[r]+=e[r+2],e[r+2]=""))})),e=e.filter((function(e){return e}))}(t)),t},Me=function(e){var t=[];return e.forEach((function(e){if(/\(.*\)/.test(e))t.push(e);else{var r=e.split(" ");r=r.filter((function(e){return e})),t=t.concat(r)}})),t},Le=function(e){return[{choices:e.map((function(e){return[{word:e}]})),operator:"or"}]},Se=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}]},_e=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},Ke=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||""===t)return[];if("object"===e(t)){if(Ve(t)){if(0===t.length||!t[0])return[];if("object"===e(t[0]))return t;if("string"==typeof t[0])return Le(t)}return t&&"Doc"===t.isA?Se(t):[]}"number"==typeof t&&(t=String(t));var n=Je(t);return n=(n=Me(n)).map((function(e){return Be(e)})),n=ze(n,r),n=_e(n,r)},qe=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=Ke(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=qe(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)},We=function(e,t){var r={};Re(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},Ue={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Re(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 Re(this,e,!0).length>0},not:function(e){var t=this,r=We(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)}))}},Qe=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:{}})};Qe.prototype.buildFrom=function(e,t,r){var n=new Qe(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Qe.prototype,Ue),Object.assign(Qe.prototype,ke);var Ze={term:"terms"};Object.keys(Ze).forEach((function(e){return Qe.prototype[e]=Qe.prototype[Ze[e]]}));var Xe=Qe,Ye=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}();Ye.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 Ye(t)};var et=Ye,tt=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},rt=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,nt=/\S/,at=/[ .][A-Z]\.? *$/i,it=/(?:\u2026|\.{2,}) *$/,ot=/((?:\r?\n|\r)+)/,st=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,ut=/^\s+/,lt=function(e,t){if(!0===at.test(e))return!1;if(!0===it.test(e))return!1;if(!1===st.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},ct=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===nt.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(ot),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):yt(e)&&(n=e)),n=(n=n||ct(e,t)).map((function(e){return bt(e)})),r=r||new et;var a=n.map((function(e){e=e.map((function(e){var t=new se(e);return r.add(t),t})),tt(e);var t=new Xe(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},kt=function(e,t){var r=new et;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 tt(a),new Xe(a[0].id,a.length,r)}))},At=["Person","Place","Organization"],Dt={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:At},Actor:{isA:"Noun",notA:At},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:At},Demonym:{isA:["Noun","ProperNoun"],notA:At},Possessive:{isA:"Noun"}},$t={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"]}},Pt={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"}},Ht=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],jt={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:Ht},Conjunction:{notA:Ht},Preposition:{notA:Ht},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"]}},Et={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Nt=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:Et[t]?e[t].color=Et[t]:e[t].isA.some((function(r){return!!Et[r]&&(e[t].color=Et[r],!0)}))})),e},It=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},Jt=function(e,t,r){var n=Vt(t);return n1&&(r.hasCompound[i[0]]=!0),void 0===_t[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:_t[a](t,n,r)}))},qt=function(e){var t=Object.assign({},St);return Object.keys(Gt).forEach((function(r){var n=Lt(Gt[r]);Object.keys(n).forEach((function(e){n[e]=r})),Kt(n,t,e)})),t},Rt=Kt,Wt=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===tr.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({},ar(e),r)).Gerund&&(r.Gerund=or.Gerund(e)),void 0===r.PastTense&&(r.PastTense=or.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=or.PresentTense(e)),r},ur=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],lr=[/ary$/],cr={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},hr=[{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"}],dr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],gr=[/ary$/,/ous$/],pr={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},mr=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],fr={toSuperlative:function(e){if(cr.hasOwnProperty(e))return cr[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=wr(e);return null!==n?n:yr.test(e)?e+"es":e+"s"},Ar=[[/([^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,""]],Dr=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=Ke(e,t);if(0===r.length)return this.buildFrom([]);if(!1===Or(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=Ke(e,t);if(0===r.length||!1===Or(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=Ke(e,t);if(!1===Or(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=Ke(e,t);if(!1===Or(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=Ke(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=Ke(e,t);return!1!==Or(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=Ke(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=Ke(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=Ke(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=Ke(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}))}})),zr=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)}))}))},Tr={tag:function(e,t){return e?(zr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(zr(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)}},Vr={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)}},Jr=function(e){return e.split(/[ -]/g)},Mr=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=Jr(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=_r(o)),i=wt(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)}},qr=I((function(e,t){var r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)},n=function(e,t){var r=wt(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=wt(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=wt(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)&&Ur(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})),Zr=I((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}};en.alphabetical=en.alpha,en.wordcount=en.wordCount;var tn={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},rn={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):tn.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===kn.test(i)){var s=i.replace(kn,"");!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},$n=/[\'‘’‛‵′`´]$/,Pn=/^(m|k|cm|km|m)\/(s|h|hr)$/,Hn=[[/^[\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,2}[-–][0-9]{1,2}$/,["Value","NumberRange"]],[/^[0-9.]{1,3}(st|nd|rd|th)?[-–][0-9\.]{1,3}(st|nd|rd|th)?$/,"NumberRange"],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],jn=/^[IVXLCDM]{2,}$/,En=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Nn="Adjective",In="Infinitive",xn="PresentTense",Cn="Singular",Fn="PastTense",Bn="Adverb",On="Expression",Gn="Actor",zn="Verb",Tn="Noun",Vn="LastName",Jn={a:[[/.[aeiou]na$/,Tn],[/.[oau][wvl]ska$/,Vn],[/.[^aeiou]ica$/,Cn],[/^([hyj]a)+$/,On]],c:[[/.[^aeiou]ic$/,Nn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,Fn],[/.[aeo]{2}[bdgmnprvz]ed$/,Fn],[/.[aeiou][sg]hed$/,Fn],[/.[aeiou]red$/,Fn],[/.[aeiou]r?ried$/,Fn],[/.[bcdgtr]led$/,Fn],[/.[aoui]f?led$/,Fn],[/.[iao]sed$/,Fn],[/[aeiou]n?[cs]ed$/,Fn],[/[aeiou][rl]?[mnf]ed$/,Fn],[/[aeiou][ns]?c?ked$/,Fn],[/[aeiou][nl]?ged$/,Fn],[/.[tdbwxz]ed$/,Fn],[/[^aeiou][aeiou][tvx]ed$/,Fn],[/.[cdlmnprstv]ied$/,Fn],[/[^aeiou]ard$/,Cn],[/[aeiou][^aeiou]id$/,Nn],[/.[vrl]id$/,Nn]],e:[[/.[lnr]ize$/,In],[/.[^aeiou]ise$/,In],[/.[aeiou]te$/,In],[/.[^aeiou][ai]ble$/,Nn],[/.[^aeiou]eable$/,Nn],[/.[ts]ive$/,Nn]],h:[[/.[^aeiouf]ish$/,Nn],[/.v[iy]ch$/,Vn],[/^ug?h+$/,On],[/^uh[ -]?oh$/,On]],i:[[/.[oau][wvl]ski$/,Vn]],k:[[/^(k){2}$/,On]],l:[[/.[gl]ial$/,Nn],[/.[^aeiou]ful$/,Nn],[/.[nrtumcd]al$/,Nn],[/.[^aeiou][ei]al$/,Nn]],m:[[/.[^aeiou]ium$/,Cn],[/[^aeiou]ism$/,Cn],[/^h*u*m+$/,On],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Nn],[/[^aeiou]ician$/,Gn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,On],[/^(yo)+$/,On],[/^woo+[pt]?$/,On]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,Cn],[/[^i]fer$/,In],[/.[^aeiou][ao]pher$/,Gn],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Nn],[/[aeiou].*ist$/,Nn],[/^[a-z]et$/,zn]],s:[[/.[^aeiou]ises$/,xn],[/.[rln]ates$/,xn],[/.[^z]ens$/,zn],[/.[lstrn]us$/,Cn],[/.[aeiou]sks$/,xn],[/.[aeiou]kes$/,xn],[/[aeiou][^aeiou]is$/,Cn],[/[a-z]\'s$/,Tn],[/^yes+$/,On]],v:[[/.[^aeiou][ai][kln]ov$/,Vn]],y:[[/.[cts]hy$/,Nn],[/.[st]ty$/,Nn],[/.[gk]y$/,Nn],[/.[tnl]ary$/,Nn],[/.[oe]ry$/,Cn],[/[rdntkbhs]ly$/,Bn],[/...lly$/,Bn],[/[bszmp]{2}y$/,Nn],[/.(gg|bb|zz)ly$/,Nn],[/.[ai]my$/,Nn],[/[ea]{2}zy$/,Nn],[/.[^aeiou]ity$/,Cn]]},Mn="Adjective",Ln="Infinitive",Sn="PresentTense",_n="Singular",Kn="PastTense",qn="Adverb",Rn="Plural",Wn="Actor",Un="Verb",Qn="Noun",Zn="LastName",Xn="Modal",Yn=[null,null,{ea:_n,ia:Qn,ic:Mn,ly:qn,"'n":Un,"'t":Un},{oed:Kn,ued:Kn,xed:Kn," so":qn,"'ll":Xn,"'re":"Copula",azy:Mn,eer:Qn,end:Un,ped:Kn,ffy:Mn,ify:Ln,ing:"Gerund",ize:Ln,lar:Mn,mum:Mn,nes:Sn,nny:Mn,oid:Mn,ous:Mn,que:Mn,rol:_n,sis:_n,zes:Sn},{amed:Kn,aped:Kn,ched:Kn,lked:Kn,nded:Kn,cted:Kn,dged:Kn,akis:Zn,cede:Ln,chuk:Zn,czyk:Zn,ects:Sn,ends:Un,enko:Zn,ette:_n,fies:Sn,fore:qn,gate:Ln,gone:Mn,ices:Rn,ints:Rn,ines:Rn,ions:Rn,less:qn,llen:Mn,made:Mn,nsen:Zn,oses:Sn,ould:Xn,some:Mn,sson:Zn,tage:Ln,teen:"Value",tion:_n,tive:Mn,tors:Qn,vice:_n},{tized:Kn,urned:Kn,eased:Kn,ances:Rn,bound:Mn,ettes:Rn,fully:qn,ishes:Sn,ities:Rn,marek:Zn,nssen:Zn,ology:Qn,ports:Rn,rough:Mn,tches:Sn,tieth:"Ordinal",tures:Rn,wards:qn,where:qn},{auskas:Zn,keeper:Wn,logist:Wn,teenth:"Value"},{opoulos:Zn,borough:"Place",sdottir:Zn}],ea={":(":!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)}Pn.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&jn.test(r)&&En.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===Yn[i.length].hasOwnProperty(i)){var o=Yn[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===Jn.hasOwnProperty(n))for(var a=Jn[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(ta)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),ea.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},na=function(e,t){var r=e.world;ra.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},pa={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]},ma=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],fa=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],va=[/i$/,/ae$/],ba=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(ma.find((function(t){return e.tags[t]})))return;if(pa.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(pa.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(fa.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(va.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},ya=["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}),{}),wa=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()))},ka=/^[A-Z]('s|,)?$/,Aa=/([A-Z]\.){2}[A-Z]?/i,Da={I:!0,A:!0},$a={neighbours:sa,case:ca,stem:ga,plural:ba,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)):!Da.hasOwnProperty(e.text)&&ka.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))}))}},Pa=function(e,t){var r=e.world;return $a.neighbours(t,r),$a.case(e),$a.stem(t,r),t.forEach((function(t){!1===t.isKnown()&&t.tag("Noun","noun-fallback",e.world)})),$a.organizations(t,r),$a.acronyms(t,r),t.forEach((function(t){$a.plural(t,e.world)})),e},Ha=/n't$/,ja={"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"]},Ea=function(e,t){return!0===ja.hasOwnProperty(e.clean)?ja[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===Ha.test(e.clean)?[e.clean.replace(Ha,""),"not"]:null},Na=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i,Ia={ll:"will",ve:"have",re:"are",m:"am","n't":"not"},xa=function(e){var t=e.text.match(Na);return null===t?null:Ia.hasOwnProperty(t[2])?[t[1],Ia[t[2]]]:null},Ca={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"]},Fa=function(e){return Ca.hasOwnProperty(e.clean)?Ca[e.clean]:null},Ba=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i,Oa={that:!0,there:!0},Ga={here:!0,there:!0,everywhere:!0},za=function(e,t,r){var n=e.text.match(Ba);if(null!==n){if(!0===function(e,t){if(e.tags.Possessive)return!0;if(e.tags.Pronoun||e.tags.QuestionWord)return!1;if(Oa.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!==Ga.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},Ta=/[a-z\u00C0-\u00FF]'d$/,Va={how:!0,what:!0},Ja=function(e,t){if(Ta.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?mi=mi.concat(t):mi.push(e)})),mi.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:Xa(r),words:Xa(n)}),e}));var fi=mi,vi=function(e){fi.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=Xa(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},$i=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},Vi=/\(/,Ji=/\)/,Mi=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(Vi,"");var r=e.lastTerm();r.post=r.post.replace(Ji,"")})),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 yi(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();oo.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new oo(e,this,this.world)},oo.prototype.fromText=function(e){var t=wt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(oo.prototype,io.misc),Object.assign(oo.prototype,io.selections),ao(oo);var so={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(so).forEach((function(e){return oo.prototype[e]=oo.prototype[so[e]]}));var uo=oo,lo=function(e){var t=e.termList();return Dn(t,e.world),e.world.taggers.forEach((function(t){t(e)})),e};return 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=wt(e,r),a=new uo(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=wt(e,n),i=new uo(a,null,n);return(t||i.world.taggers.length>0)&&lo(i),i},n.extend=function(e){return e(uo,r,this,Xe,se,et),this},n.fromJSON=function(e){var t=kt(e,r);return new uo(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 Ke(e,t)},n.version="13.10.2",n.import=n.load,n.plugin=n.extend,n}(new Cr)})); diff --git a/builds/compromise.mjs b/builds/compromise.mjs index 712776abd..2f8ed01de 100644 --- a/builds/compromise.mjs +++ b/builds/compromise.mjs @@ -1,4 +1,4 @@ -/* compromise 13.10.1 MIT */ +/* compromise 13.10.2 MIT */ function _typeof(obj) { "@babel/helpers - typeof"; @@ -705,6 +705,10 @@ var doesMatch = function doesMatch(t, reg, index, length) { if (reg.fastOr !== undefined) { + if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { + return true; + } + return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text); } //support slower (one|two) @@ -3854,7 +3858,7 @@ var fromJSON = function fromJSON(json, world) { var fromJSON_1 = fromJSON; -var _version = '13.10.1'; +var _version = '13.10.2'; var entity = ['Person', 'Place', 'Organization']; var nouns$1 = { @@ -4113,6 +4117,11 @@ var misc$1 = { WeekDay: { isA: ['Date', 'Noun'] }, + // 'PST' + Timezone: { + isA: ['Date', 'Noun'], + notA: ['Adjective', 'ProperNoun'] + }, // '9:20pm' Time: { isA: ['Date'], @@ -4388,16 +4397,16 @@ var _data = { "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¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1ern1Mi0;en2Hlni2Z;lenc2Uncouv0Gr2Gughn;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", - "Country": "true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;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:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma", - "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,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:CW;7:C8;8:B6;9:DL;A:DK;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,nde8sD;!l7t1;de,lErr9yD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro6s1;nAr5C;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,l7;lom1nBFuD;leyma6ta;dDlBm1yabonga;!dhart7Bn7;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y6;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;e5Og3n7olfo,ri7A;co,ky;bCeB7;cDl7;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ub9x,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,rHsEtDumAw9;is,to;aEcAkAm0vD;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;!e8;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk7;aEeD;al,l;el,l;hElv2rD;le,ri8v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe8;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha8tDv2;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;g0nn7SrenFuDv8Jwe8;!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;a8ri59;r,th;cp3j5m66na73rEspAthem,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;a6BemEmai6oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKd9kImHrFsEvi3yD;!d9s1;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;aPeJoIuDydA;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4Jd9;an,s0;lGo50rFuDv7;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;ffr7rge;brEl9rDv2;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;ar04dZfrYit0lSmKnHo2rFsteb0th0uge6vDym9zra;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;!dCgAmGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay6ight;a6dl7nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e8ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay6ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne8rDyl;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,sA;il;lGmer1rD;ey,lEro8y;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;!foDl7y;rd;bErDyd;is;!by;i6ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n7rDt;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;i6nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePd9eJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;d9mA;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:9X;3:9H;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:77;B:6E;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaA;aAhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsA;liA1s2;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukB;lk5roby5;dBllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisA;dor95lst31m3rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps2s0Y;hirBkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot3lliv4zuA;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,lFnDr3saAto,v3;ch7d0AtDz;a4Pe,os;as,ihBm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins2;!on;bei0LcEes,vDzzo;as,e8;ci,hards2;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,ss2;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;eEkolDlsCx2;ic,ov6X;ls1miD;!n1;ils2mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov3;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dBti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkBqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k3nDo;d,gu;mbarDpe2Rvr3;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;czDsA;yk;cFlD;!cDen3Q;huk;!ev3ic,s;e6uiveD;rt;eff0l3mu8nnun1;hn,lloe,minsArEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r3;e2JhFnErge2Ju2NvD;anB;es,ss2;anEnsD;en,on,t2;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks2obs1;brahimBglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz3fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers2;kkiEnD;on1;la,n1;dz3g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw2;o,staf2Utierr7zm4;ayDg3iffitUub0;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;hatBnandeVrD;arDei8;a,i;ov3;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s2;er,is2wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov3;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e2uD;ca;hl,mcevsAnErw6t2EviD;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;bGl09ng3rD;eghetEnD;a,y;ti;an,ota0M;cer9lder2mpbeIrFstDvadi08;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;ev3;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss2;asD;hi;er,ham;b3ch,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,s2;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", - "LastName": "true¦0:9F;1:9V;2:9X;3:9H;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:77;B:6E;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaA;aAhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsA;liA1s2;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukB;lk5roby5;dBllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisA;dor95lst31m3rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps2s0Y;hirBkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot3lliv4zuA;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,lFnDr3saAto,v3;ch7d0AtDz;a4Pe,os;as,ihBm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins2;!on;bei0LcEes,vDzzo;as,e8;ci,hards2;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,ss2;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;eEkolDlsCx2;ic,ov6X;ls1miD;!n1;ils2mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov3;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dBti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkBqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k3nDo;d,gu;mbarDpe2Rvr3;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;czDsA;yk;cFlD;!cDen3Q;huk;!ev3ic,s;e6uiveD;rt;eff0l3mu8nnun1;hn,lloe,minsArEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r3;e2JhFnErge2Ju2NvD;anB;es,ss2;anEnsD;en,on,t2;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks2obs1;brahimBglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz3fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers2;kkiEnD;on1;la,n1;dz3g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw2;o,staf2Utierr7zm4;ayDg3iffitUub0;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;hatBnandeVrD;arDei8;a,i;ov3;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s2;er,is2wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov3;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e2uD;ca;hl,mcevsAnErw6t2EviD;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;bGl09ng3rD;eghetEnD;a,y;ti;an,ota0M;cer9lder2mpbeIrFstDvadi08;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;ev3;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss2;asD;hi;er,ham;b3ch,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,s2;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta", - "MaleName": "true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:CW;7:C8;8:B6;9:DL;A:DK;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,nde8sD;!l7t1;de,lErr9yD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro6s1;nAr5C;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,l7;lom1nBFuD;leyma6ta;dDlBm1yabonga;!dhart7Bn7;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y6;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;e5Og3n7olfo,ri7A;co,ky;bCeB7;cDl7;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ub9x,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,rHsEtDumAw9;is,to;aEcAkAm0vD;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;!e8;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk7;aEeD;al,l;el,l;hElv2rD;le,ri8v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe8;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha8tDv2;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;g0nn7SrenFuDv8Jwe8;!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;a8ri59;r,th;cp3j5m66na73rEspAthem,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;a6BemEmai6oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKd9kImHrFsEvi3yD;!d9s1;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;aPeJoIuDydA;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4Jd9;an,s0;lGo50rFuDv7;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;ffr7rge;brEl9rDv2;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;ar04dZfrYit0lSmKnHo2rFsteb0th0uge6vDym9zra;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;!dCgAmGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay6ight;a6dl7nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e8ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay6ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne8rDyl;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,sA;il;lGmer1rD;ey,lEro8y;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;!foDl7y;rd;bErDyd;is;!by;i6ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n7rDt;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;i6nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePd9eJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;d9mA;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", "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:71;8:6O;9:6P;A:5T;B:7L;C:7J;D:7D;E:7C;F:6Q;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietFr1Ms0FtVuTvacuum 1wLyammerEzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r8s8;eel Dip G;aJiIn2L;gh 0Crd0;n Dr 3S;it 60k8lk6rm 6Bsh 7Lt6Ov53;rgeEsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleFp G;ckFde 02;neFp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov7up;aIe 4Vll52;m 1r 01;ckEke Jlk I;ov7u53;aIba4d2in,o3Fup;ba4ft7p58w3;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;arHeLiKlJrIurE;ingEuc8;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row D;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v7;gn 4WngJt Iz8;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v8;aTeQiPoLuI;b 4Sle0n Istl8;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arBin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleEess JiLoI;p 1;ah1Ron;iIp 5Fr3XurFwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leEn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt D;arrowFerd0oI;d6teF;aQeNiMoKuI;ddl8lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur8lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft7ba4d2forw2Jin45ov7uI;nd7p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arBd2;av1Mt 36velI; o3T;c8p 1sh ItchEugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic8mpA;ke30tF;c39zz 1;aUePiMoJuI;nkerFrry 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,oIrBt0Su18;ff,n,v7;bo5ft7hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrBup;ff,n,ut,v7;cJhIl1WrBt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownEy 1;aw3oC;eIshe1N; 1z8;lKol I;aIwi1G;bo5rB;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 D;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v7;a4ehi20;e J;at0dge0nd Iy8;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl8;aYhVlean 9oIross Dut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd7;ogeth7;ut,v7;th,wI;ard;a4y;pIrBw3;art;eIipA;ck DeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Dt6;ry JvI;e 01;aw3o18;l ImF;aIba4d2o16up;rBw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t D;in,o5up;e I;ov7;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrBw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgFil 9n8oLssKttlJunce Ix D;aw3ba4;e 9; arB;k Dt 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov7up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h D;ainEe D;g DkE; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arBo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut", @@ -9432,6 +9441,8 @@ var startsWith = [//web tags [/^[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 @@ -11223,6 +11234,28 @@ var list$4 = [// ==== Holiday ==== 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; @@ -12234,10 +12267,16 @@ var list$1 = [// ==== 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|or|pa|sc|tn|tx|ut|vt|pr)]', + 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)', diff --git a/changelog.md b/changelog.md index 687a47e48..55adfcd80 100644 --- a/changelog.md +++ b/changelog.md @@ -12,6 +12,11 @@ While all _Major_ releases should be reviewed, our only two _large_ releases are --> +#### 13.10.2 [March 2021] +- **[fix]** - support matching implicit terms in (or|blocks) +- **[change]** - add #Timezone tag (from date-plugin) +- **[change]** - add many more cities and regions + #### 13.10.1 [March 2021] - **[change]** - #Date terms can still be a #Conjunction - **[new]** - #Imperative tag and `.verbs().isImperative()` method diff --git a/data/places/cities.js b/data/places/cities.js index 89fad422b..f942aa3a6 100644 --- a/data/places/cities.js +++ b/data/places/cities.js @@ -237,5 +237,260 @@ module.exports = [ 'yokohama', 'zagreb', 'zurich', - // 'sana\'a', + + 'delhi', + 'sao paulo', + 'wuhan', + 'lagos', + 'nyc', + 'dongguan', + 'kinshasa', + 'chongqing', + 'chengdu', + 'baghdad', + 'nanjing', + 'nanchong', + 'xian', + 'lahore', + 'shenyang', + 'hangzhou', + 'rio', + 'harbin', + 'taian', + 'suzhou', + 'shantou', + 'bengaluru', + 'saint petersburg', + 'kolkata', + 'jinan', + 'zhengzhou', + 'riyadh', + 'changchun', + 'dalian', + 'chattogram', + 'kunming', + 'qingdao', + 'kano', + 'foshan', + 'puyang', + 'ibadan', + 'wuxi', + 'xiamen', + 'tianshui', + 'ningbo', + 'shiyan', + 'taiyuan', + 'tangshan', + 'hefei', + 'zibo', + 'zhongshan', + 'changsha', + 'urumqi', + 'dubai', + 'surat', + 'jeddah', + 'shijiazhuang', + 'kanpur', + 'kyiv', + 'luanda', + 'quezon', + 'addis ababa', + 'nairobi', + 'jaipur', + 'dar es salaam', + 'lanzhou', + 'yunfu', + 'basrah', + 'mogadishu', + 'faisalabad', + 'izmir', + 'lucknow', + 'fortaleza', + 'surabaya', + 'belo horizonte', + 'nanchang', + 'mashhad', + 'nagpur', + 'maracaibo', + 'santo domingo', + 'al mawsil al jadidah', + 'johannesburg', + 'kowloon', + 'al basrah al qadimah', + 'dadonghai', + 'medellin', + 'tashkent', + 'algiers', + 'khartoum', + 'accra', + 'guayaquil', + 'ordos', + 'sanaa', + 'jilin', + 'camayenne', + 'indore', + 'iztapalapa', + 'conakry', + 'bayan nur', + 'maracay', + 'medan', + 'rawalpindi', + 'mosul', + 'bandung', + 'soweto', + 'kallakurichi', + 'rabat', + 'aleppo', + 'kunshan', + 'patna', + 'bhopal', + 'manaus', + 'xinyang', + 'kaduna', + 'isfahan', + 'ludhiana', + 'san diego', + + 'port au prince', + 'adelaide', + 'brazzaville', + 'baotou', + 'tijuana', + 'dallas', + 'medina', + 'tripoli', + 'volgograd', + 'samara', + 'omsk', + 'mecca', + 'makassar', + 'asuncion', + 'recife', + 'san antonio', + 'changzhou', + 'mendoza', + 'marrakesh', + 'san francisco', + 'turin', + 'la paz', + 'jerusalem', + 'fort worth', + 'indianapolis', + 'sarajevo', + 'muscat', + 'salem', + 'sheffield', + 'seattle', + 'denver', + 'el paso', + 'detroit', + 'islamabad', + 'kirkuk', + 'mississauga', + 'boston', + 'nantong', + 'guadalupe', + 'bristol', + 'milwaukee', + 'kyoto', + 'cancun', + 'portland', + 'cordoba', + 'tabriz', + 'novosibirsk', + 'benghazi', + 'memphis', + 'oran', + 'glasgow', + 'gold coast', + 'zhangzhou', + 'libreville', + 'dortmund', + 'vladivostok', + 'irkutsk', + 'duesseldorf', + 'albuquerque', + 'port said', + 'nashville', + 'macau', + 'fresno', + 'hannover', + 'leicester', + 'leipzig', + 'sacramento', + 'santa fe', + 'dresden', + 'tomsk', + 'long beach', + 'staten island', + 'kawaguchi', + 'cardiff', + 'san juan', + 'edinburgh', + 'atlanta', + 'miami', + 'santa marta', + 'oakland', + 'nagasaki', + 'gaza', + 'newcastle', + 'zanzibar', + 'tulsa', + 'kandahar', + 'wichita', + 'new orleans', + 'arlington', + 'cleveland', + 'fukuyama', + 'bakersfield', + 'honolulu', + 'canberra', + 'halifax', + 'nagano', + 'anaheim', + 'raleigh', + 'santa ana', + 'islington', + 'anapolis', + 'saint louis', + 'butuan', + 'pittsburgh', + 'gujrat', + 'anchorage', + 'windsor', + 'strasbourg', + 'belfast', + 'orlando', + 'san pedro', + 'windhoek', + 'chengzhong', + 'wuzhou', + + // india state-capitals + 'agartala', + 'aizawl', + 'amaravati', + 'bangalore', + 'bhopal', + 'bhubaneshwar', + 'chandigarh', + 'chandigarh', + 'chennai', + 'dehradun', + 'dispur', + 'gandhinagar', + 'gangtok', + 'hyderabad', + 'imphal', + 'itanagar', + 'jaipur', + 'kohima', + 'lucknow', + 'mumbai', + 'panaji', + 'patna', + 'raipur', + 'ranchi', + 'shillong', + 'shimla', ] diff --git a/data/places/countries.js b/data/places/countries.js index cff66988d..b97db6099 100644 --- a/data/places/countries.js +++ b/data/places/countries.js @@ -200,6 +200,7 @@ module.exports = [ 'somalia', 'south africa', 'south korea', + 'korea', 'south sudan', 'spain', 'sri lanka', diff --git a/data/places/places.js b/data/places/places.js index f164f148f..b3cb9e6e9 100644 --- a/data/places/places.js +++ b/data/places/places.js @@ -67,4 +67,25 @@ module.exports = [ 'malibu', 'gay village', 'sunderland', + + // places with their own timezones + 'tahiti', + 'chatham', + 'pitcairn', + 'azores', + 'magadan', + 'hovd', + 'vostok', + 'wake island', + 'anadyr', + 'samara', + 'ulaanbaatar', + 'krasnoyarsk', + 'indochina', + 'yakutsk', + 'chamorro', + 'chuuk', + 'samara', + 'kosrae', + 'sakhalin', ] diff --git a/data/places/regions.js b/data/places/regions.js index 4fd75e4c8..f78b1aa04 100644 --- a/data/places/regions.js +++ b/data/places/regions.js @@ -86,15 +86,34 @@ module.exports = [ 'jiangxi', //india - 'rajasthan', - 'madhya', - 'maharashtra', - 'uttar pradesh', - 'kashmir', + 'andhra pradesh', + 'arunachal pradesh', + 'assam', + 'bihar', + 'chhattisgarh', + 'goa', 'gujarat', + 'haryana', + 'himachal pradesh', + 'jharkhand', 'karnataka', + 'kerala', + 'madhya pradesh', + 'maharashtra', 'manipur', + 'meghalaya', + 'mizoram', + 'nagaland', 'odisha', + 'punjab', + 'rajasthan', + 'sikkim', + 'tamil nadu', + 'telangana', + 'tripura', + 'uttar pradesh', + 'uttarakhand', + 'west bengal', //mexico 'aguascalientes', @@ -178,6 +197,30 @@ module.exports = [ 'maranhao', 'santa catarina', - //misc + //russia 'siberia', + 'adygea', + 'altai', + 'bashkortostan', + 'buryatia', + 'dagestan', + 'ingushetia', + 'kabardino', + 'balkaria', + 'kalmykia', + 'karachay', + 'cherkessia', + 'karelia', + 'komi', + 'mari el', + 'mordovia', + 'yakutia', + 'ossetia', + 'tatarstan', + 'tuva', + 'udmurtia', + 'khakassia', + 'chechnya', + 'chuvashia', + 'crimea ', ] diff --git a/package-lock.json b/package-lock.json index 8a1d76c89..52f221b64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,4134 @@ { "name": "compromise", - "version": "13.10.1", - "lockfileVersion": 1, + "version": "13.10.2", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "13.10.2", + "license": "MIT", + "dependencies": { + "efrt-unpack": "2.2.0" + }, + "devDependencies": { + "@babel/core": "7.13.10", + "@babel/preset-env": "7.13.10", + "@rollup/plugin-alias": "3.1.2", + "@rollup/plugin-commonjs": "17.1.0", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "11.2.0", + "amble": "1.3.0", + "codecov": "3.8.1", + "efrt": "2.2.2", + "nyc": "^15.1.0", + "rollup": "2.41.2", + "rollup-plugin-babel": "4.4.0", + "rollup-plugin-filesize-check": "0.0.1", + "rollup-plugin-terser": "7.0.2", + "shelljs": "0.8.4", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.8.tgz", + "integrity": "sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==", + "dev": true + }, + "node_modules/@babel/core": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/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==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/core/node_modules/@babel/highlight": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", + "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.8.tgz", + "integrity": "sha512-qioaRrKHQbn4hkRKDHbnuQ6kAxmmOF+kzKGnIfxPK4j2rckSJCpKzr/SSTlohSCiE3uAQpNDJ9FIh4baeE8W+w==", + "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" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-module-imports": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", + "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", + "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-module-imports": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "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 + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", + "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "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 + }, + "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 + }, + "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==", + "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" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.10.tgz", + "integrity": "sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", + "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.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==", + "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" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/helper-module-imports": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "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", + "globals": "^11.1.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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "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==", + "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-plugin-dynamic-import-node": "^2.3.3" + } + }, + "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==", + "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-plugin-dynamic-import-node": "^2.3.3" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.10.tgz", + "integrity": "sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@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.8", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@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", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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.0", + "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", + "semver": "^6.3.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==", + "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" + } + }, + "node_modules/@babel/runtime": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.9.tgz", + "integrity": "sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/template/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==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/template/node_modules/@babel/highlight": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/traverse/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==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/highlight": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "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, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@rollup/plugin-alias": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.2.tgz", + "integrity": "sha512-wzDnQ6v7CcoRzS0qVwFPrFdYA4Qlr+ookA217Y2Z3DPZE1R8jrFNM3jvGgOf6o6DMjbnQIn5lCIJgHPe1Bt3uw==", + "dev": true, + "dependencies": { + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", + "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", + "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" + } + }, + "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-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz", + "integrity": "sha512-qHjNIKYt5pCcn+5RUBQxK8krhRvf1HnyVgUCcFFcweDS7fhkOLZeYh0mhHK6Ery8/bb9tvN/ubPzmfF0qjDCTA==", + "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" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { + "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" + } + }, + "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" + } + }, + "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, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "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": "14.6.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz", + "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", + "dev": true + }, + "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/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, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "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, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "chokidar": "3.5.1", + "colorette": "1.2.1" + }, + "bin": { + "amble": "bin/amble.js" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "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, + "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", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.0", + "@babel/helper-define-polyfill-provider": "^0.1.5", + "semver": "^6.1.1" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "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", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001196", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001196.tgz", + "integrity": "sha512-CPvObjD3ovWrNBaXlAIGWmg2gQQuJ5YhuciUOjPRox6hIQttu8O+b51dx6VIpIY9ESd2d0Vac1RKpICdG4rGUg==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "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, + "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, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/codecov": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.1.tgz", + "integrity": "sha512-Qm7ltx1pzLPsliZY81jyaQ80dcNR4/JpcX0IHCIWrHBXgseySqbdbYfkdiXd7o/xmzQpGRVCKGYeTrHUpn6Dcw==", + "dev": true, + "dependencies": { + "argv": "0.0.2", + "ignore-walk": "3.0.3", + "js-yaml": "3.14.0", + "teeny-request": "6.0.1", + "urlgrey": "0.4.4" + }, + "bin": { + "codecov": "bin/codecov" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.1", + "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", + "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/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", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "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==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.3", + "semver": "7.0.0" + } + }, + "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, + "bin": { + "semver": "bin/semver.js" + } + }, + "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=", + "dev": true + }, + "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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "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, + "dependencies": { + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "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/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, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "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, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/efrt": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/efrt/-/efrt-2.2.2.tgz", + "integrity": "sha512-eiSoi7hOJByJvSDuHz45WA0nKSM8od5kPiZcbMNlui5xvKMoHSFxnlYlCnfLhalOXof0EESf44B7mM07JFxxAw==", + "dev": true + }, + "node_modules/efrt-unpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/efrt-unpack/-/efrt-unpack-2.2.0.tgz", + "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.680", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.680.tgz", + "integrity": "sha512-XBACJT9RdpdWtoMXQPR8Be3ZtmizWWbxfw8cY2b5feUwiDO3FUl8qo4W2jXoq/WnnA3xBRqafu1XbpczqyUvlA==", + "dev": true + }, + "node_modules/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 + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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 + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.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, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "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/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "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, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/fromentries": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.1.tgz", + "integrity": "sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "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, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "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, + "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, + "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, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "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/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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 + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hasha": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.1.tgz", + "integrity": "sha512-x15jnRSHTi3VmH+oHtVb9kgU/HuKOK8mjK8iCL3dPQXh4YJlUb9YSI8ZLiiqLAIvY2wuDIlZYZppy8vB2XISkQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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 + }, + "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, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "dev": true, + "dependencies": { + "agent-base": "5", + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/https-proxy-agent/node_modules/agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "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", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "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, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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 + }, + "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", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-reference": { + "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": "*" + } + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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 + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "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 + }, + "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 + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "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, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "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.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, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", + "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "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, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "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, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "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/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", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/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 + }, + "node_modules/magic-string": { + "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, + "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, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-dir/node_modules/semver": { + "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.js" + } + }, + "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/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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/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/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "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": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "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, + "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, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "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 + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "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" + } + }, + "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/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, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "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": ">=8" + } + }, + "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=", + "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, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "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=", + "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=", + "dev": true, + "dependencies": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "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, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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 + }, + "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==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + }, + "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==", + "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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "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==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "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" + } + }, + "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, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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 + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "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/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "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, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "2.41.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.2.tgz", + "integrity": "sha512-6u8fJJXJx6fmvKrAC9DHYZgONvSkz8S9b/VFBjoQ6dkKdHyPpPbpqiNl2Bao9XBzDHpq672X6sGZ9G1ZBqAHMg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "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-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-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, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "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", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "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.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, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "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, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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 + }, + "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, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "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, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "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" + }, + "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_modules/tape": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "object-inspect": "^1.9.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", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/inherits": { + "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/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, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/teeny-request": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.1.tgz", + "integrity": "sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^4.0.0", + "node-fetch": "^2.2.0", + "stream-events": "^1.0.5", + "uuid": "^3.3.2" + } + }, + "node_modules/terser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.0.tgz", + "integrity": "sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser/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, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "http://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, + "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, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "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, + "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, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, + "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==", + "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==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "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==", + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "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==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "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, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "node_modules/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 + }, + "node_modules/which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "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", + "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, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "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, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.10.4", @@ -20,17 +4146,17 @@ "dev": true }, "@babel/core": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.8.tgz", - "integrity": "sha512-oYapIySGw1zGhEFRd6lzWNLWFX2s5dA/jm+Pw/+59ZdXtjyIuwlXbrId22Md0rgZVop+aVoqow2riXhBLNyuQg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-compilation-targets": "^7.13.8", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.0", - "@babel/parser": "^7.13.4", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", "@babel/template": "^7.12.13", "@babel/traverse": "^7.13.0", "@babel/types": "^7.13.0", @@ -52,12 +4178,6 @@ "@babel/highlight": "^7.12.13" } }, - "@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 - }, "@babel/highlight": { "version": "7.13.8", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", @@ -68,17 +4188,6 @@ "chalk": "^2.0.0", "js-tokens": "^4.0.0" } - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } } } }, @@ -91,25 +4200,6 @@ "@babel/types": "^7.13.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-annotate-as-pure": { @@ -119,25 +4209,6 @@ "dev": true, "requires": { "@babel/types": "^7.12.13" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -148,31 +4219,12 @@ "requires": { "@babel/helper-explode-assignable-expression": "^7.12.13", "@babel/types": "^7.12.13" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-compilation-targets": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz", - "integrity": "sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", + "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", "dev": true, "requires": { "@babel/compat-data": "^7.13.8", @@ -228,23 +4280,6 @@ "requires": { "@babel/types": "^7.12.13" } - }, - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } } } }, @@ -255,25 +4290,6 @@ "dev": true, "requires": { "@babel/types": "^7.13.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-function-name": { @@ -285,25 +4301,6 @@ "@babel/helper-get-function-arity": "^7.12.13", "@babel/template": "^7.12.13", "@babel/types": "^7.12.13" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-get-function-arity": { @@ -313,25 +4310,6 @@ "dev": true, "requires": { "@babel/types": "^7.12.13" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-hoist-variables": { @@ -342,25 +4320,6 @@ "requires": { "@babel/traverse": "^7.13.0", "@babel/types": "^7.13.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-member-expression-to-functions": { @@ -370,25 +4329,6 @@ "dev": true, "requires": { "@babel/types": "^7.13.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-module-imports": { @@ -425,23 +4365,6 @@ "requires": { "@babel/types": "^7.12.13" } - }, - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } } } }, @@ -452,25 +4375,6 @@ "dev": true, "requires": { "@babel/types": "^7.12.13" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-plugin-utils": { @@ -488,25 +4392,6 @@ "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-wrap-function": "^7.13.0", "@babel/types": "^7.13.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-replace-supers": { @@ -519,25 +4404,6 @@ "@babel/helper-optimise-call-expression": "^7.12.13", "@babel/traverse": "^7.13.0", "@babel/types": "^7.13.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-simple-access": { @@ -547,25 +4413,6 @@ "dev": true, "requires": { "@babel/types": "^7.12.13" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -575,25 +4422,6 @@ "dev": true, "requires": { "@babel/types": "^7.12.1" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-split-export-declaration": { @@ -603,31 +4431,12 @@ "dev": true, "requires": { "@babel/types": "^7.12.13" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "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 }, "@babel/helper-validator-option": { @@ -646,55 +4455,17 @@ "@babel/template": "^7.12.13", "@babel/traverse": "^7.13.0", "@babel/types": "^7.13.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helpers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.0.tgz", - "integrity": "sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "dev": true, "requires": { "@babel/template": "^7.12.13", "@babel/traverse": "^7.13.0", "@babel/types": "^7.13.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/highlight": { @@ -706,20 +4477,12 @@ "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - } } }, "@babel/parser": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.9.tgz", - "integrity": "sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.10.tgz", + "integrity": "sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -993,23 +4756,6 @@ "requires": { "@babel/types": "^7.12.13" } - }, - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } } } }, @@ -1164,14 +4910,6 @@ "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-validator-identifier": "^7.12.11", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@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 - } } }, "@babel/plugin-transform-modules-umd": { @@ -1314,13 +5052,13 @@ } }, "@babel/preset-env": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.9.tgz", - "integrity": "sha512-mcsHUlh2rIhViqMG823JpscLMesRt3QbMsv1+jhopXEb3W2wXvQ9QoiOlZI9ZbR3XqPtaFpZwEZKYqGJnGMZTQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.10.tgz", + "integrity": "sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ==", "dev": true, "requires": { "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.10", "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-validator-option": "^7.12.17", "@babel/plugin-proposal-async-generator-functions": "^7.13.8", @@ -1387,25 +5125,6 @@ "babel-plugin-polyfill-regenerator": "^0.1.2", "core-js-compat": "^3.9.0", "semver": "^6.3.0" - }, - "dependencies": { - "@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 - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/preset-modules": { @@ -1450,12 +5169,6 @@ "@babel/highlight": "^7.12.13" } }, - "@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 - }, "@babel/highlight": { "version": "7.13.8", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", @@ -1466,17 +5179,6 @@ "chalk": "^2.0.0", "js-tokens": "^4.0.0" } - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } } } }, @@ -1506,12 +5208,6 @@ "@babel/highlight": "^7.12.13" } }, - "@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 - }, "@babel/highlight": { "version": "7.13.8", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", @@ -1522,28 +5218,17 @@ "chalk": "^2.0.0", "js-tokens": "^4.0.0" } - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } } } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -3343,9 +7028,9 @@ } }, "rollup": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.40.0.tgz", - "integrity": "sha512-WiOGAPbXoHu+TOz6hyYUxIksOwsY/21TRWoO593jgYt8mvYafYqQl+axaA8y1z2HFazNUUrsMSjahV2A6/2R9A==", + "version": "2.41.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.2.tgz", + "integrity": "sha512-6u8fJJXJx6fmvKrAC9DHYZgONvSkz8S9b/VFBjoQ6dkKdHyPpPbpqiNl2Bao9XBzDHpq672X6sGZ9G1ZBqAHMg==", "dev": true, "requires": { "fsevents": "~2.3.1" @@ -3540,6 +7225,15 @@ "stubs": "^3.0.0" } }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -3582,15 +7276,6 @@ "define-properties": "^1.1.3" } }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", diff --git a/package.json b/package.json index 8f1ce38c4..b81af0ba4 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "Spencer Kelly (http://spencermounta.in)", "name": "compromise", "description": "modest natural language processing", - "version": "13.10.1", + "version": "13.10.2", "main": "./builds/compromise.js", "unpkg": "./builds/compromise.min.js", "module": "./builds/compromise.mjs", @@ -70,8 +70,8 @@ "efrt-unpack": "2.2.0" }, "devDependencies": { - "@babel/core": "7.13.8", - "@babel/preset-env": "7.13.9", + "@babel/core": "7.13.10", + "@babel/preset-env": "7.13.10", "@rollup/plugin-alias": "3.1.2", "@rollup/plugin-commonjs": "17.1.0", "@rollup/plugin-json": "4.1.0", @@ -80,7 +80,7 @@ "codecov": "3.8.1", "efrt": "2.2.2", "nyc": "^15.1.0", - "rollup": "2.40.0", + "rollup": "2.41.2", "rollup-plugin-babel": "4.4.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-terser": "7.0.2", diff --git a/plugins/dates/builds/compromise-dates.js b/plugins/dates/builds/compromise-dates.js index 0ec61ec78..d47dad7db 100644 --- a/plugins/dates/builds/compromise-dates.js +++ b/plugins/dates/builds/compromise-dates.js @@ -1,4 +1,4 @@ -/* compromise-dates 1.4.3 MIT */ +/* compromise-dates 1.5.3 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -80,7 +80,7 @@ if (typeof Proxy === "function") return true; try { - Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; @@ -233,7 +233,7 @@ //june the 5th date.match('#Date the? #Ordinal').tag('Date', 'correction'); //last month - date.match("".concat(thisNext, " #Date")).tag('Date', 'thisNext'); //by 5 March + date.match("".concat(thisNext, " #Date")).tag('Date', 'thisNext-date'); //by 5 March date.match('due? (by|before|after|until) #Date').tag('Date', 'by'); //next feb @@ -301,11 +301,10 @@ //by 6pm time.match('(by|before|after|at|@|about) #Time').tag('Time', 'preposition-time'); //7 7pm // time.match('#Cardinal #Time').not('#Year').tag('Time', 'value-time') - //2pm est - - time.match('#Time [(eastern|pacific|central|mountain)]', 0).tag('Date', 'timezone'); //6pm est - - time.match('#Time [(est|pst|gmt)]', 0).tag('Date', 'timezone abbr'); + // //2pm est + // time.match('#Time [(eastern|pacific|central|mountain)]', 0).tag('Date', 'timezone') + // //6pm est + // time.match('#Time [(est|pst|gmt)]', 0).tag('Date', 'timezone abbr') } //'2020' bare input @@ -445,15 +444,9 @@ doc.match('#Date [at #Cardinal]', 0).notIf('#Year').tag('Time', here$2); // half an hour - doc.match('half an (hour|minute|second)').tag('Date', here$2); //eastern daylight time - - doc.match('#Noun (standard|daylight|central|mountain)? time').tag('Timezone', here$2); //utc+5 + doc.match('half an (hour|minute|second)').tag('Date', here$2); // in eastern time - doc.match('/^utc[+-][0-9]/').tag('Timezone', here$2); - doc.match('/^gmt[+-][0-9]/').tag('Timezone', here$2); - doc.match('(in|for|by|near|at) #Timezone').tag('Timezone', here$2); // 2pm eastern - - doc.match('#Time [(eastern|mountain|pacific|central)]', 0).tag('Timezone', here$2); + doc.match('(in|for|by|near|at) #Timezone').tag('Timezone', here$2); } // around four thirty @@ -502,6 +495,28 @@ var _06Intervals = tagIntervals; + // timezone abbreviations + // (from spencermountain/timezone-soft) + var zones = ['act', 'aft', 'akst', 'anat', 'art', 'azot', 'azt', 'bnt', 'bot', 'bt', 'cast', 'cat', 'cct', 'chast', 'chut', 'ckt', 'cvt', 'cxt', 'davt', 'eat', 'ect', 'fjt', 'fkst', 'fnt', 'gamt', 'get', 'gft', 'gilt', 'gyt', 'hast', 'hncu', 'hneg', 'hnnomx', 'hnog', 'hnpm', 'hnpmx', 'hntn', 'hovt', 'iot', 'irkt', 'jst', 'kgt', 'kost', 'lint', 'magt', 'mart', 'mawt', 'mmt', 'nct', 'nft', 'novt', 'npt', 'nrt', 'nut', 'nzst', 'omst', 'pet', 'pett', 'phot', 'phst', 'pont', 'pwt', 'ret', 'sakt', 'samt', 'sbt', 'sct', 'sret', 'srt', 'syot', 'taht', 'tft', 'tjt', 'tkt', 'tlt', 'tmt', 'tot', 'tvt', 'ulat', 'vut', 'wakt', 'wat', 'wet', 'wft', 'wit', 'wst', 'yekt'].reduce(function (h, str) { + h[str] = true; + return h; + }, {}); + + var tagTz = function tagTz(doc) { + // 4pm PST + var m = doc.match('#Time [#Acronym]', 0); + + if (m.found) { + var str = m.text('reduced'); + + if (zones[str] === true) { + m.tag('Timezone', 'tz-abbr'); + } + } + }; + + var _07Timezone = tagTz; + var here = 'fix-tagger'; // var fixUp = function fixUp(doc) { @@ -532,8 +547,7 @@ // .unTag('Date') // .lastTerm() // .tag('Date', here) - - d.match("(this|last|next) #Date ".concat(knownDate, "$")).unTag('Date').lastTerm().tag('Date', 'this month yesterday'); + // d.match(`(this|last|next) #Date ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'this month yesterday') } //tomorrow on 5 @@ -594,13 +608,17 @@ return doc; }; - var _07Fixup = fixUp; + var _08Fixup = fixUp; - var methods$3 = [_00Basic, _01Values, _02Dates, _03Sections, _04Time, _05Shifts, _06Intervals, _07Fixup]; // normalizations to run before tagger + var methods$3 = [_00Basic, _01Values, _02Dates, _03Sections, _04Time, _05Shifts, _06Intervals, _07Timezone, _08Fixup]; // normalizations to run before tagger var normalize$1 = function normalize(doc) { // turn '20mins' into '20 mins' - doc.numbers().normalize(); // this is sorta problematic + if (typeof doc.numbers === 'function') { + doc.numbers().normalize(); + } else { + console.warn("Warning: compromise-numbers plugin is not loaded.\n You should load this plugin \n - https://bit.ly/3t8RfFG"); + } return doc; }; // run each of the taggers @@ -639,11 +657,6 @@ Holiday: { isA: ['Date', 'Noun'] }, - // 'PST' - Timezone: { - isA: ['Date', 'Noun'], - notA: ['Adjective', 'DateShift'] - }, // 'two weeks before' DateShift: { isA: ['Date'], @@ -658,7 +671,7 @@ return fn(module, module.exports), module.exports; } - /* spencermountain/spacetime 6.13.0 Apache 2.0 */ + /* spencermountain/spacetime 6.13.1 Apache 2.0 */ var spacetime = createCommonjsModule(function (module, exports) { (function (global, factory) { module.exports = factory() ; @@ -4074,7 +4087,12 @@ date: function date(num) { if (num !== undefined) { var s = this.clone(); - s.epoch = set.date(s, num); + num = parseInt(num, 10); + + if (num) { + s.epoch = set.date(s, num); + } + return s; } @@ -5026,7 +5044,7 @@ }; var whereIts_1 = whereIts; - var _version = '6.13.0'; + var _version = '6.13.1'; var main = function main(input, tz, options) { return new spacetime(input, tz, options); @@ -5496,23 +5514,33 @@ }, { key: "start", value: function start() { - this.d = this.d.startOf(this.unit); - + // do we have a custom day-start? if (this.context.dayStart) { - this.d = this.d.time(this.context.dayStart); + var dayStart = this.d.time(this.context.dayStart); + + if (dayStart.isBefore(this.d)) { + this.d = dayStart; + return this; + } } + this.d = this.d.startOf(this.unit); return this; } }, { key: "end", value: function end() { - this.d = this.d.endOf(this.unit); - + // do we have a custom day-end? if (this.context.dayEnd) { - this.d = this.d.time(this.context.dayEnd); + var dayEnd = this.d.time(this.context.dayEnd); + + if (dayEnd.isAfter(this.d)) { + this.d = dayEnd; + return this; + } } + this.d = this.d.endOf(this.unit); return this; } }, { @@ -5521,6 +5549,21 @@ var diff = this.d.diff(this.d.endOf(this.unit)); var minutes = Math.round(diff.minutes / 2); this.d = this.d.add(minutes, 'minutes'); + return this; + } // move it to 3/4s through + + }, { + key: "beforeEnd", + value: function beforeEnd() { + var diff = this.d.startOf(this.unit).diff(this.d.endOf(this.unit)); + var mins = Math.round(diff.minutes / 4); + this.d = this.d.endOf(this.unit); + this.d = this.d.minus(mins, 'minutes'); + + if (this.context.dayStart) { + this.d = this.d.time(this.context.dayStart); + } + return this; } // the millescond before @@ -5587,6 +5630,20 @@ return _this; } + _createClass(Day, [{ + key: "middle", + value: function middle() { + this.d = this.d.time('10am'); + return this; + } + }, { + key: "beforeEnd", + value: function beforeEnd() { + this.d = this.d.time('2pm'); + return this; + } + }]); + return Day; }(Unit_1); // like 'feb 2' @@ -5639,7 +5696,7 @@ _classCallCheck(this, WeekDay); _this3 = _super3.call(this, input, unit, context); - _this3.unit = 'week'; // is the input just a weekday? + _this3.unit = 'day'; // is the input just a weekday? if (typeof input === 'string') { _this3.d = spacetime(context.today, context.timezone); @@ -5664,21 +5721,8 @@ _createClass(WeekDay, [{ key: "clone", value: function clone() { - //overloaded method return new WeekDay(this.d, this.unit, this.context); } - }, { - key: "end", - value: function end() { - //overloaded method - this.d = this.d.endOf('day'); - - if (this.context.dayEnd) { - this.d = this.d.time(this.context.dayEnd); - } - - return this; - } }, { key: "next", value: function next() { @@ -5999,6 +6043,27 @@ return _this; } + _createClass(Week, [{ + key: "clone", + value: function clone() { + return new Week(this.d, this.unit, this.context); + } + }, { + key: "middle", + value: function middle() { + this.d = this.d.add(2, 'days'); //wednesday + + return this; + } // move it to 3/4s through + + }, { + key: "beforeEnd", + value: function beforeEnd() { + this.d = this.d.day('friday'); + return this; + } + }]); + return Week; }(Unit_1); //may need some work @@ -7654,16 +7719,13 @@ if (shift) { - unit.applyShift(shift); // if (shift.hour || shift.minute || shift.second) { - // console.log(shift) - // unit = new Hour(unit.d, null, unit.context) - // } + unit.applyShift(shift); } // wednesday next week if (weekDay && unit.unit !== 'day') { unit.applyWeekDay(weekDay); - unit = new WeekDay(unit.d, null, unit.context); // console.log(rel, unit.d.format()) + unit = new WeekDay(unit.d, null, unit.context); } // this/next/last @@ -8018,41 +8080,7 @@ return null; } - }, // { - // // 'A through B' (inclusive end) - // match: 'from? [*] (through|thru) [*]', - // parse: (m, context) => { - // let from = m.groups('a') - // let to = m.groups('b') - // from = parseDate(from, context) - // to = parseDate(to, context) - // if (from && to) { - // return { - // start: from, - // end: to.end(), - // } - // } - // return null - // }, - // }, - // { - // // 'A until B' (not inclusive end) - // match: 'from? [*] (to|until|upto) [*]', - // parse: (m, context) => { - // let from = m.groups('a') - // let to = m.groups('b') - // from = parseDate(from, context) - // to = parseDate(to, context) - // if (from && to) { - // return { - // start: from, - // end: to.end(), - // } - // } - // return null - // }, - // }, - { + }, { // 'before june' match: '^due? (by|before) [*]', group: 0, @@ -8127,13 +8155,73 @@ }; } + return null; + } + }, { + // 'middle of' + match: '^(middle|center|midpoint) of [*]', + group: 0, + parse: function parse(m, context) { + var unit = parse_1$2(m, context); + var start = unit.clone().middle(); + var end = unit.beforeEnd(); + + if (unit) { + return { + start: start, + end: end + }; + } + + return null; + } + }, { + // 'tuesday after 5pm' + match: '* after #Time+$', + parse: function parse(m, context) { + var unit = parse_1$2(m, context); + var start = unit.clone(); + var end = unit.end(); + + if (unit) { + return { + start: start, + end: end + }; + } + + return null; + } + }, { + // 'tuesday before noon' + match: '* before #Time+$', + parse: function parse(m, context) { + var unit = parse_1$2(m, context); + var end = unit.clone(); + var start = unit.start(); + + if (unit) { + return { + start: start, + end: end + }; + } + return null; } }]; var parseRange = function parseRange(doc, context) { // parse-out 'every week ..' - var interval = intervals(doc) || {}; // try each template in order + var interval = intervals(doc) || {}; // if it's *only* an interval response + + if (doc.found === false) { + return Object.assign({}, interval, { + start: null, + end: null + }); + } // try each template in order + for (var i = 0; i < ranges.length; i += 1) { var fmt = ranges[i]; @@ -8161,13 +8249,21 @@ var unit = parse_1$2(doc, context); if (unit) { + var end = unit.clone().end(); res = { start: unit, - end: unit.clone().end() + end: end }; } - var combined = Object.assign({}, interval, res); + var combined = Object.assign({}, interval, res); // ensure start is not after end + // console.log(combined) + + if (combined.start && combined.end && combined.start.d.epoch > combined.end.d.epoch) { + // console.warn('Warning: Start date is after End date') + combined.start = combined.start.start(); // combined.end = combined.start.clone() + } + return combined; }; @@ -8223,6 +8319,7 @@ var normalize_1 = normalize; var maxDate = 8640000000000000; + var max_loops = 500; var shouldPick = function shouldPick(s, byDay) { if (byDay && byDay[s.dayName()] !== true) { @@ -8236,7 +8333,13 @@ var generateDates = function generateDates(result, context) { var list = []; var max_count = context.max_repeat || 12; - var s = spacetime(result.start || context.today, context.timezone); // should we stop at the end date? + var s = spacetime(result.start || context.today, context.timezone); + s = s.startOf('day'); + + if (context.dayStart) { + s = s.time(context.dayStart); + } // should we stop at the end date? + var end = spacetime(result.end, context.timezone); var toAdd = Object.keys(result.repeat.interval); @@ -8256,7 +8359,11 @@ var loops = 0; // TODO: learn how to write better software. - while (list.length < max_count && s.epoch < end.epoch) { + for (var i = 0; i < max_loops; i += 1) { + if (list.length >= max_count || s.epoch >= end.epoch) { + break; + } + if (shouldPick(s, byDay)) { list.push(s.iso()); } @@ -8273,7 +8380,14 @@ } } - result.repeat.generated = list; + result.repeat.generated = list; // if we got an interval, but not a start/end + + if (!result.start && result.repeat.generated && result.repeat.generated.length > 1) { + var arr = result.repeat.generated; + result.start = arr[0]; + result.end = arr[arr.length - 1]; + } + return result; }; @@ -8767,6 +8881,13 @@ if (m.found) { dates = dates.splitOn('#WeekDay'); dates = dates.not('^and'); + } // '5 june, 10 june' + + + m = dates.match('[#Value #Month] #Value #Month', 0); + + if (m.found) { + dates = dates.splitAfter(m); } // 'june 5th, june 10th' @@ -8788,13 +8909,30 @@ if (m.found) { dates = dates.not(m); - } // // 'january, february' - // m = dates.match('^[#Month] (and|or)? #Month$', 0) - // if (m.found) { - // dates = dates.splitAfter(m) - // dates = dates.not('^(and|or)') - // } + } // 'one saturday' + + + dates = dates.notIf('^one (#WeekDay|#Month)$'); // next week tomorrow + + m = dates.match('(this|next) #Duration [(today|tomorrow|yesterday)]', 0); + + if (m.found) { + dates = dates.splitBefore(m); + } // tomorrow 15 march + + + m = dates.match('[(today|tomorrow|yesterday)] #Value #Month', 0); + + if (m.found) { + dates = dates.splitAfter(m); + } // tomorrow yesterday + + m = dates.match('[(today|tomorrow|yesterday)] (today|tomorrow|yesterday)', 0); + + if (m.found) { + dates = dates.splitAfter(m); + } return dates; }; @@ -8849,7 +8987,12 @@ n = null; } - context = Object.assign({}, context, opts); + context = Object.assign({}, context, opts); // use the user's timezone, by default + + if (context.timezone === undefined) { + context.timezone = spacetime().timezone().name; + } + var dates = find(this); if (typeof n === 'number') { diff --git a/plugins/dates/builds/compromise-dates.js.map b/plugins/dates/builds/compromise-dates.js.map index d49a672dd..857bd4832 100644 --- a/plugins/dates/builds/compromise-dates.js.map +++ b/plugins/dates/builds/compromise-dates.js.map @@ -1 +1 @@ -{"version":3,"file":"compromise-dates.js","sources":["../src/01-tagger/00-basic.js","../src/01-tagger/01-values.js","../src/01-tagger/02-dates.js","../src/01-tagger/03-sections.js","../src/01-tagger/04-time.js","../src/01-tagger/05-shifts.js","../src/01-tagger/06-intervals.js","../src/01-tagger/07-fixup.js","../src/01-tagger/index.js","../src/data/_tags.js","../node_modules/spacetime/builds/spacetime.js","../src/data/_timezones.js","../src/data/words/dates.js","../src/data/words/durations.js","../src/data/words/holidays.js","../src/data/words/times.js","../src/data/words/index.js","../src/parseDate/units/Unit.js","../src/parseDate/units/_day.js","../src/parseDate/units/_year.js","../src/parseDate/units/_week.js","../src/parseDate/units/_time.js","../src/parseDate/units/index.js","../src/parseDate/01-tokenize/01-shift.js","../src/parseDate/01-tokenize/02-counter.js","../src/parseDate/01-tokenize/03-time.js","../src/parseDate/01-tokenize/04-relative.js","../src/parseDate/01-tokenize/05-section.js","../src/parseDate/01-tokenize/06-timezone.js","../src/parseDate/01-tokenize/07-weekday.js","../src/parseDate/02-parse/01-today.js","../node_modules/spacetime-holiday/builds/spacetime-holiday.js","../src/parseDate/02-parse/02-holidays.js","../src/parseDate/02-parse/03-next-last.js","../src/parseDate/02-parse/04-yearly.js","../src/parseDate/02-parse/05-explicit.js","../src/parseDate/03-transform/addCounter.js","../src/parseDate/parse.js","../src/02-ranges/intervals.js","../src/02-ranges/ranges.js","../src/02-ranges/index.js","../src/normalize.js","../src/generate.js","../src/parse.js","../src/data/_abbrevs.js","../src/methods.js","../src/durations/parse.js","../src/durations/index.js","../src/times/parse.js","../src/times/index.js","../src/find.js","../src/index.js"],"sourcesContent":["//ambiguous 'may' and 'march'\nconst preps = '(in|by|before|during|on|until|after|of|within|all)' //6\nconst thisNext = '(last|next|this|previous|current|upcoming|coming)' //2\nconst sections = '(start|end|middle|starting|ending|midpoint|beginning)' //2\nconst seasons = '(spring|summer|winter|fall|autumn)'\n\n//ensure a year is approximately typical for common years\n//please change in one thousand years\nconst tagYear = (m, reason) => {\n if (m.found !== true) {\n return\n }\n m.forEach((p) => {\n let str = p.text('reduced')\n let num = parseInt(str, 10)\n if (num && num > 1000 && num < 3000) {\n p.tag('Year', reason)\n }\n })\n}\n//same, but for less-confident values\nconst tagYearSafe = (m, reason) => {\n if (m.found !== true) {\n return\n }\n m.forEach((p) => {\n let str = p.text('reduced')\n let num = parseInt(str, 10)\n if (num && num > 1900 && num < 2030) {\n p.tag('Year', reason)\n }\n })\n}\n\nconst tagDates = function (doc) {\n // in the evening\n doc.match('in the (night|evening|morning|afternoon|day|daytime)').tag('Time', 'in-the-night')\n // 8 pm\n doc.match('(#Value|#Time) (am|pm)').tag('Time', 'value-ampm')\n // 22-aug\n // doc.match('/^[0-9]{2}-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov)/').tag('Date', '20-jan')\n // 2012-06\n doc.match('/^[0-9]{4}-[0-9]{2}$/').tag('Date', '2012-06')\n\n // misc weekday words\n doc.match('(tue|thu)').tag('WeekDay', 'misc-weekday')\n\n //months:\n let month = doc.if('#Month')\n if (month.found === true) {\n //June 5-7th\n month.match(`#Month #Date+`).tag('Date', 'correction-numberRange')\n //5th of March\n month.match('#Value of #Month').tag('Date', 'value-of-month')\n //5 March\n month.match('#Cardinal #Month').tag('Date', 'cardinal-month')\n //march 5 to 7\n month.match('#Month #Value to #Value').tag('Date', 'value-to-value')\n //march the 12th\n month.match('#Month the #Value').tag('Date', 'month-the-value')\n }\n\n //months:\n let val = doc.if('#Value')\n if (val.found === true) {\n //june 7\n val.match('(#WeekDay|#Month) #Value').ifNo('#Money').tag('Date', 'date-value')\n\n //7 june\n val.match('#Value (#WeekDay|#Month)').ifNo('#Money').tag('Date', 'value-date')\n\n //may twenty five\n val.match('#TextValue #TextValue').if('#Date').tag('#Date', 'textvalue-date')\n\n //two thursdays back\n val.match('#Value (#WeekDay|#Duration) back').tag('#Date', '3-back')\n\n //eg 'year'\n let duration = val.if('#Duration')\n if (duration.found === true) {\n //for 4 months\n duration.match('for #Value #Duration').tag('Date', 'for-x-duration')\n //two days before\n duration.match('#Value #Duration #Conjunction').tag('Date', 'val-duration-conjunction')\n //for four days\n duration.match(`${preps}? #Value #Duration`).tag('Date', 'value-duration')\n //two years old\n duration.match('#Value #Duration old').unTag('Date', 'val-years-old')\n }\n }\n\n //seasons\n let season = doc.if(seasons)\n if (season.found === true) {\n season.match(`${preps}? ${thisNext} ${seasons}`).tag('Date', 'thisNext-season')\n season.match(`the? ${sections} of ${seasons}`).tag('Date', 'section-season')\n season.match(`${seasons} ${preps}? #Cardinal`).tag('Date', 'season-year')\n }\n\n //rest-dates\n let date = doc.if('#Date')\n if (date.found === true) {\n //june the 5th\n date.match('#Date the? #Ordinal').tag('Date', 'correction')\n //last month\n date.match(`${thisNext} #Date`).tag('Date', 'thisNext')\n //by 5 March\n date.match('due? (by|before|after|until) #Date').tag('Date', 'by')\n //next feb\n date.match('(last|next|this|previous|current|upcoming|coming|the) #Date').tag('Date', 'next-feb')\n //start of june\n date.match(`the? ${sections} of #Date`).tag('Date', 'section-of')\n //fifth week in 1998\n date.match('#Ordinal #Duration in #Date').tag('Date', 'duration-in')\n //early in june\n date.match('(early|late) (at|in)? the? #Date').tag('Time', 'early-evening')\n //tomorrow before 3\n date.match('#Date (by|before|after|at|@|about) #Cardinal').not('^#Date').tag('Time', 'date-before-Cardinal')\n //saturday am\n date.match('#Date [(am|pm)]', 0).unTag('Verb').unTag('Copula').tag('Time', 'date-am')\n //feb to june\n date.match('#Date (#Preposition|to) #Date').ifNo('#Duration').tag('Date', 'date-prep-date')\n //2nd quarter of 2019\n // date.match('#Date of #Date').tag('Date', 'date-of-date')\n }\n\n //year/cardinal tagging\n let cardinal = doc.if('#Cardinal')\n if (cardinal.found === true) {\n let v = cardinal.match(`#Date #Value [#Cardinal]`, 0)\n tagYear(v, 'date-value-year')\n //scoops up a bunch\n v = cardinal.match(`#Date [#Cardinal]`, 0)\n tagYearSafe(v, 'date-year')\n //middle of 1999\n v = cardinal.match(`${sections} of [#Cardinal]`)\n tagYearSafe(v, 'section-year')\n //feb 8 2018\n v = cardinal.match(`#Month #Value [#Cardinal]`, 0)\n tagYear(v, 'month-value-year')\n //feb 8 to 10th 2018\n v = cardinal.match(`#Month #Value to #Value [#Cardinal]`, 0)\n tagYear(v, 'month-range-year')\n //in 1998\n v = cardinal.match(`(in|of|by|during|before|starting|ending|for|year|since) [#Cardinal]`, 0)\n tagYear(v, 'in-year-1')\n //q2 2009\n v = cardinal.match('(q1|q2|q3|q4) [#Cardinal]', 0)\n tagYear(v, 'in-year-2')\n //2nd quarter 2009\n v = cardinal.match('#Ordinal quarter of? [#Cardinal]', 0)\n tagYear(v, 'in-year-3')\n //in the year 1998\n v = cardinal.match('the year [#Cardinal]', 0)\n tagYear(v, 'in-year-4')\n //it was 1998\n v = cardinal.match('it (is|was) [#Cardinal]', 0)\n tagYearSafe(v, 'in-year-5')\n // re-tag this part\n cardinal.match(`${sections} of #Year`).tag('Date')\n //between 1999 and 1998\n let m = cardinal.match('between [#Cardinal] and [#Cardinal]')\n tagYear(m.groups('0'), 'between-year-and-year-1')\n tagYear(m.groups('1'), 'between-year-and-year-2')\n }\n\n let time = doc.if('#Time')\n if (time.found === true) {\n //by 6pm\n time.match('(by|before|after|at|@|about) #Time').tag('Time', 'preposition-time')\n //7 7pm\n // time.match('#Cardinal #Time').not('#Year').tag('Time', 'value-time')\n //2pm est\n time.match('#Time [(eastern|pacific|central|mountain)]', 0).tag('Date', 'timezone')\n //6pm est\n time.match('#Time [(est|pst|gmt)]', 0).tag('Date', 'timezone abbr')\n }\n //'2020' bare input\n let m = doc.match('^/^20[012][0-9]$/$')\n tagYearSafe(m, '2020-ish')\n\n // in 20mins\n doc.match('(in|after) /^[0-9]+(min|sec|wk)s?/').tag('Date', 'shift-units')\n //tuesday night\n doc.match('#Date [(now|night|sometime)]', 0).tag('Time', 'date-now')\n // 4 days from now\n doc.match('(from|starting|until|by) now').tag('Date', 'for-now')\n // every night\n doc.match('(each|every) night').tag('Date', 'for-now')\n return doc\n}\nmodule.exports = tagDates\n","const here = 'date-values'\n//\nconst values = function (doc) {\n // a year ago\n if (!doc.has('once [a] #Duration')) {\n doc.match('[a] #Duration', 0).replaceWith('1').tag('Cardinal', here)\n }\n if (doc.has('#Value')) {\n //june 5 to 7th\n doc.match('#Month #Value to #Value of? #Year?').tag('Date', here)\n //5 to 7th june\n doc.match('#Value to #Value of? #Month #Year?').tag('Date', here)\n //third week of may\n doc.match('#Value #Duration of #Date').tag('Date', here)\n //two days after\n doc.match('#Value+ #Duration (after|before|into|later|afterwards|ago)?').tag('Date', here)\n //two days\n doc.match('#Value #Date').tag('Date', here)\n //june 5th\n doc.match('#Date #Value').tag('Date', here)\n //tuesday at 5\n doc.match('#Date #Preposition #Value').tag('Date', here)\n //tomorrow before 3\n doc.match('#Date (after|before|during|on|in) #Value').tag('Date', here)\n //a year and a half\n doc.match('#Value (year|month|week|day) and a half').tag('Date', here)\n //5 and a half years\n doc.match('#Value and a half (years|months|weeks|days)').tag('Date', here)\n //on the fifth\n doc.match('on the #Ordinal').tag('Date', here)\n }\n return doc\n}\nmodule.exports = values\n","const here = 'date-tagger'\n//\nconst dateTagger = function (doc) {\n doc.match('(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)').match('#Noun').tag('Season', here)\n doc.match('(q1|q2|q3|q4)').tag('FinancialQuarter', here)\n doc.match('(this|next|last|current) quarter').tag('FinancialQuarter', here)\n doc.match('(this|next|last|current) season').tag('Season', here)\n\n if (doc.has('#Date')) {\n //friday to sunday\n doc.match('#Date #Preposition #Date').tag('Date', here)\n //once a day..\n doc.match('(once|twice) (a|an|each) #Date').tag('Date', here)\n //tuesday\n doc.match('#Date+').tag('Date', here)\n //by June\n doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', 'until-june')\n //a year after..\n doc.match('a #Duration').tag('Date', here)\n //between x and y\n doc.match('(between|from) #Date').tag('Date', here)\n doc.match('(to|until|upto) #Date').tag('Date', here)\n doc.match('#Date and #Date').tag('Date', here)\n //during this june\n doc.match('(by|until|after|before|during|on|in|following|since) (next|this|last)? (#Date|#Date)').tag('Date', here)\n //day after next\n doc.match('the? #Date after next one?').tag('Date', here)\n //approximately...\n doc.match('(about|approx|approximately|around) #Date').tag('Date', here)\n }\n return doc\n}\nmodule.exports = dateTagger\n","const here = 'section-tagger'\n//\nconst sectionTagger = function (doc) {\n if (doc.has('#Date')) {\n // //next september\n doc.match('this? (last|next|past|this|previous|current|upcoming|coming|the) #Date').tag('Date', here)\n //starting this june\n doc.match('(starting|beginning|ending) #Date').tag('Date', here)\n //start of june\n doc.match('the? (start|end|middle|beginning) of (last|next|this|the) (#Date|#Date)').tag('Date', here)\n //this coming june\n doc.match('(the|this) #Date').tag('Date', here)\n //january up to june\n doc.match('#Date up to #Date').tag('Date', here)\n }\n return doc\n}\nmodule.exports = sectionTagger\n","const here = 'time-tagger'\n\n//\nconst timeTagger = function (doc) {\n // 2 oclock\n doc.match('#Cardinal oclock').tag('Time', here)\n // 13h30\n doc.match('/^[0-9]{2}h[0-9]{2}$/').tag('Time', here)\n // 03/02\n doc.match('/^[0-9]{2}/[0-9]{2}/').tag('Date', here).unTag('Value')\n // 3 in the morning\n doc.match('[#Value] (in|at) the? (morning|evening|night|nighttime)').tag('Time', here)\n if (doc.has('#Cardinal') && !doc.has('#Month')) {\n // quarter to seven (not march 5 to 7)\n doc.match('1? (half|quarter|25|15|10|5) (past|after|to) #Cardinal').tag('Time', here)\n // ten to seven\n doc.match('(5|10|15|20|five|ten|fifteen|20) (to|after|past) [#Cardinal]').tag('Time', here) //add check for 1 to 1 etc.\n }\n //timezone\n if (doc.has('#Date')) {\n // iso (2020-03-02T00:00:00.000Z)\n doc.match('/^[0-9]{4}[:-][0-9]{2}[:-][0-9]{2}T[0-9]/').tag('Time', here)\n // tuesday at 4\n doc.match('#Date [at #Cardinal]', 0).notIf('#Year').tag('Time', here)\n // half an hour\n doc.match('half an (hour|minute|second)').tag('Date', here)\n //eastern daylight time\n doc.match('#Noun (standard|daylight|central|mountain)? time').tag('Timezone', here)\n //utc+5\n doc.match('/^utc[+-][0-9]/').tag('Timezone', here)\n doc.match('/^gmt[+-][0-9]/').tag('Timezone', here)\n\n doc.match('(in|for|by|near|at) #Timezone').tag('Timezone', here)\n // 2pm eastern\n doc.match('#Time [(eastern|mountain|pacific|central)]', 0).tag('Timezone', here)\n }\n // around four thirty\n doc.match('(at|around|near) [#Cardinal (thirty|fifteen) (am|pm)?]', 0).tag('Time', here)\n return doc\n}\nmodule.exports = timeTagger\n","const here = 'shift-tagger'\n//\nconst shiftTagger = function (doc) {\n if (doc.has('#Date')) {\n //'two days before'/ 'nine weeks frow now'\n doc.match('#Cardinal #Duration (before|after|ago|from|hence|back)').tag('DateShift', here)\n // in two weeks\n doc.match('in #Cardinal #Duration').tag('DateShift', here)\n // in a few weeks\n doc.match('in a (few|couple) of? #Duration').tag('DateShift', here)\n //two weeks and three days before\n doc.match('#Cardinal #Duration and? #DateShift').tag('DateShift', here)\n doc.match('#DateShift and #Cardinal #Duration').tag('DateShift', here)\n // 'day after tomorrow'\n doc.match('[#Duration (after|before)] #Date', 0).tag('DateShift', here)\n // in half an hour\n doc.match('in half (a|an) #Duration').tag('DateShift', here)\n }\n return doc\n}\nmodule.exports = shiftTagger\n","const tagIntervals = function (doc) {\n // july 3rd and 4th\n doc.match('#Month #Ordinal and #Ordinal').tag('Date', 'ord-and-ord')\n // every other week\n doc.match('every other #Duration').tag('Date', 'every-other')\n // every weekend\n doc.match('(every|any|each|a) (day|weekday|week day|weekend|weekend day)').tag('Date', 'any-weekday')\n // any-wednesday\n doc.match('(every|any|each|a) (#WeekDay)').tag('Date', 'any-wednesday')\n // any week\n doc.match('(every|any|each|a) (#Duration)').tag('Date', 'any-week')\n}\nmodule.exports = tagIntervals\n","const here = 'fix-tagger'\n//\nconst fixUp = function (doc) {\n //fixups\n if (doc.has('#Date')) {\n //first day by monday\n let oops = doc.match('#Date+ by #Date+')\n if (oops.found && !oops.has('^due')) {\n oops.match('^#Date+').unTag('Date', 'by-monday')\n }\n\n let d = doc.match('#Date+')\n //'spa day'\n d.match('^day$').unTag('Date', 'spa-day')\n // tomorrow's meeting\n d.match('(in|of|by|for)? (#Possessive && #Date)').unTag('Date', 'tomorrows meeting')\n\n let knownDate = '(yesterday|today|tomorrow)'\n if (d.has(knownDate)) {\n //yesterday 7\n d.match(`${knownDate} [#Value]$`).unTag('Date', 'yesterday-7')\n //7 yesterday\n d.match(`^[#Value] ${knownDate}$`, 0).unTag('Date', '7 yesterday')\n //friday yesterday\n d.match(`#WeekDay+ ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'fri-yesterday')\n\n // yesterday yesterday\n // d.match(`${knownDate}+ ${knownDate}$`)\n // .unTag('Date')\n // .lastTerm()\n // .tag('Date', here)\n d.match(`(this|last|next) #Date ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'this month yesterday')\n }\n //tomorrow on 5\n d.match(`on #Cardinal$`).unTag('Date', here)\n //this tomorrow\n d.match(`this tomorrow`).terms(0).unTag('Date', 'this-tomorrow')\n //q2 2019\n d.match(`(q1|q2|q3|q4) #Year`).tag('Date', here)\n //5 tuesday\n // d.match(`^#Value #WeekDay`).terms(0).unTag('Date');\n //5 next week\n d.match(`^#Value (this|next|last)`).terms(0).unTag('Date', here)\n\n if (d.has('(last|this|next)')) {\n //this month 7\n d.match(`(last|this|next) #Duration #Value`).terms(2).unTag('Date', here)\n //7 this month\n d.match(`!#Month #Value (last|this|next) #Date`).terms(0).unTag('Date', here)\n }\n //january 5 5\n if (d.has('(#Year|#Time|#TextValue|#NumberRange)') === false) {\n d.match('(#Month|#WeekDay) #Value #Value').terms(2).unTag('Date', here)\n }\n //between june\n if (d.has('^between') && !d.has('and .')) {\n d.unTag('Date', here)\n }\n //june june\n if (d.has('#Month #Month') && !d.has('@hasHyphen') && !d.has('@hasComma')) {\n d.match('#Month').lastTerm().unTag('Date', 'month-month')\n }\n // log the hours\n if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) {\n d.match('(minutes|seconds|weeks|hours|days|months)').unTag('Date', 'log-hours')\n }\n // about thanksgiving\n if (d.has('about #Holiday')) {\n d.match('about').unTag('#Date', 'about-thanksgiving')\n }\n\n // second quarter of 2020\n d.match('#Ordinal quarter of? #Year').unTag('Fraction')\n\n // a month from now\n d.match('(from|by|before) now').unTag('Time')\n // dangling date-chunks\n // if (d.has('!#Date (in|of|by|for) !#Date')) {\n // d.unTag('Date', 'dangling-date')\n // }\n // the day after next\n d.match('#Date+').match('^the').unTag('Date')\n }\n return doc\n}\nmodule.exports = fixUp\n","const methods = [\n require('./00-basic'),\n require('./01-values'),\n require('./02-dates'),\n require('./03-sections'),\n require('./04-time'),\n require('./05-shifts'),\n require('./06-intervals'),\n require('./07-fixup'),\n]\n\n// normalizations to run before tagger\nconst normalize = function (doc) {\n // turn '20mins' into '20 mins'\n doc.numbers().normalize() // this is sorta problematic\n return doc\n}\n\n// run each of the taggers\nconst tagDate = function (doc) {\n doc = normalize(doc)\n // run taggers\n methods.forEach((fn) => fn(doc))\n return doc\n}\nmodule.exports = tagDate\n","module.exports = {\n FinancialQuarter: {\n isA: 'Date',\n notA: 'Fraction',\n },\n // 'summer'\n Season: {\n isA: 'Date',\n },\n // '1982'\n Year: {\n isA: ['Date'],\n notA: 'RomanNumeral',\n },\n // 'months'\n Duration: {\n isA: ['Date', 'Noun'],\n },\n // 'easter'\n Holiday: {\n isA: ['Date', 'Noun'],\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n notA: ['Adjective', 'DateShift'],\n },\n // 'two weeks before'\n DateShift: {\n isA: ['Date'],\n notA: ['TimeZone', 'Holiday'],\n },\n}\n","/* spencermountain/spacetime 6.13.0 Apache 2.0 */\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.spacetime = factory());\n}(this, (function () { 'use strict';\n\n function _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\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _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\n function _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\n function _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\n function _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\n var MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date\n\n var 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\n var 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\n var summerTime = inSummerTime;\n\n // it reproduces some things in ./index.js, but speeds up spacetime considerably\n\n var 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\n var quick = quickOffset;\n\n var _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,4/west\",\n \t\"8|n|03/25:03->09/29:23\": \"2/ulan_bator\",\n \t\"8|n\": \"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar\",\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/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane\",\n \t\"6|s\": \"12/vostok\",\n \t\"6|n\": \"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/qostanay,2/thimbu,2/thimphu,2/urumqi,9/chagos\",\n \t\"6.5|n\": \"2/rangoon,2/yangon,9/cocos\",\n \t\"5|s\": \"12/mawson,9/kerguelen\",\n \t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives\",\n \t\"5.75|n\": \"2/kathmandu,2/katmandu\",\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/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye\",\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/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte\",\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,3/jan_mayen,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\",\n \t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n \t\"1|s|04/02:01->09/03:03\": \"0/windhoek\",\n \t\"1|s\": \"0/kinshasa,0/luanda\",\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/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london\",\n \t\"1|n\": \"0/algiers,0/bangui,0/brazzaville,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,12/south_pole,11/auckland\",\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/pohnpei,11/ponape\",\n \t\"11.5|n|04/04:03->10/03:02\": \"11/norfolk\",\n \t\"10|s|04/04:03->10/03:02\": \"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria\",\n \t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,4/queensland\",\n \t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap\",\n \t\"10.5|s|04/04:01->10/03:02\": \"4/lhi,4/lord_howe\",\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,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu\",\n \t\"-9|n|03/14:02->11/07:02\": \"1/adak,1/atka\",\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\",\n \t\"-8|n\": \"11/pitcairn\",\n \t\"-7|n|03/14:02->11/07:02\": \"1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,6/pacific,10/bajanorte\",\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\",\n \t\"-6|s|04/03:22->09/04:22\": \"7/easterisland,11/easter\",\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/shiprock,1/yellowknife,6/mountain\",\n \t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos\",\n \t\"-5|s\": \"1/lima,1/rio_branco,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/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central\",\n \t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n \t\"-5|n\": \"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre\",\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/fort_wayne,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,6/eastern\",\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/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east\",\n \t\"-3|n|03/27:22->10/30:23\": \"1/nuuk\",\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/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem\",\n \t\"-2|s\": \"5/denoronha\",\n \t\"-2|n|03/27:22->10/30:23\": \"1/godthab\",\n \t\"-2|n|03/14:02->11/07:02\": \"1/miquelon\",\n \t\"-2|n\": \"1/noronha,3/south_georgia\",\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\",\n \t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti\"\n };\n\n var _build$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': _build\n });\n\n //prefixes for iana names..\n var _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc'];\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n function getCjsExportFromNamespace (n) {\n \treturn n && n['default'] || n;\n }\n\n var data = getCjsExportFromNamespace(_build$1);\n\n var all = {};\n Object.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 });\n all['utc'] = {\n offset: 0,\n hem: 'n' //default to northern hemisphere - (sorry!)\n\n }; //add etc/gmt+n\n\n for (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\n var 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\n var fallbackTZ = 'utc'; //\n //this Intl object is not supported often, yet\n\n var 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\n var 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\n var guessTz_1 = guessTz;\n\n var isOffset = /(\\-?[0-9]+)h(rs)?/i;\n var isNumber = /(\\-?[0-9]+)/;\n var utcOffset = /utc([\\-+]?[0-9]+)/i;\n var gmtOffset = /gmt([\\-+]?[0-9]+)/i;\n\n var 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\n var 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\n var parseOffset_1$1 = parseOffset$1;\n\n var local = guessTz_1(); //add all the city names by themselves\n\n var 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\n var 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\n var 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();\n var split = str.split('/'); //support long timezones like 'America/Argentina/Rio_Gallegos'\n\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\n var find = lookupTz;\n\n var o = {\n millisecond: 1\n };\n o.second = 1000;\n o.minute = 60000;\n o.hour = 3.6e6; // dst is supported post-hoc\n\n o.day = 8.64e7; //\n\n o.date = o.day;\n o.month = 8.64e7 * 29.5; //(average)\n\n o.week = 6.048e8;\n o.year = 3.154e10; // leap-years are supported post-hoc\n //add plurals\n\n Object.keys(o).forEach(function (k) {\n o[k + 's'] = o[k];\n });\n var milliseconds = o;\n\n var 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\n var 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\n var 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\n var walk_1 = walkTo;\n\n var shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec'];\n var longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\n function 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\n var 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\"\n var 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\n var parseOffset_1 = parseOffset;\n\n var 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\n var parseTime_1 = parseTime;\n\n var monthLengths = [31, // January - 31 days\n 28, // February - 28 days in a common year and 29 days in leap years\n 31, // March - 31 days\n 30, // April - 30 days\n 31, // May - 31 days\n 30, // June - 30 days\n 31, // July - 31 days\n 31, // August - 31 days\n 30, // September - 30 days\n 31, // October - 31 days\n 30, // November - 30 days\n 31 // December - 31 days\n ];\n var monthLengths_1 = monthLengths; // 28 - feb\n\n var 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 });\n fns.isLeapYear;\n fns.isDate;\n fns.isArray;\n fns.isObject;\n fns.isBoolean;\n fns.zeroPad;\n fns.titleCase;\n fns.ordinal;\n fns.toCardinal;\n fns.normalize;\n fns.getEpoch;\n fns.beADate;\n fns.formatTimezone;\n\n var isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it\n\n var 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\n var hasDate_1 = hasDate;\n\n var months = months$1.mapping();\n\n var 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\n var 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 }];\n var strParse = strFmt;\n\n // pull in 'today' data for the baseline moment\n var 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\n var 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 };\n dates['new years eve'] = dates['new years'];\n var 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\n var minimumEpoch = 2500000000;\n var defaults = {\n year: new Date().getFullYear(),\n month: 0,\n date: 1\n }; //support [2016, 03, 01] format\n\n var 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\n var 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\n var 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\n var input = parseInput;\n\n var shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n var longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n var 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\n var titleCaseEnabled = true;\n var 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\n var isoOffset = function isoOffset(s) {\n var offset = s.timezone().current.offset;\n return !offset ? 'Z' : fns.formatTimezone(offset, ':');\n };\n\n var _offset = isoOffset;\n\n var applyCaseFormat = function applyCaseFormat(str) {\n if (caseFormat.useTitleCase()) {\n return fns.titleCase(str);\n }\n\n return str;\n };\n\n var 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\n var 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 };\n Object.keys(aliases).forEach(function (k) {\n return format[k] = format[aliases[k]];\n });\n\n var 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\n var format_1 = printFormat;\n\n var pad = fns.zeroPad;\n var 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\n var 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\n var 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\n addAlias('q', 'Q', 4);\n addAlias('L', 'M', 4);\n addAlias('Y', 'y', 4);\n addAlias('c', 'e', 4);\n addAlias('k', 'H', 2);\n addAlias('K', 'h', 2);\n addAlias('S', 's', 2);\n addAlias('v', 'z', 4);\n addAlias('V', 'Z', 4); // support unix-style escaping with ' character\n\n var 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\n var 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\n var 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\n var unixFmt_1 = unixFmt;\n\n var units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\n var 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\n var 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\n var progress_1 = progress;\n\n var 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\n var nearest_1 = nearest;\n\n //increment until dates are the same\n var 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\n var 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\n var 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\n var 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\n var 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\n var waterfall = diff$1;\n\n var 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\n var 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\n var diff = main$1;\n\n //our conceptual 'break-points' for each unit\n\n var 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\n function 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\n function 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\n var 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\n var 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).\n var 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\n var quarters = [null, [0, 1], //jan 1\n [3, 1], //apr 1\n [6, 1], //july 1\n [9, 1] //oct 1\n ];\n\n var 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 };\n units$1.date = units$1.day;\n\n var 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\n var 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\n var startOf_1 = {\n startOf: startOf,\n endOf: endOf\n };\n\n var 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\n var 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\n var every_1 = every;\n\n var parseDst = function parseDst(dst) {\n if (!dst) {\n return [];\n }\n\n return dst.split('->');\n };\n\n var 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\n var 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\n var timezone_1 = timezone;\n\n var units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\n var 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\n methods$4.inDST = methods$4.isDST;\n methods$4.round = methods$4.nearest;\n methods$4.each = methods$4.every;\n var methods_1 = methods$4;\n\n //these methods wrap around them.\n\n var isLeapYear$1 = fns.isLeapYear;\n\n var 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\n var order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond\n\n var 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\n var 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\n var 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 };\n var _01Time = methods$3;\n\n var methods$2 = {\n // # day in the month\n date: function date(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.date(s, num);\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 };\n var _02Date = methods$2;\n\n var clearMinutes = function clearMinutes(s) {\n s = s.minute(0);\n s = s.second(0);\n s = s.millisecond(1);\n return s;\n };\n\n var 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 };\n var _03Year = methods$1;\n\n var methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\n methods.milliseconds = methods.millisecond;\n methods.seconds = methods.second;\n methods.minutes = methods.minute;\n methods.hours = methods.hour;\n methods.hour24 = methods.hour;\n methods.h12 = methods.hour12;\n methods.h24 = methods.hour24;\n methods.days = methods.day;\n\n var 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\n var query = addMethods$4;\n\n var isLeapYear = fns.isLeapYear;\n\n var 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\n var 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\n var 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\n var 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\n var _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\n var order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\n var 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 };\n keep.week = keep.hour;\n keep.season = keep.date;\n keep.quarter = keep.date; // Units need to be dst adjuested\n\n var dstAwareUnits = {\n year: true,\n quarter: true,\n season: true,\n month: true,\n week: true,\n day: true\n };\n var keepDate = {\n month: true,\n quarter: true,\n season: true,\n year: true\n };\n\n var 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\n var add = addMethods$3;\n\n //make a string, for easy comparison between dates\n var 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 };\n print.date = print.day;\n\n var 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\n var same = addMethods$2;\n\n var 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\n var compare = addMethods$1;\n\n var 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\n var i18n = addMethods;\n\n var timezones = unpack; //fake timezone-support, for fakers (es5 class)\n\n var 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\n Object.keys(methods_1).forEach(function (k) {\n SpaceTime.prototype[k] = methods_1[k];\n }); // ¯\\_(ツ)_/¯\n\n SpaceTime.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\n SpaceTime.prototype.toLocalDate = function () {\n return new Date(this.epoch);\n }; //append more methods\n\n\n query(SpaceTime);\n add(SpaceTime);\n same(SpaceTime);\n compare(SpaceTime);\n i18n(SpaceTime);\n var spacetime = SpaceTime;\n\n var 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\n var whereIts_1 = whereIts;\n\n var _version = '6.13.0';\n\n var main = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n }; // set all properties of a given 'today' object\n\n\n var 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\n main.now = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s;\n };\n\n main.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\n main.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\n main.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\n main.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n };\n\n main.timezones = function () {\n var s = new spacetime();\n return s.timezones;\n }; //find tz by time\n\n\n main.whereIts = whereIts_1;\n main.version = _version; //aliases:\n\n main.plugin = main.extend;\n var src = main;\n\n return src;\n\n})));\n","// some opinionated-but-common-sense timezone abbreviations\n// these timezone abbreviations are wholly made-up by me, Spencer Kelly, with no expertise in geography\n// generated humbly from https://github.com/spencermountain/spacetime-informal\nconst spacetime = require('spacetime')\n\nconst america = 'America/'\nconst asia = 'Asia/'\nconst europe = 'Europe/'\nconst africa = 'Africa/'\nconst aus = 'Australia/'\nconst pac = 'Pacific/'\n\nconst informal = {\n //europe\n 'british summer time': europe + 'London',\n bst: europe + 'London',\n 'british time': europe + 'London',\n 'britain time': europe + 'London',\n 'irish summer time': europe + 'Dublin',\n 'irish time': europe + 'Dublin',\n ireland: europe + 'Dublin',\n 'central european time': europe + 'Berlin',\n cet: europe + 'Berlin',\n 'central european summer time': europe + 'Berlin',\n cest: europe + 'Berlin',\n 'central europe': europe + 'Berlin',\n 'eastern european time': europe + 'Riga',\n eet: europe + 'Riga',\n 'eastern european summer time': europe + 'Riga',\n eest: europe + 'Riga',\n 'eastern europe time': europe + 'Riga',\n 'western european time': europe + 'Lisbon',\n // wet: europe+'Lisbon',\n 'western european summer time': europe + 'Lisbon',\n // west: europe+'Lisbon',\n 'western europe': europe + 'Lisbon',\n 'turkey standard time': europe + 'Istanbul',\n trt: europe + 'Istanbul',\n 'turkish time': europe + 'Istanbul',\n\n //africa\n etc: africa + 'Freetown',\n utc: africa + 'Freetown',\n 'greenwich standard time': africa + 'Freetown',\n gmt: africa + 'Freetown',\n 'east africa time': africa + 'Nairobi',\n // eat: africa+'Nairobi',\n 'east african time': africa + 'Nairobi',\n 'eastern africa time': africa + 'Nairobi',\n 'central africa time': africa + 'Khartoum',\n // cat: africa+'Khartoum',\n 'central african time': africa + 'Khartoum',\n 'south africa standard time': africa + 'Johannesburg',\n sast: africa + 'Johannesburg',\n 'southern africa': africa + 'Johannesburg',\n 'south african': africa + 'Johannesburg',\n 'west africa standard time': africa + 'Lagos',\n // wat: africa+'Lagos',\n 'western africa time': africa + 'Lagos',\n 'west african time': africa + 'Lagos',\n\n 'australian central standard time': aus + 'Adelaide',\n acst: aus + 'Adelaide',\n 'australian central daylight time': aus + 'Adelaide',\n acdt: aus + 'Adelaide',\n 'australia central': aus + 'Adelaide',\n 'australian eastern standard time': aus + 'Brisbane',\n aest: aus + 'Brisbane',\n 'australian eastern daylight time': aus + 'Brisbane',\n aedt: aus + 'Brisbane',\n 'australia east': aus + 'Brisbane',\n 'australian western standard time': aus + 'Perth',\n awst: aus + 'Perth',\n 'australian western daylight time': aus + 'Perth',\n awdt: aus + 'Perth',\n 'australia west': aus + 'Perth',\n 'australian central western standard time': aus + 'Eucla',\n acwst: aus + 'Eucla',\n 'australia central west': aus + 'Eucla',\n 'lord howe standard time': aus + 'Lord_Howe',\n lhst: aus + 'Lord_Howe',\n 'lord howe daylight time': aus + 'Lord_Howe',\n lhdt: aus + 'Lord_Howe',\n 'russian standard time': europe + 'Moscow',\n msk: europe + 'Moscow',\n russian: europe + 'Moscow',\n\n //america\n 'central standard time': america + 'Chicago',\n 'central time': america + 'Chicago',\n cst: america + 'Havana',\n 'central daylight time': america + 'Chicago',\n cdt: america + 'Havana',\n 'mountain standard time': america + 'Denver',\n 'mountain time': america + 'Denver',\n mst: america + 'Denver',\n 'mountain daylight time': america + 'Denver',\n mdt: america + 'Denver',\n 'atlantic standard time': america + 'Halifax',\n 'atlantic time': america + 'Halifax',\n ast: asia + 'Baghdad',\n 'atlantic daylight time': america + 'Halifax',\n adt: america + 'Halifax',\n 'eastern standard time': america + 'New_York',\n 'eastern time': america + 'New_York',\n est: america + 'New_York',\n 'eastern daylight time': america + 'New_York',\n edt: america + 'New_York',\n 'pacific time': america + 'Los_Angeles',\n 'pacific standard time': america + 'Los_Angeles',\n pst: america + 'Los_Angeles',\n 'pacific daylight time': america + 'Los_Angeles',\n pdt: america + 'Los_Angeles',\n 'alaskan standard time': america + 'Anchorage',\n 'alaskan time': america + 'Anchorage',\n ahst: america + 'Anchorage',\n 'alaskan daylight time': america + 'Anchorage',\n ahdt: america + 'Anchorage',\n 'hawaiian standard time': pac + 'Honolulu',\n 'hawaiian time': pac + 'Honolulu',\n hst: pac + 'Honolulu',\n 'aleutian time': pac + 'Honolulu',\n 'hawaii time': pac + 'Honolulu',\n 'newfoundland standard time': america + 'St_Johns',\n 'newfoundland time': america + 'St_Johns',\n nst: america + 'St_Johns',\n 'newfoundland daylight time': america + 'St_Johns',\n ndt: america + 'St_Johns',\n 'brazil time': america + 'Sao_Paulo',\n brt: america + 'Sao_Paulo',\n brasília: america + 'Sao_Paulo',\n brasilia: america + 'Sao_Paulo',\n 'brazilian time': america + 'Sao_Paulo',\n 'argentina time': america + 'Buenos_Aires',\n // art: a+'Buenos_Aires',\n 'argentinian time': america + 'Buenos_Aires',\n 'amazon time': america + 'Manaus',\n amt: america + 'Manaus',\n 'amazonian time': america + 'Manaus',\n 'easter island standard time': 'Chile/Easterisland',\n east: 'Chile/Easterisland',\n 'easter island summer time': 'Chile/Easterisland',\n easst: 'Chile/Easterisland',\n 'venezuelan standard time': america + 'Caracas',\n 'venezuelan time': america + 'Caracas',\n vet: america + 'Caracas',\n 'venezuela time': america + 'Caracas',\n 'paraguay time': america + 'Asuncion',\n pyt: america + 'Asuncion',\n 'paraguay summer time': america + 'Asuncion',\n pyst: america + 'Asuncion',\n 'cuba standard time': america + 'Havana',\n 'cuba time': america + 'Havana',\n 'cuba daylight time': america + 'Havana',\n 'cuban time': america + 'Havana',\n 'bolivia time': america + 'La_Paz',\n // bot: a+'La_Paz',\n 'bolivian time': america + 'La_Paz',\n 'colombia time': america + 'Bogota',\n cot: america + 'Bogota',\n 'colombian time': america + 'Bogota',\n 'acre time': america + 'Eirunepe',\n // act: a+'Eirunepe',\n 'peru time': america + 'Lima',\n // pet: a+'Lima',\n 'chile standard time': america + 'Punta_Arenas',\n 'chile time': america + 'Punta_Arenas',\n clst: america + 'Punta_Arenas',\n 'chile summer time': america + 'Punta_Arenas',\n cldt: america + 'Punta_Arenas',\n 'uruguay time': america + 'Montevideo',\n uyt: america + 'Montevideo',\n\n //asia\n ist: asia + 'Jerusalem',\n 'arabic standard time': asia + 'Baghdad',\n 'arabic time': asia + 'Baghdad',\n 'arab time': asia + 'Baghdad',\n 'iran standard time': asia + 'Tehran',\n 'iran time': asia + 'Tehran',\n irst: asia + 'Tehran',\n 'iran daylight time': asia + 'Tehran',\n irdt: asia + 'Tehran',\n iranian: asia + 'Tehran',\n 'pakistan standard time': asia + 'Karachi',\n 'pakistan time': asia + 'Karachi',\n pkt: asia + 'Karachi',\n 'india standard time': asia + 'Kolkata',\n 'indian time': asia + 'Kolkata',\n 'indochina time': asia + 'Bangkok',\n ict: asia + 'Bangkok',\n 'south east asia': asia + 'Bangkok',\n 'china standard time': asia + 'Shanghai',\n ct: asia + 'Shanghai',\n 'chinese time': asia + 'Shanghai',\n 'alma-ata time': asia + 'Almaty',\n almt: asia + 'Almaty',\n 'oral time': asia + 'Oral',\n 'orat time': asia + 'Oral',\n 'yakutsk time': asia + 'Yakutsk',\n yakt: asia + 'Yakutsk',\n 'gulf standard time': asia + 'Dubai',\n 'gulf time': asia + 'Dubai',\n gst: asia + 'Dubai',\n uae: asia + 'Dubai',\n 'hong kong time': asia + 'Hong_Kong',\n hkt: asia + 'Hong_Kong',\n 'western indonesian time': asia + 'Jakarta',\n wib: asia + 'Jakarta',\n 'indonesia time': asia + 'Jakarta',\n 'central indonesian time': asia + 'Makassar',\n wita: asia + 'Makassar',\n 'israel daylight time': asia + 'Jerusalem',\n idt: asia + 'Jerusalem',\n 'israel standard time': asia + 'Jerusalem',\n 'israel time': asia + 'Jerusalem',\n israeli: asia + 'Jerusalem',\n 'krasnoyarsk time': asia + 'Krasnoyarsk',\n krat: asia + 'Krasnoyarsk',\n 'malaysia time': asia + 'Kuala_Lumpur',\n myt: asia + 'Kuala_Lumpur',\n 'singapore time': asia + 'Singapore',\n sgt: asia + 'Singapore',\n 'korea standard time': asia + 'Seoul',\n 'korea time': asia + 'Seoul',\n kst: asia + 'Seoul',\n 'korean time': asia + 'Seoul',\n 'uzbekistan time': asia + 'Samarkand',\n uzt: asia + 'Samarkand',\n 'vladivostok time': asia + 'Vladivostok',\n vlat: asia + 'Vladivostok',\n\n //indian\n 'maldives time': 'Indian/Maldives',\n mvt: 'Indian/Maldives',\n 'mauritius time': 'Indian/Mauritius',\n mut: 'Indian/Mauritius',\n\n // pacific\n 'marshall islands time': pac + 'Kwajalein',\n mht: pac + 'Kwajalein',\n 'samoa standard time': pac + 'Midway',\n sst: pac + 'Midway',\n 'somoan time': pac + 'Midway',\n 'chamorro standard time': pac + 'Guam',\n chst: pac + 'Guam',\n 'papua new guinea time': pac + 'Bougainville',\n pgt: pac + 'Bougainville',\n}\n\n//add the official iana zonefile names\nlet iana = spacetime().timezones\nlet formal = Object.keys(iana).reduce((h, k) => {\n h[k] = k\n return h\n}, {})\nmodule.exports = Object.assign({}, informal, formal)\n","module.exports = [\n 'weekday',\n\n 'summer',\n 'winter',\n 'autumn',\n\n 'some day',\n 'one day',\n 'all day',\n 'some point',\n\n 'eod',\n 'eom',\n 'eoy',\n 'standard time',\n 'daylight time',\n 'tommorrow',\n]\n","module.exports = [\n 'centuries',\n 'century',\n 'day',\n 'days',\n 'decade',\n 'decades',\n 'hour',\n 'hours',\n 'hr',\n 'hrs',\n 'millisecond',\n 'milliseconds',\n 'minute',\n 'minutes',\n 'min',\n 'mins',\n 'month',\n 'months',\n 'seconds',\n 'sec',\n 'secs',\n 'week end',\n 'week ends',\n 'weekend',\n 'weekends',\n 'week',\n 'weeks',\n 'wk',\n 'wks',\n 'year',\n 'years',\n 'yr',\n 'yrs',\n 'quarter',\n // 'quarters',\n 'qtr',\n 'qtrs',\n 'season',\n 'seasons',\n]\n","module.exports = [\n 'all hallows eve',\n 'all saints day',\n 'all sts day',\n 'april fools',\n 'armistice day',\n 'australia day',\n 'bastille day',\n 'boxing day',\n 'canada day',\n 'christmas eve',\n 'christmas',\n 'cinco de mayo',\n 'day of the dead',\n 'dia de muertos',\n 'dieciseis de septiembre',\n 'emancipation day',\n 'grito de dolores',\n 'groundhog day',\n 'halloween',\n 'harvey milk day',\n 'inauguration day',\n 'independence day',\n 'independents day',\n 'juneteenth',\n 'labour day',\n 'national freedom day',\n 'national nurses day',\n 'new years eve',\n 'new years',\n 'purple heart day',\n 'rememberance day',\n 'rosa parks day',\n 'saint andrews day',\n 'saint patricks day',\n 'saint stephens day',\n 'saint valentines day',\n 'st andrews day',\n 'st patricks day',\n 'st stephens day',\n 'st valentines day ',\n 'valentines day',\n 'valentines',\n 'veterans day',\n 'victoria day',\n 'womens equality day',\n 'xmas',\n // Fixed religious and cultural holidays\n // Catholic + Christian\n 'epiphany',\n 'orthodox christmas day',\n 'orthodox new year',\n 'assumption of mary',\n 'all souls day',\n 'feast of the immaculate conception',\n 'feast of our lady of guadalupe',\n\n // Kwanzaa\n 'kwanzaa',\n // Pagan / metal 🤘\n 'imbolc',\n 'beltaine',\n 'lughnassadh',\n 'samhain',\n 'martin luther king day',\n 'mlk day',\n 'presidents day',\n 'mardi gras',\n 'tax day',\n 'commonwealth day',\n 'mothers day',\n 'memorial day',\n 'fathers day',\n 'columbus day',\n 'indigenous peoples day',\n 'canadian thanksgiving',\n 'election day',\n 'thanksgiving',\n 't-day',\n 'turkey day',\n 'black friday',\n 'cyber monday',\n // Astronomical religious and cultural holidays\n 'ash wednesday',\n 'palm sunday',\n 'maundy thursday',\n 'good friday',\n 'holy saturday',\n 'easter',\n 'easter sunday',\n 'easter monday',\n 'orthodox good friday',\n 'orthodox holy saturday',\n 'orthodox easter',\n 'orthodox easter monday',\n 'ascension day',\n 'pentecost',\n 'whitsunday',\n 'whit sunday',\n 'whit monday',\n 'trinity sunday',\n 'corpus christi',\n 'advent',\n // Jewish\n 'tu bishvat',\n 'tu bshevat',\n 'purim',\n 'passover',\n 'yom hashoah',\n 'lag baomer',\n 'shavuot',\n 'tisha bav',\n 'rosh hashana',\n 'yom kippur',\n 'sukkot',\n 'shmini atzeret',\n 'simchat torah',\n 'chanukah',\n 'hanukkah',\n // Muslim\n 'isra and miraj',\n 'lailat al-qadr',\n 'eid al-fitr',\n 'id al-Fitr',\n 'eid ul-Fitr',\n 'ramadan',\n 'eid al-adha',\n 'muharram',\n 'the prophets birthday',\n 'ostara',\n 'march equinox',\n 'vernal equinox',\n 'litha',\n 'june solistice',\n 'summer solistice',\n 'mabon',\n 'september equinox',\n 'fall equinox',\n 'autumnal equinox',\n 'yule',\n 'december solstice',\n 'winter solstice',\n // Additional important holidays\n 'chinese new year',\n 'diwali',\n]\n","module.exports = [\n 'noon',\n 'midnight',\n 'morning',\n 'tonight',\n 'evening',\n 'afternoon',\n 'breakfast time',\n 'lunchtime',\n 'dinnertime',\n 'midday',\n 'eod',\n 'oclock',\n 'oclock',\n 'at night',\n // 'now',\n // 'night',\n // 'sometime',\n // 'all day',\n]\n","const timezones = require('../_timezones')\nconst data = [\n [require('./dates'), '#Date'],\n [require('./durations'), '#Duration'],\n [require('./holidays'), '#Holiday'],\n [require('./times'), '#Time'],\n [Object.keys(timezones), '#Timezone'],\n]\nlet lex = {\n 'a couple': 'Value',\n thur: 'WeekDay',\n}\ndata.forEach((a) => {\n for (let i = 0; i < a[0].length; i++) {\n lex[a[0][i]] = a[1]\n }\n})\n\nmodule.exports = lex\n","const spacetime = require('spacetime')\n\nclass Unit {\n constructor(input, unit, context) {\n this.unit = unit || 'day'\n context = context || {}\n let today = {}\n if (context.today) {\n today = {\n date: context.today.date(),\n month: context.today.month(),\n year: context.today.year(),\n }\n }\n // set it to the beginning of the given unit\n let d = spacetime(input, context.timezone, { today: today })\n\n // set to beginning?\n // if (d.isValid() && keepTime !== true) {\n // d = d.startOf(this.unit)\n // }\n Object.defineProperty(this, 'd', {\n enumerable: false,\n writable: true,\n value: d,\n })\n Object.defineProperty(this, 'context', {\n enumerable: false,\n writable: true,\n value: context,\n })\n }\n // make a new one\n clone() {\n let d = new Unit(this.d, this.unit, this.context)\n return d\n }\n log() {\n console.log('--')\n this.d.log()\n console.log('\\n')\n return this\n }\n applyShift(obj = {}) {\n Object.keys(obj).forEach((unit) => {\n this.d = this.d.add(obj[unit], unit)\n })\n return this\n }\n applyTime(str) {\n if (str) {\n this.d = this.d.time(str)\n } else {\n this.d = this.d.startOf('day') //zero-out time\n }\n return this\n }\n applyWeekDay(day) {\n if (day) {\n let epoch = this.d.epoch\n this.d = this.d.day(day)\n if (this.d.epoch < epoch) {\n this.d = this.d.add(1, 'week')\n }\n }\n return this\n }\n applyRel(rel) {\n if (rel === 'next') {\n return this.next()\n }\n if (rel === 'last' || rel === 'this-past') {\n // special 'this past' logic is handled in WeekDay\n return this.last()\n }\n return this\n }\n applySection(section) {\n if (section === 'start') {\n return this.start()\n }\n if (section === 'end') {\n return this.end()\n }\n if (section === 'middle') {\n return this.middle()\n }\n return this\n }\n format(fmt) {\n return this.d.format(fmt)\n }\n start() {\n this.d = this.d.startOf(this.unit)\n if (this.context.dayStart) {\n this.d = this.d.time(this.context.dayStart)\n }\n return this\n }\n end() {\n this.d = this.d.endOf(this.unit)\n if (this.context.dayEnd) {\n this.d = this.d.time(this.context.dayEnd)\n }\n return this\n }\n middle() {\n let diff = this.d.diff(this.d.endOf(this.unit))\n let minutes = Math.round(diff.minutes / 2)\n this.d = this.d.add(minutes, 'minutes')\n return this\n }\n // the millescond before\n before() {\n this.d = this.d.minus(1, this.unit)\n this.d = this.d.endOf(this.unit)\n if (this.context.dayEnd) {\n this.d = this.d.time(this.context.dayEnd)\n }\n return this\n }\n // 'after 2019'\n after() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n // tricky: 'next june' 'next tuesday'\n next() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n // tricky: 'last june' 'last tuesday'\n last() {\n this.d = this.d.minus(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\nmodule.exports = Unit\n","const spacetime = require('spacetime')\nconst Unit = require('./Unit')\n\nclass Day extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n if (this.d.isValid()) {\n this.d = this.d.startOf('day')\n }\n }\n}\n\n// like 'feb 2'\nclass CalendarDate extends Day {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n if (this.d.isValid()) {\n this.d = this.d.startOf('day')\n }\n }\n next() {\n this.d = this.d.add(1, 'year')\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n return this\n }\n}\n\nclass WeekDay extends Day {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'week'\n // is the input just a weekday?\n if (typeof input === 'string') {\n this.d = spacetime(context.today, context.timezone)\n this.d = this.d.day(input)\n // assume a wednesday in the future\n if (this.d.isBefore(context.today)) {\n this.d = this.d.add(7, 'days')\n }\n } else {\n this.d = input\n }\n this.weekDay = this.d.dayName()\n if (this.d.isValid()) {\n this.d = this.d.startOf('day')\n }\n }\n clone() {\n //overloaded method\n return new WeekDay(this.d, this.unit, this.context)\n }\n end() {\n //overloaded method\n this.d = this.d.endOf('day')\n if (this.context.dayEnd) {\n this.d = this.d.time(this.context.dayEnd)\n }\n return this\n }\n next() {\n this.d = this.d.add(7, 'days')\n this.d = this.d.day(this.weekDay)\n return this\n }\n last() {\n this.d = this.d.minus(7, 'days')\n this.d = this.d.day(this.weekDay)\n return this\n }\n // the millescond before\n before() {\n this.d = this.d.minus(1, 'day')\n this.d = this.d.endOf('day')\n if (this.context.dayEnd) {\n this.d = this.d.time(this.context.dayEnd)\n }\n return this\n }\n applyRel(rel) {\n if (rel === 'next') {\n let tooFar = this.context.today.endOf('week').add(1, 'week')\n this.next()\n // did we go too-far?\n if (this.d.isAfter(tooFar)) {\n this.last() // go back\n }\n return this\n }\n // the closest-one backwards\n if (rel === 'this-past') {\n return this.last()\n }\n if (rel === 'last') {\n let start = this.context.today.startOf('week')\n this.last()\n // are we still in 'this week' though?\n if (this.d.isBefore(start) === false) {\n this.last() // do it again\n }\n return this\n }\n return this\n }\n}\n\n// like 'haloween'\nclass Holiday extends CalendarDate {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n if (this.d.isValid()) {\n this.d = this.d.startOf('day')\n }\n }\n}\n\nmodule.exports = {\n Day: Day,\n WeekDay: WeekDay,\n CalendarDate: CalendarDate,\n Holiday: Holiday,\n}\n","const Unit = require('./Unit')\n\n// a specific month, like 'March'\nclass AnyMonth extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'month'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n}\n\n// a specific month, like 'March'\nclass Month extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'month'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n next() {\n this.d = this.d.add(1, 'year')\n this.d = this.d.startOf('month')\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n this.d = this.d.startOf('month')\n return this\n }\n}\nclass AnyQuarter extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'quarter'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n last() {\n this.d = this.d.minus(1, 'quarter')\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\n\nclass Quarter extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'quarter'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n next() {\n this.d = this.d.add(1, 'year')\n this.d = this.d.startOf(this.unit)\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\nclass Season extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'season'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n next() {\n this.d = this.d.add(1, 'year')\n this.d = this.d.startOf(this.unit)\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\nclass Year extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'year'\n if (this.d.isValid()) {\n this.d = this.d.startOf('year')\n }\n }\n}\n\nmodule.exports = {\n AnyMonth: AnyMonth,\n Month: Month,\n Quarter: Quarter,\n AnyQuarter: AnyQuarter,\n Season: Season,\n Year: Year,\n}\n","const Unit = require('./Unit')\n\nclass Week extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'week'\n if (this.d.isValid()) {\n this.d = this.d.startOf('week')\n }\n }\n}\n\n//may need some work\nclass WeekEnd extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'week'\n if (this.d.isValid()) {\n this.d = this.d.day('saturday')\n this.d = this.d.startOf('day')\n }\n }\n start() {\n this.d = this.d.day('saturday').startOf('day')\n return this\n }\n // end() {\n // this.d = this.d.day('sunday').endOf('day')\n // return this\n // }\n next() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf('weekend')\n return this\n }\n last() {\n this.d = this.d.minus(1, this.unit)\n this.d = this.d.startOf('weekend')\n return this\n }\n}\n\nmodule.exports = {\n Week: Week,\n WeekEnd: WeekEnd,\n}\n","const Unit = require('./Unit')\n\nclass Hour extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context, true)\n this.unit = 'hour'\n if (this.d.isValid()) {\n this.d = this.d.startOf('hour')\n }\n }\n}\nclass Minute extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context, true)\n this.unit = 'minute'\n if (this.d.isValid()) {\n this.d = this.d.startOf('minute')\n }\n }\n}\nclass Moment extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context, true)\n this.unit = 'millisecond'\n }\n}\n\nmodule.exports = {\n Hour: Hour,\n Minute: Minute,\n Moment: Moment,\n}\n","module.exports = Object.assign(\n { Unit: require('./Unit') },\n require('./_day'),\n require('./_year'),\n require('./_week'),\n require('./_time')\n)\n","const knownUnits = {\n second: true,\n minute: true,\n hour: true,\n day: true,\n week: true,\n weekend: true,\n month: true,\n season: true,\n quarter: true,\n year: true,\n}\n\nconst aliases = {\n wk: 'week',\n min: 'minute',\n sec: 'second',\n weekend: 'week', //for now...\n}\n\nconst parseUnit = function (m) {\n let unit = m.match('#Duration').text('normal')\n unit = unit.replace(/s$/, '')\n // support shorthands like 'min'\n if (aliases.hasOwnProperty(unit)) {\n unit = aliases[unit]\n }\n return unit\n}\n\n//turn '5 weeks before' to {weeks:5}\nconst parseShift = function (doc) {\n let result = {}\n let shift = doc.match('#DateShift+')\n if (shift.found === false) {\n return result\n }\n // '5 weeks'\n shift.match('#Cardinal #Duration').forEach((ts) => {\n let num = ts.match('#Cardinal').text('normal')\n num = parseFloat(num)\n if (num && typeof num === 'number') {\n let unit = parseUnit(ts)\n if (knownUnits[unit] === true) {\n result[unit] = num\n }\n }\n })\n //is it 2 weeks ago? → -2\n if (shift.has('(before|ago|hence|back)$') === true) {\n Object.keys(result).forEach((k) => (result[k] *= -1))\n }\n shift.remove('#Cardinal #Duration')\n // supoprt '1 day after tomorrow'\n let m = shift.match('[#Duration] [(after|before)]')\n if (m.found) {\n let unit = m.groups('unit').text('reduced')\n // unit = unit.replace(/s$/, '')\n let dir = m.groups('dir').text('reduced')\n if (dir === 'after') {\n result[unit] = 1\n } else if (dir === 'before') {\n result[unit] = -1\n }\n }\n // in half an hour\n m = shift.match('half (a|an) [#Duration]', 0)\n if (m.found) {\n let unit = parseUnit(m)\n result[unit] = 0.5\n }\n // finally, remove it from our text\n doc.remove('#DateShift')\n return result\n}\nmodule.exports = parseShift\n","/*\na 'counter' is a Unit determined after a point\n * first hour of x\n * 7th week in x\n * last year in x\n * \nunlike a shift, like \"2 weeks after x\"\n*/\nconst oneBased = {\n minute: true,\n}\nconst getCounter = function (doc) {\n // 7th week of\n let m = doc.match('[#Value] [#Duration+] (of|in)')\n if (m.found) {\n let obj = m.groups()\n let num = obj.num.text('reduced')\n let unit = obj.unit.text('reduced')\n let found = {\n unit: unit,\n num: Number(num) || 0,\n }\n // 0-based or 1-based units\n if (!oneBased[unit]) {\n found.num -= 1\n }\n doc = doc.remove(m)\n return found\n }\n // first week of\n m = doc.match('[(first|initial|last|final)] [#Duration+] (of|in)')\n if (m.found) {\n let obj = m.groups()\n let dir = obj.dir.text('reduced')\n let unit = obj.unit.text('reduced')\n if (dir === 'initial') {\n dir = 'first'\n }\n if (dir === 'final') {\n dir = 'last'\n }\n let found = {\n unit: unit,\n dir: dir,\n }\n doc = doc.remove(m)\n return found\n }\n\n return {}\n}\nmodule.exports = getCounter\n","const spacetime = require('spacetime')\n\nconst hardCoded = {\n daybreak: '7:00am', //ergh\n breakfast: '8:00am',\n morning: '9:00am',\n noon: '12:00pm',\n midday: '12:00pm',\n afternoon: '2:00pm',\n lunchtime: '12:00pm',\n evening: '6:00pm',\n dinnertime: '6:00pm',\n night: '8:00pm',\n eod: '10:00pm',\n midnight: '12:00am',\n}\n\nconst halfPast = function (m, s) {\n let hour = m.match('#Cardinal$').text('reduced')\n\n let term = m.match('(half|quarter|25|15|10|5)')\n let mins = term.text('reduced')\n if (term.has('half')) {\n mins = '30'\n }\n if (term.has('quarter')) {\n mins = '15'\n }\n let behind = m.has('to')\n // apply it\n s = s.hour(hour)\n s = s.startOf('hour')\n // assume 'half past 5' is 5pm\n if (hour < 6) {\n s = s.ampm('pm')\n }\n if (behind) {\n s = s.subtract(mins, 'minutes')\n } else {\n s = s.add(mins, 'minutes')\n }\n return s\n}\n\nconst parseTime = function (doc, context) {\n let time = doc.match('(at|by|for|before|this)? #Time+')\n if (time.found) {\n doc.remove(time)\n }\n // get the main part of the time\n time = time.not('^(at|by|for|before|this)')\n time = time.not('sharp')\n time = time.not('on the dot')\n let s = spacetime.now(context.timezone)\n let now = s.clone()\n\n // check for known-times (like 'today')\n let timeStr = time.text('reduced')\n if (hardCoded.hasOwnProperty(timeStr)) {\n return hardCoded[timeStr]\n }\n\n // '5 oclock'\n let m = time.match('^#Cardinal oclock (am|pm)?')\n if (m.found) {\n m = m.not('oclock')\n s = s.hour(m.text('reduced'))\n s = s.startOf('hour')\n if (s.isValid() && !s.isEqual(now)) {\n let ampm = m.match('(am|pm)').text('reduced')\n s = s.ampm(ampm)\n return s.time()\n }\n }\n\n // 'quarter to two'\n m = time.match('(half|quarter|25|15|10|5) (past|after|to) #Cardinal')\n if (m.found) {\n s = halfPast(m, s)\n if (s.isValid() && !s.isEqual(now)) {\n return s.time()\n }\n }\n // '4 in the evening'\n m = time.match('[*] (through|thru) [*]',\n // parse: (m, context) => {\n // let from = m.groups('a')\n // let to = m.groups('b')\n // from = parseDate(from, context)\n // to = parseDate(to, context)\n // if (from && to) {\n // return {\n // start: from,\n // end: to.end(),\n // }\n // }\n // return null\n // },\n // },\n\n // {\n // // 'A until B' (not inclusive end)\n // match: 'from? [*] (to|until|upto) [*]',\n // parse: (m, context) => {\n // let from = m.groups('a')\n // let to = m.groups('b')\n // from = parseDate(from, context)\n // to = parseDate(to, context)\n // if (from && to) {\n // return {\n // start: from,\n // end: to.end(),\n // }\n // }\n // return null\n // },\n // },\n\n {\n // 'before june'\n match: '^due? (by|before) [*]',\n group: 0,\n parse: (m, context) => {\n let unit = parseDate(m, context)\n if (unit) {\n let start = new Unit(context.today, null, context)\n if (start.d.isAfter(unit.d)) {\n start = unit.clone().applyShift({ weeks: -2 })\n }\n // end the night before\n let end = unit.clone().applyShift({ day: -1 })\n return {\n start: start,\n end: end.end(),\n }\n }\n return null\n },\n },\n\n {\n // 'in june'\n match: '^(on|in|at|@) [*]',\n group: 0,\n parse: (m, context) => {\n let unit = parseDate(m, context)\n if (unit) {\n return { start: unit, end: unit.clone().end() }\n }\n return null\n },\n },\n\n {\n // 'after june'\n match: '^(after|following) [*]',\n group: 0,\n parse: (m, context) => {\n let unit = parseDate(m, context)\n if (unit) {\n unit = unit.after()\n return {\n start: unit.clone(),\n end: punt(unit.clone(), context),\n }\n }\n return null\n },\n },\n {\n // 'in june'\n match: '^(on|during|in|during) [*]',\n group: 0,\n parse: (m, context) => {\n let unit = parseDate(m, context)\n if (unit) {\n return {\n start: unit,\n end: unit.clone().end(),\n }\n }\n return null\n },\n },\n]\n","const parseDate = require('../parseDate/parse')\nconst parseInterval = require('./intervals')\nconst ranges = require('./ranges')\n\n// loop thru each range template\nconst parseRange = function (doc, context) {\n // parse-out 'every week ..'\n let interval = parseInterval(doc, context) || {}\n // try each template in order\n for (let i = 0; i < ranges.length; i += 1) {\n let fmt = ranges[i]\n let m = doc.match(fmt.match)\n if (m.found) {\n if (fmt.group !== undefined) {\n m = m.groups(fmt.group)\n }\n let res = fmt.parse(m, context)\n if (res !== null) {\n // console.log(fmt.match)\n return Object.assign({}, interval, res)\n }\n }\n }\n //else, try whole thing\n let res = {\n start: null,\n end: null,\n }\n let unit = parseDate(doc, context)\n if (unit) {\n res = {\n start: unit,\n end: unit.clone().end(),\n }\n }\n let combined = Object.assign({}, interval, res)\n return combined\n}\nmodule.exports = parseRange\n","const normalize = function (doc) {\n doc = doc.clone()\n\n // 'four thirty' -> 4:30\n let m = doc.match('[#Cardinal] [(thirty|fifteen)]').match('#Time+')\n if (m.found) {\n let hour = m.groups('hour')\n let min = m.groups('min')\n let num = hour.values().get(0)\n if (num > 0 && num <= 12) {\n let mins = min.values().get(0)\n let str = `${num}:${mins}`\n m.replaceWith(str)\n }\n }\n\n if (!doc.numbers) {\n console.warn(\"Compromise: compromise-dates cannot find plugin dependency 'compromise-number'\")\n } else {\n // convert 'two' to 2\n let num = doc.numbers()\n num.toNumber()\n num.toCardinal(false)\n }\n // // expand 'aug 20-21'\n doc.contractions().expand()\n // // remove adverbs\n doc.adverbs().remove()\n // // 'week-end'\n doc.replace('week end', 'weekend').tag('Date')\n // // 'a up to b'\n doc.replace('up to', 'upto').tag('Date')\n // 'in a few years'\n m = doc.match('in [a few] #Duration')\n if (m.found) {\n m.groups('0').replaceWith('2')\n m.tag('DateShift')\n }\n return doc\n}\nmodule.exports = normalize\n","const spacetime = require('spacetime')\nconst maxDate = 8640000000000000\n\nconst shouldPick = function (s, byDay) {\n if (byDay && byDay[s.dayName()] !== true) {\n return false\n }\n return true\n}\n\n// list possible dates of a repeating date\nconst generateDates = function (result, context) {\n let list = []\n let max_count = context.max_repeat || 12\n let s = spacetime(result.start || context.today, context.timezone)\n // should we stop at the end date?\n let end = spacetime(result.end, context.timezone)\n let toAdd = Object.keys(result.repeat.interval)\n if (toAdd[0] && s.isSame(end, toAdd[0]) === true) {\n // ignore the end date!\n end = spacetime(maxDate, context.timezone)\n }\n // should we only include these days?\n let byDay = null\n if (result.repeat.filter) {\n byDay = result.repeat.filter.weekDays\n }\n // start going!\n let loops = 0\n // TODO: learn how to write better software.\n while (list.length < max_count && s.epoch < end.epoch) {\n if (shouldPick(s, byDay, end)) {\n list.push(s.iso())\n }\n toAdd.forEach((unit) => {\n s = s.add(result.repeat.interval[unit], unit)\n })\n loops += 1\n if (loops > 10000) {\n console.warn('Warning: Possible infinite loop in date-parser')\n console.log(result.repeat)\n break\n }\n }\n result.repeat.generated = list\n return result\n}\nmodule.exports = generateDates\n","const spacetime = require('spacetime')\nconst parseRanges = require('./02-ranges')\nconst normalize = require('./normalize')\nconst generate = require('./generate')\n\nconst addDuration = function (start, end) {\n let duration = {}\n if (start && end) {\n duration = start.d.diff(end.d)\n // we don't need these\n delete duration.milliseconds\n delete duration.seconds\n }\n return duration\n}\n\nconst toISO = function (unit) {\n if (unit && unit.d) {\n return unit.d.format('iso')\n }\n return null\n}\n\nconst getDate = function (doc, context) {\n // validate context a bit\n context = context || {}\n context.timezone = context.timezone || 'ETC/UTC'\n context.today = spacetime(context.today || null, context.timezone)\n //turn 'five' into 5..\n doc = normalize(doc)\n //interpret 'between [A] and [B]'...\n let result = parseRanges(doc, context)\n // add duration\n result.duration = addDuration(result.start, result.end)\n // format as iso\n result.start = toISO(result.start)\n result.end = toISO(result.end)\n // generate interval dates\n if (result.repeat) {\n result = generate(result, context)\n }\n\n return result\n}\nmodule.exports = getDate\n","let arr = [\n ['mon', 'monday'],\n ['tue', 'tuesday'],\n ['tues', 'tuesday'],\n ['wed', 'wednesday'],\n ['thu', 'thursday'],\n ['thurs', 'thursday'],\n ['fri', 'friday'],\n ['sat', 'saturday'],\n ['sun', 'sunday'],\n\n ['jan', 'january'],\n ['feb', 'february'],\n ['mar', 'march'],\n ['apr', 'april'],\n ['jun', 'june'],\n ['jul', 'july'],\n ['aug', 'august'],\n ['sep', 'september'],\n ['sept', 'september'],\n ['oct', 'october'],\n ['nov', 'november'],\n ['dec', 'december'],\n]\n\narr = arr.map(a => {\n return { short: a[0], long: a[1] }\n})\n\nmodule.exports = arr\n","const parse = require('./parse')\nconst spacetime = require('spacetime')\nconst abbrevs = require('./data/_abbrevs')\n\nmodule.exports = {\n /** easy getter for the start/end dates */\n get: function (options) {\n let arr = []\n this.forEach((doc) => {\n let found = parse(doc, this.context)\n arr.push(found)\n })\n if (typeof options === 'number') {\n return arr[options]\n }\n return arr\n },\n /** overload the original json with date information */\n json: function (options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { terms: false }\n let res = []\n this.forEach((doc) => {\n let json = doc.json(options)[0]\n let found = parse(doc, this.context)\n json.date = found\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n\n /** render all dates according to a specific format */\n format: function (fmt) {\n this.forEach((doc) => {\n let obj = parse(doc, this.context)\n if (obj.start) {\n let start = spacetime(obj.start, this.context.timezone)\n let str = start.format(fmt)\n if (obj.end) {\n let end = spacetime(obj.end, this.context.timezone)\n if (start.isSame(end, 'day') === false) {\n str += ' to ' + end.format(fmt)\n }\n }\n doc.replaceWith(str, { keepTags: true, keepCase: false })\n }\n })\n return this\n },\n /** replace 'Fri' with 'Friday', etc*/\n toLongForm: function () {\n abbrevs.forEach((a) => {\n this.replace(a.short, a.long, true)\n })\n return this\n },\n /** replace 'Friday' with 'Fri', etc*/\n toShortForm: function () {\n abbrevs.forEach((a) => {\n this.replace(a.long, a.short, true)\n })\n return this\n },\n}\n","const known = {\n century: true,\n day: true,\n decade: true,\n hour: true,\n millisecond: true,\n minute: true,\n month: true,\n second: true,\n weekend: true,\n week: true,\n year: true,\n quarter: true,\n season: true,\n}\n\nlet mapping = {\n m: 'minute',\n h: 'hour',\n hr: 'hour',\n min: 'minute',\n sec: 'second',\n 'week end': 'weekend',\n wk: 'week',\n yr: 'year',\n qtr: 'quarter',\n}\n// add plurals\nObject.keys(mapping).forEach((k) => {\n mapping[k + 's'] = mapping[k]\n})\n\nconst parse = function (doc) {\n let duration = {}\n //parse '8 minutes'\n let twoWord = doc.match('#Value+ #Duration')\n if (twoWord.found) {\n twoWord.forEach((m) => {\n let num = m.numbers().get(0)\n let unit = m.terms().last().nouns().toSingular().text()\n // turn 'mins' into 'minute'\n if (mapping.hasOwnProperty(unit)) {\n unit = mapping[unit]\n }\n if (known.hasOwnProperty(unit) && num !== null) {\n duration[unit] = num\n }\n })\n } else {\n let oneWord = doc.match('(#Duration && /[0-9][a-z]+$/)')\n if (oneWord.found) {\n let str = doc.text()\n let num = str.match(/([0-9]+)/)\n let unit = str.match(/([a-z]+)/)\n if (num && unit) {\n num = num[0] || null\n unit = unit[0] || null\n if (mapping.hasOwnProperty(unit)) {\n unit = mapping[unit]\n }\n if (known.hasOwnProperty(unit) && num !== null) {\n duration[unit] = Number(num)\n }\n }\n }\n }\n return duration\n}\nmodule.exports = parse\n","const parse = require('./parse')\n\nconst methods = {\n /** easy getter for the time */\n get: function (options) {\n let arr = []\n this.forEach((doc) => {\n let res = parse(doc)\n arr.push(res)\n })\n if (typeof options === 'number') {\n return arr[options]\n }\n return arr\n },\n /** overload the original json with duration information */\n json: function (options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { terms: false }\n let res = []\n this.forEach((doc) => {\n let json = doc.json(options)\n json.duration = parse(doc)\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n /** change to a standard duration format */\n normalize: function () {\n this.forEach((doc) => {\n let duration = parse(doc)\n let list = []\n Object.keys(duration).forEach((unit) => {\n let num = duration[unit]\n let word = unit\n if (num !== 1) {\n word += 's'\n }\n list.push(`${num} ${word}`)\n })\n // splice-in an 'and'\n if (list.length > 1) {\n let beforeEnd = list.length - 1\n list.splice(beforeEnd, 0, 'and')\n }\n let text = list.join(' ')\n doc.replaceWith(text)\n })\n return this\n },\n}\n\nconst addDurations = function (Doc) {\n /** phrases like '2 months', or '2mins' */\n class Durations extends Doc {\n constructor(list, from, w) {\n super(list, from, w)\n this.context = {}\n }\n }\n //add-in methods\n Object.assign(Durations.prototype, methods)\n\n /** phrases like '2 months' */\n Doc.prototype.durations = function (n) {\n let m = this.match('#Value+ #Duration (and? #Value+ #Duration)?')\n // add '20mins'\n m = m.concat(this.match('(#Duration && /[0-9][a-z]+$/)'))\n\n // not 'in 20 minutes'\n m = m.notIf('#DateShift')\n\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return new Durations(m.list, this, this.world)\n }\n}\nmodule.exports = addDurations\n","const normalize = require('../normalize')\nconst parseTime = require('../parseDate/01-tokenize/03-time')\n\nconst parse = function (m, context) {\n m = normalize(m)\n let res = parseTime(m, context)\n return res\n}\nmodule.exports = parse\n","const parse = require('./parse')\n\nconst methods = {\n /** easy getter for the time */\n get: function (options) {\n let arr = []\n this.forEach((doc) => {\n let res = parse(doc, this.context)\n arr.push(res)\n })\n if (typeof options === 'number') {\n return arr[options]\n }\n return arr\n },\n /** overload the original json with duration information */\n json: function (options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { terms: false }\n let res = []\n this.forEach((doc) => {\n let json = doc.json(options)\n json.time = parse(doc, this.context)\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n}\n\nconst addTimes = function (Doc) {\n /** phrases like '2 months', or '2mins' */\n class Times extends Doc {\n constructor(list, from, w) {\n super(list, from, w)\n this.context = {}\n }\n }\n //add-in methods\n Object.assign(Times.prototype, methods)\n\n /** phrases like '4pm' */\n Doc.prototype.times = function (n) {\n let m = this.match('#Time+ (am|pm)?')\n // m.debug()\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return new Times(m.list, this, this.world)\n }\n}\nmodule.exports = addTimes\n","const findDate = function (doc) {\n // let r = this.clauses()\n let dates = doc.match('#Date+')\n\n // ignore only-durations like '20 minutes'\n dates = dates.filter((m) => {\n let isDuration = m.has('^#Duration+$') || m.has('^#Value #Duration+$')\n // allow 'q4', etc\n if (isDuration === true && m.has('(#FinancialQuarter|quarter)')) {\n return true\n }\n return isDuration === false\n })\n // 30 minutes on tuesday\n let m = dates.match('[#Cardinal #Duration (in|on|this|next|during|for)] #Date', 0)\n if (m.found) {\n dates = dates.not(m)\n }\n // 30 minutes tuesday\n m = dates.match('[#Cardinal #Duration] #WeekDay', 0)\n if (m.found) {\n dates = dates.not(m)\n }\n // tuesday for 30 mins\n m = dates.match('#Date [for #Value #Duration]$', 0)\n if (m.found) {\n dates = dates.not(m)\n }\n // 'tuesday, wednesday'\n m = dates.match('^[#WeekDay] and? #WeekDay$', 0)\n if (m.found) {\n if (m.first().has('@hasDash') === false) {\n dates = dates.splitAfter(m)\n dates = dates.not('^and')\n }\n }\n // 'june, august'\n m = dates.match('^[#Month] and? #Month #Ordinal?$', 0)\n if (m.found) {\n dates = dates.splitAfter(m)\n dates = dates.not('^and')\n }\n\n // 'tuesday, wednesday, and friday'\n m = dates.match('#WeekDay #WeekDay and? #WeekDay')\n if (m.found) {\n dates = dates.splitOn('#WeekDay')\n dates = dates.not('^and')\n }\n // 'june 5th, june 10th'\n m = dates.match('[#Month #Value] #Month', 0)\n if (m.found) {\n dates = dates.splitAfter(m)\n }\n\n // '20 minutes june 5th'\n m = dates.match('[#Cardinal #Duration] #Date', 0) //but allow '20 minutes ago'\n if (m.found && !dates.has('#Cardinal #Duration] (ago|from|before|after|back)')) {\n dates = dates.not(m)\n }\n // for 20 minutes\n m = dates.match('for #Cardinal #Duration')\n if (m.found) {\n dates = dates.not(m)\n }\n // // 'january, february'\n // m = dates.match('^[#Month] (and|or)? #Month$', 0)\n // if (m.found) {\n // dates = dates.splitAfter(m)\n // dates = dates.not('^(and|or)')\n // }\n\n return dates\n}\nmodule.exports = findDate\n","const tagger = require('./01-tagger')\nconst tags = require('./data/_tags')\nconst words = require('./data/words')\nconst methods = require('./methods')\nconst addDurations = require('./durations')\nconst addTimes = require('./times')\nconst spacetime = require('spacetime')\nconst findDates = require('./find')\n\nconst opts = {\n punt: { weeks: 2 },\n}\n\nconst addMethods = function (Doc, world) {\n // our new tags\n world.addTags(tags)\n // add info for the date plugin\n world.addWords(words)\n // run our tagger\n world.postProcess(tagger)\n\n // add .durations() class + methods\n addDurations(Doc, world)\n // add .times() class + methods\n addTimes(Doc, world)\n\n /** phraes like 'nov 2nd' or 'on tuesday' */\n class Dates extends Doc {\n constructor(list, from, w) {\n super(list, from, w)\n this.context = opts\n }\n }\n //add-in methods\n Object.assign(Dates.prototype, methods)\n\n Doc.prototype.dates = function (n) {\n let context = {}\n if (n && typeof n === 'object') {\n context = n\n n = null\n }\n context = Object.assign({}, context, opts)\n\n let dates = findDates(this)\n if (typeof n === 'number') {\n dates = dates.get(n)\n }\n let d = new Dates(dates.list, this, this.world)\n if (context.today) {\n context.today = spacetime(context.today, context.timezone)\n }\n d.context = context\n return d\n }\n}\n\nmodule.exports = addMethods\n"],"names":["preps","thisNext","sections","seasons","tagYear","m","reason","found","forEach","p","str","text","num","parseInt","tag","tagYearSafe","tagDates","doc","match","month","val","ifNo","duration","unTag","season","date","not","cardinal","v","groups","time","here","values","has","replaceWith","dateTagger","sectionTagger","timeTagger","notIf","shiftTagger","tagIntervals","fixUp","oops","d","knownDate","lastTerm","terms","methods","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","normalize","numbers","tagDate","fn","FinancialQuarter","isA","notA","Season","Year","Duration","Holiday","Timezone","DateShift","global","factory","module","this","_typeof","obj","Symbol","iterator","constructor","prototype","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","Object","_arr","_n","_d","_e","undefined","_i","_s","next","done","push","value","length","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","rest","_rest$split","_rest$split2","day","hour","Date","UTC","inSummerTime","epoch","start","end","summerOffset","winterOffset","getUTCFullYear","startUtc","endUtc","summerTime","quickOffset","s","zones","timezones","tz","console","warn","dst","jul","dec","hem","inSummer","quick","_build","_build$1","freeze","__proto__","_prefixes","createCommonjsModule","exports","getCjsExportFromNamespace","data","all","keys","k","Number","names","replace","before","unpack","fallbackTZ","safeIntl","Intl","DateTimeFormat","format","resolvedOptions","timezone","timeZone","toLowerCase","guessTz","guessTz_1","isOffset","isNumber","utcOffset","gmtOffset","toIana","parseOffset$1","parseOffset","parseOffset_1$1","local","cities","reduce","h","city","lookupTz","error","trim","hasOwnProperty","id","Error","find","millisecond","second","minute","week","milliseconds","walk","unit","previous","current","startUnit","original","diff","Math","abs","halfStep","units$3","valid","walkTo","getMonth","getFullYear","seconds","wants","old","clone","silent","walk_1","shortMonths","longMonths","buildMapping","sep","months$1","short","long","mapping","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","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","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","_","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","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","north","south","quarters","units$1","quarterhour","_weekStart","q","hemisphere","decade","century","startOf_1","isDay","result","every_1","parseDst","epochShift","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","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","get","bias","getTimezoneOffset","toLocalDate","spacetime","whereIts","startHour","endHour","tzs","whereIts_1","_version","setToday","extend","version","plugin","src","america","asia","europe","africa","aus","pac","informal","bst","ireland","cet","cest","eet","eest","trt","etc","utc","gmt","sast","acst","acdt","aest","aedt","awst","awdt","acwst","lhst","lhdt","msk","russian","cst","cdt","mst","mdt","ast","adt","est","edt","pst","pdt","ahst","ahdt","hst","nst","ndt","brt","brasília","brasilia","amt","east","easst","vet","pyt","pyst","cot","clst","cldt","uyt","ist","irst","irdt","iranian","pkt","ict","ct","almt","yakt","gst","uae","hkt","wib","wita","idt","israeli","krat","myt","sgt","kst","uzt","vlat","mvt","mut","mht","sst","chst","pgt","iana","formal","lex","Unit","context","enumerable","writable","rel","section","middle","dayStart","dayEnd","Day","CalendarDate","WeekDay","weekDay","tooFar","AnyMonth","Month","AnyQuarter","Quarter","Week","WeekEnd","Hour","Minute","Moment","knownUnits","weekend","wk","min","parseUnit","parseShift","ts","remove","dir","oneBased","getCounter","hardCoded","daybreak","midday","lunchtime","dinnertime","eod","halfPast","term","mins","behind","timeStr","desc","g","parseRelative","parseSection","parseTimezone","parseWeekday","knownWord","eom","eoy","tommorrow","tmrw","define","feb","apr","oct","parseHoliday","spacetimeHoliday","milliscond","instant","yr","qtr","hr","matchStr","nextLast","Model","fmtToday","parseYearly","parseExplicit","impliedYear","applyCounter","counter","tokens","relative","weekday","require$$8","holiday","require$$9","require$$10","yearly","require$$11","explicit","require$$12","transform","require$$13","parseDate","applyShift","applyWeekDay","applyRel","applySection","applyTime","dayNames","mon","tue","wed","thu","fri","sat","sun","monday","tuesday","wednesday","thursday","friday","saturday","sunday","parseLogic","parseIntervals","repeat","interval","choose","nouns","toSingular","weekDays","punt","append","year2","prepend","fromDate","toDate","group","after","parseRange","parseInterval","ranges","combined","toNumber","contractions","expand","adverbs","maxDate","shouldPick","byDay","generateDates","list","max_count","max_repeat","loops","generated","addDuration","toISO","parseRanges","generate","keepTags","keepCase","toLongForm","abbrevs","toShortForm","known","twoWord","oneWord","word","beforeEnd","addDurations","Doc","Durations","durations","world","addTimes","Times","findDate","isDuration","first","splitAfter","splitOn","opts","addTags","tags","addWords","words","postProcess","tagger","Dates","findDates"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"compromise-dates.js","sources":["../src/01-tagger/00-basic.js","../src/01-tagger/01-values.js","../src/01-tagger/02-dates.js","../src/01-tagger/03-sections.js","../src/01-tagger/04-time.js","../src/01-tagger/05-shifts.js","../src/01-tagger/06-intervals.js","../src/01-tagger/07-timezone.js","../src/01-tagger/08-fixup.js","../src/01-tagger/index.js","../src/data/_tags.js","../node_modules/spacetime/builds/spacetime.js","../src/data/_timezones.js","../src/data/words/dates.js","../src/data/words/durations.js","../src/data/words/holidays.js","../src/data/words/times.js","../src/data/words/index.js","../src/parseDate/units/Unit.js","../src/parseDate/units/_day.js","../src/parseDate/units/_year.js","../src/parseDate/units/_week.js","../src/parseDate/units/_time.js","../src/parseDate/units/index.js","../src/parseDate/01-tokenize/01-shift.js","../src/parseDate/01-tokenize/02-counter.js","../src/parseDate/01-tokenize/03-time.js","../src/parseDate/01-tokenize/04-relative.js","../src/parseDate/01-tokenize/05-section.js","../src/parseDate/01-tokenize/06-timezone.js","../src/parseDate/01-tokenize/07-weekday.js","../src/parseDate/02-parse/01-today.js","../node_modules/spacetime-holiday/builds/spacetime-holiday.js","../src/parseDate/02-parse/02-holidays.js","../src/parseDate/02-parse/03-next-last.js","../src/parseDate/02-parse/04-yearly.js","../src/parseDate/02-parse/05-explicit.js","../src/parseDate/03-transform/addCounter.js","../src/parseDate/parse.js","../src/02-ranges/intervals.js","../src/02-ranges/ranges.js","../src/02-ranges/index.js","../src/normalize.js","../src/generate.js","../src/parse.js","../src/data/_abbrevs.js","../src/methods.js","../src/durations/parse.js","../src/durations/index.js","../src/times/parse.js","../src/times/index.js","../src/find.js","../src/index.js"],"sourcesContent":["//ambiguous 'may' and 'march'\nconst preps = '(in|by|before|during|on|until|after|of|within|all)' //6\nconst thisNext = '(last|next|this|previous|current|upcoming|coming)' //2\nconst sections = '(start|end|middle|starting|ending|midpoint|beginning)' //2\nconst seasons = '(spring|summer|winter|fall|autumn)'\n\n//ensure a year is approximately typical for common years\n//please change in one thousand years\nconst tagYear = (m, reason) => {\n if (m.found !== true) {\n return\n }\n m.forEach((p) => {\n let str = p.text('reduced')\n let num = parseInt(str, 10)\n if (num && num > 1000 && num < 3000) {\n p.tag('Year', reason)\n }\n })\n}\n//same, but for less-confident values\nconst tagYearSafe = (m, reason) => {\n if (m.found !== true) {\n return\n }\n m.forEach((p) => {\n let str = p.text('reduced')\n let num = parseInt(str, 10)\n if (num && num > 1900 && num < 2030) {\n p.tag('Year', reason)\n }\n })\n}\n\nconst tagDates = function (doc) {\n // in the evening\n doc.match('in the (night|evening|morning|afternoon|day|daytime)').tag('Time', 'in-the-night')\n // 8 pm\n doc.match('(#Value|#Time) (am|pm)').tag('Time', 'value-ampm')\n // 22-aug\n // doc.match('/^[0-9]{2}-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov)/').tag('Date', '20-jan')\n // 2012-06\n doc.match('/^[0-9]{4}-[0-9]{2}$/').tag('Date', '2012-06')\n\n // misc weekday words\n doc.match('(tue|thu)').tag('WeekDay', 'misc-weekday')\n\n //months:\n let month = doc.if('#Month')\n if (month.found === true) {\n //June 5-7th\n month.match(`#Month #Date+`).tag('Date', 'correction-numberRange')\n //5th of March\n month.match('#Value of #Month').tag('Date', 'value-of-month')\n //5 March\n month.match('#Cardinal #Month').tag('Date', 'cardinal-month')\n //march 5 to 7\n month.match('#Month #Value to #Value').tag('Date', 'value-to-value')\n //march the 12th\n month.match('#Month the #Value').tag('Date', 'month-the-value')\n }\n\n //months:\n let val = doc.if('#Value')\n if (val.found === true) {\n //june 7\n val.match('(#WeekDay|#Month) #Value').ifNo('#Money').tag('Date', 'date-value')\n\n //7 june\n val.match('#Value (#WeekDay|#Month)').ifNo('#Money').tag('Date', 'value-date')\n\n //may twenty five\n val.match('#TextValue #TextValue').if('#Date').tag('#Date', 'textvalue-date')\n\n //two thursdays back\n val.match('#Value (#WeekDay|#Duration) back').tag('#Date', '3-back')\n\n //eg 'year'\n let duration = val.if('#Duration')\n if (duration.found === true) {\n //for 4 months\n duration.match('for #Value #Duration').tag('Date', 'for-x-duration')\n //two days before\n duration.match('#Value #Duration #Conjunction').tag('Date', 'val-duration-conjunction')\n //for four days\n duration.match(`${preps}? #Value #Duration`).tag('Date', 'value-duration')\n //two years old\n duration.match('#Value #Duration old').unTag('Date', 'val-years-old')\n }\n }\n\n //seasons\n let season = doc.if(seasons)\n if (season.found === true) {\n season.match(`${preps}? ${thisNext} ${seasons}`).tag('Date', 'thisNext-season')\n season.match(`the? ${sections} of ${seasons}`).tag('Date', 'section-season')\n season.match(`${seasons} ${preps}? #Cardinal`).tag('Date', 'season-year')\n }\n\n //rest-dates\n let date = doc.if('#Date')\n if (date.found === true) {\n //june the 5th\n date.match('#Date the? #Ordinal').tag('Date', 'correction')\n //last month\n date.match(`${thisNext} #Date`).tag('Date', 'thisNext-date')\n //by 5 March\n date.match('due? (by|before|after|until) #Date').tag('Date', 'by')\n //next feb\n date.match('(last|next|this|previous|current|upcoming|coming|the) #Date').tag('Date', 'next-feb')\n //start of june\n date.match(`the? ${sections} of #Date`).tag('Date', 'section-of')\n //fifth week in 1998\n date.match('#Ordinal #Duration in #Date').tag('Date', 'duration-in')\n //early in june\n date.match('(early|late) (at|in)? the? #Date').tag('Time', 'early-evening')\n //tomorrow before 3\n date.match('#Date (by|before|after|at|@|about) #Cardinal').not('^#Date').tag('Time', 'date-before-Cardinal')\n //saturday am\n date.match('#Date [(am|pm)]', 0).unTag('Verb').unTag('Copula').tag('Time', 'date-am')\n //feb to june\n date.match('#Date (#Preposition|to) #Date').ifNo('#Duration').tag('Date', 'date-prep-date')\n //2nd quarter of 2019\n // date.match('#Date of #Date').tag('Date', 'date-of-date')\n }\n\n //year/cardinal tagging\n let cardinal = doc.if('#Cardinal')\n if (cardinal.found === true) {\n let v = cardinal.match(`#Date #Value [#Cardinal]`, 0)\n tagYear(v, 'date-value-year')\n //scoops up a bunch\n v = cardinal.match(`#Date [#Cardinal]`, 0)\n tagYearSafe(v, 'date-year')\n //middle of 1999\n v = cardinal.match(`${sections} of [#Cardinal]`)\n tagYearSafe(v, 'section-year')\n //feb 8 2018\n v = cardinal.match(`#Month #Value [#Cardinal]`, 0)\n tagYear(v, 'month-value-year')\n //feb 8 to 10th 2018\n v = cardinal.match(`#Month #Value to #Value [#Cardinal]`, 0)\n tagYear(v, 'month-range-year')\n //in 1998\n v = cardinal.match(`(in|of|by|during|before|starting|ending|for|year|since) [#Cardinal]`, 0)\n tagYear(v, 'in-year-1')\n //q2 2009\n v = cardinal.match('(q1|q2|q3|q4) [#Cardinal]', 0)\n tagYear(v, 'in-year-2')\n //2nd quarter 2009\n v = cardinal.match('#Ordinal quarter of? [#Cardinal]', 0)\n tagYear(v, 'in-year-3')\n //in the year 1998\n v = cardinal.match('the year [#Cardinal]', 0)\n tagYear(v, 'in-year-4')\n //it was 1998\n v = cardinal.match('it (is|was) [#Cardinal]', 0)\n tagYearSafe(v, 'in-year-5')\n // re-tag this part\n cardinal.match(`${sections} of #Year`).tag('Date')\n //between 1999 and 1998\n let m = cardinal.match('between [#Cardinal] and [#Cardinal]')\n tagYear(m.groups('0'), 'between-year-and-year-1')\n tagYear(m.groups('1'), 'between-year-and-year-2')\n }\n\n let time = doc.if('#Time')\n if (time.found === true) {\n //by 6pm\n time.match('(by|before|after|at|@|about) #Time').tag('Time', 'preposition-time')\n //7 7pm\n // time.match('#Cardinal #Time').not('#Year').tag('Time', 'value-time')\n // //2pm est\n // time.match('#Time [(eastern|pacific|central|mountain)]', 0).tag('Date', 'timezone')\n // //6pm est\n // time.match('#Time [(est|pst|gmt)]', 0).tag('Date', 'timezone abbr')\n }\n //'2020' bare input\n let m = doc.match('^/^20[012][0-9]$/$')\n tagYearSafe(m, '2020-ish')\n\n // in 20mins\n doc.match('(in|after) /^[0-9]+(min|sec|wk)s?/').tag('Date', 'shift-units')\n //tuesday night\n doc.match('#Date [(now|night|sometime)]', 0).tag('Time', 'date-now')\n // 4 days from now\n doc.match('(from|starting|until|by) now').tag('Date', 'for-now')\n // every night\n doc.match('(each|every) night').tag('Date', 'for-now')\n return doc\n}\nmodule.exports = tagDates\n","const here = 'date-values'\n//\nconst values = function (doc) {\n // a year ago\n if (!doc.has('once [a] #Duration')) {\n doc.match('[a] #Duration', 0).replaceWith('1').tag('Cardinal', here)\n }\n if (doc.has('#Value')) {\n //june 5 to 7th\n doc.match('#Month #Value to #Value of? #Year?').tag('Date', here)\n //5 to 7th june\n doc.match('#Value to #Value of? #Month #Year?').tag('Date', here)\n //third week of may\n doc.match('#Value #Duration of #Date').tag('Date', here)\n //two days after\n doc.match('#Value+ #Duration (after|before|into|later|afterwards|ago)?').tag('Date', here)\n //two days\n doc.match('#Value #Date').tag('Date', here)\n //june 5th\n doc.match('#Date #Value').tag('Date', here)\n //tuesday at 5\n doc.match('#Date #Preposition #Value').tag('Date', here)\n //tomorrow before 3\n doc.match('#Date (after|before|during|on|in) #Value').tag('Date', here)\n //a year and a half\n doc.match('#Value (year|month|week|day) and a half').tag('Date', here)\n //5 and a half years\n doc.match('#Value and a half (years|months|weeks|days)').tag('Date', here)\n //on the fifth\n doc.match('on the #Ordinal').tag('Date', here)\n }\n return doc\n}\nmodule.exports = values\n","const here = 'date-tagger'\n//\nconst dateTagger = function (doc) {\n doc.match('(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)').match('#Noun').tag('Season', here)\n doc.match('(q1|q2|q3|q4)').tag('FinancialQuarter', here)\n doc.match('(this|next|last|current) quarter').tag('FinancialQuarter', here)\n doc.match('(this|next|last|current) season').tag('Season', here)\n\n if (doc.has('#Date')) {\n //friday to sunday\n doc.match('#Date #Preposition #Date').tag('Date', here)\n //once a day..\n doc.match('(once|twice) (a|an|each) #Date').tag('Date', here)\n //tuesday\n doc.match('#Date+').tag('Date', here)\n //by June\n doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', 'until-june')\n //a year after..\n doc.match('a #Duration').tag('Date', here)\n //between x and y\n doc.match('(between|from) #Date').tag('Date', here)\n doc.match('(to|until|upto) #Date').tag('Date', here)\n doc.match('#Date and #Date').tag('Date', here)\n //during this june\n doc.match('(by|until|after|before|during|on|in|following|since) (next|this|last)? (#Date|#Date)').tag('Date', here)\n //day after next\n doc.match('the? #Date after next one?').tag('Date', here)\n //approximately...\n doc.match('(about|approx|approximately|around) #Date').tag('Date', here)\n }\n return doc\n}\nmodule.exports = dateTagger\n","const here = 'section-tagger'\n//\nconst sectionTagger = function (doc) {\n if (doc.has('#Date')) {\n // //next september\n doc.match('this? (last|next|past|this|previous|current|upcoming|coming|the) #Date').tag('Date', here)\n //starting this june\n doc.match('(starting|beginning|ending) #Date').tag('Date', here)\n //start of june\n doc.match('the? (start|end|middle|beginning) of (last|next|this|the) (#Date|#Date)').tag('Date', here)\n //this coming june\n doc.match('(the|this) #Date').tag('Date', here)\n //january up to june\n doc.match('#Date up to #Date').tag('Date', here)\n }\n return doc\n}\nmodule.exports = sectionTagger\n","const here = 'time-tagger'\n\n//\nconst timeTagger = function (doc) {\n // 2 oclock\n doc.match('#Cardinal oclock').tag('Time', here)\n // 13h30\n doc.match('/^[0-9]{2}h[0-9]{2}$/').tag('Time', here)\n // 03/02\n doc.match('/^[0-9]{2}/[0-9]{2}/').tag('Date', here).unTag('Value')\n // 3 in the morning\n doc.match('[#Value] (in|at) the? (morning|evening|night|nighttime)').tag('Time', here)\n if (doc.has('#Cardinal') && !doc.has('#Month')) {\n // quarter to seven (not march 5 to 7)\n doc.match('1? (half|quarter|25|15|10|5) (past|after|to) #Cardinal').tag('Time', here)\n // ten to seven\n doc.match('(5|10|15|20|five|ten|fifteen|20) (to|after|past) [#Cardinal]').tag('Time', here) //add check for 1 to 1 etc.\n }\n //timezone\n if (doc.has('#Date')) {\n // iso (2020-03-02T00:00:00.000Z)\n doc.match('/^[0-9]{4}[:-][0-9]{2}[:-][0-9]{2}T[0-9]/').tag('Time', here)\n // tuesday at 4\n doc.match('#Date [at #Cardinal]', 0).notIf('#Year').tag('Time', here)\n // half an hour\n doc.match('half an (hour|minute|second)').tag('Date', here)\n // in eastern time\n doc.match('(in|for|by|near|at) #Timezone').tag('Timezone', here)\n }\n // around four thirty\n doc.match('(at|around|near) [#Cardinal (thirty|fifteen) (am|pm)?]', 0).tag('Time', here)\n return doc\n}\nmodule.exports = timeTagger\n","const here = 'shift-tagger'\n//\nconst shiftTagger = function (doc) {\n if (doc.has('#Date')) {\n //'two days before'/ 'nine weeks frow now'\n doc.match('#Cardinal #Duration (before|after|ago|from|hence|back)').tag('DateShift', here)\n // in two weeks\n doc.match('in #Cardinal #Duration').tag('DateShift', here)\n // in a few weeks\n doc.match('in a (few|couple) of? #Duration').tag('DateShift', here)\n //two weeks and three days before\n doc.match('#Cardinal #Duration and? #DateShift').tag('DateShift', here)\n doc.match('#DateShift and #Cardinal #Duration').tag('DateShift', here)\n // 'day after tomorrow'\n doc.match('[#Duration (after|before)] #Date', 0).tag('DateShift', here)\n // in half an hour\n doc.match('in half (a|an) #Duration').tag('DateShift', here)\n }\n return doc\n}\nmodule.exports = shiftTagger\n","const tagIntervals = function (doc) {\n // july 3rd and 4th\n doc.match('#Month #Ordinal and #Ordinal').tag('Date', 'ord-and-ord')\n // every other week\n doc.match('every other #Duration').tag('Date', 'every-other')\n // every weekend\n doc.match('(every|any|each|a) (day|weekday|week day|weekend|weekend day)').tag('Date', 'any-weekday')\n // any-wednesday\n doc.match('(every|any|each|a) (#WeekDay)').tag('Date', 'any-wednesday')\n // any week\n doc.match('(every|any|each|a) (#Duration)').tag('Date', 'any-week')\n}\nmodule.exports = tagIntervals\n","// timezone abbreviations\n// (from spencermountain/timezone-soft)\nconst zones = [\n 'act',\n 'aft',\n 'akst',\n 'anat',\n 'art',\n 'azot',\n 'azt',\n 'bnt',\n 'bot',\n 'bt',\n 'cast',\n 'cat',\n 'cct',\n 'chast',\n 'chut',\n 'ckt',\n 'cvt',\n 'cxt',\n 'davt',\n 'eat',\n 'ect',\n 'fjt',\n 'fkst',\n 'fnt',\n 'gamt',\n 'get',\n 'gft',\n 'gilt',\n 'gyt',\n 'hast',\n 'hncu',\n 'hneg',\n 'hnnomx',\n 'hnog',\n 'hnpm',\n 'hnpmx',\n 'hntn',\n 'hovt',\n 'iot',\n 'irkt',\n 'jst',\n 'kgt',\n 'kost',\n 'lint',\n 'magt',\n 'mart',\n 'mawt',\n 'mmt',\n 'nct',\n 'nft',\n 'novt',\n 'npt',\n 'nrt',\n 'nut',\n 'nzst',\n 'omst',\n 'pet',\n 'pett',\n 'phot',\n 'phst',\n 'pont',\n 'pwt',\n 'ret',\n 'sakt',\n 'samt',\n 'sbt',\n 'sct',\n 'sret',\n 'srt',\n 'syot',\n 'taht',\n 'tft',\n 'tjt',\n 'tkt',\n 'tlt',\n 'tmt',\n 'tot',\n 'tvt',\n 'ulat',\n 'vut',\n 'wakt',\n 'wat',\n 'wet',\n 'wft',\n 'wit',\n 'wst',\n 'yekt',\n].reduce((h, str) => {\n h[str] = true\n return h\n}, {})\n\nconst tagTz = function (doc) {\n // 4pm PST\n let m = doc.match('#Time [#Acronym]', 0)\n if (m.found) {\n let str = m.text('reduced')\n if (zones[str] === true) {\n m.tag('Timezone', 'tz-abbr')\n }\n }\n}\nmodule.exports = tagTz\n","const here = 'fix-tagger'\n//\nconst fixUp = function (doc) {\n //fixups\n if (doc.has('#Date')) {\n //first day by monday\n let oops = doc.match('#Date+ by #Date+')\n if (oops.found && !oops.has('^due')) {\n oops.match('^#Date+').unTag('Date', 'by-monday')\n }\n\n let d = doc.match('#Date+')\n //'spa day'\n d.match('^day$').unTag('Date', 'spa-day')\n // tomorrow's meeting\n d.match('(in|of|by|for)? (#Possessive && #Date)').unTag('Date', 'tomorrows meeting')\n\n let knownDate = '(yesterday|today|tomorrow)'\n if (d.has(knownDate)) {\n //yesterday 7\n d.match(`${knownDate} [#Value]$`).unTag('Date', 'yesterday-7')\n //7 yesterday\n d.match(`^[#Value] ${knownDate}$`, 0).unTag('Date', '7 yesterday')\n //friday yesterday\n d.match(`#WeekDay+ ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'fri-yesterday')\n\n // yesterday yesterday\n // d.match(`${knownDate}+ ${knownDate}$`)\n // .unTag('Date')\n // .lastTerm()\n // .tag('Date', here)\n // d.match(`(this|last|next) #Date ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'this month yesterday')\n }\n //tomorrow on 5\n d.match(`on #Cardinal$`).unTag('Date', here)\n //this tomorrow\n d.match(`this tomorrow`).terms(0).unTag('Date', 'this-tomorrow')\n //q2 2019\n d.match(`(q1|q2|q3|q4) #Year`).tag('Date', here)\n //5 tuesday\n // d.match(`^#Value #WeekDay`).terms(0).unTag('Date');\n //5 next week\n d.match(`^#Value (this|next|last)`).terms(0).unTag('Date', here)\n\n if (d.has('(last|this|next)')) {\n //this month 7\n d.match(`(last|this|next) #Duration #Value`).terms(2).unTag('Date', here)\n //7 this month\n d.match(`!#Month #Value (last|this|next) #Date`).terms(0).unTag('Date', here)\n }\n //january 5 5\n if (d.has('(#Year|#Time|#TextValue|#NumberRange)') === false) {\n d.match('(#Month|#WeekDay) #Value #Value').terms(2).unTag('Date', here)\n }\n //between june\n if (d.has('^between') && !d.has('and .')) {\n d.unTag('Date', here)\n }\n //june june\n if (d.has('#Month #Month') && !d.has('@hasHyphen') && !d.has('@hasComma')) {\n d.match('#Month').lastTerm().unTag('Date', 'month-month')\n }\n // log the hours\n if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) {\n d.match('(minutes|seconds|weeks|hours|days|months)').unTag('Date', 'log-hours')\n }\n // about thanksgiving\n if (d.has('about #Holiday')) {\n d.match('about').unTag('#Date', 'about-thanksgiving')\n }\n\n // second quarter of 2020\n d.match('#Ordinal quarter of? #Year').unTag('Fraction')\n\n // a month from now\n d.match('(from|by|before) now').unTag('Time')\n // dangling date-chunks\n // if (d.has('!#Date (in|of|by|for) !#Date')) {\n // d.unTag('Date', 'dangling-date')\n // }\n // the day after next\n d.match('#Date+').match('^the').unTag('Date')\n }\n return doc\n}\nmodule.exports = fixUp\n","const methods = [\n require('./00-basic'),\n require('./01-values'),\n require('./02-dates'),\n require('./03-sections'),\n require('./04-time'),\n require('./05-shifts'),\n require('./06-intervals'),\n require('./07-timezone'),\n require('./08-fixup'),\n]\n\n// normalizations to run before tagger\nconst normalize = function (doc) {\n // turn '20mins' into '20 mins'\n if (typeof doc.numbers === 'function') {\n doc.numbers().normalize()\n } else {\n console.warn(\n `Warning: compromise-numbers plugin is not loaded.\\n You should load this plugin \\n - https://bit.ly/3t8RfFG`\n )\n }\n return doc\n}\n\n// run each of the taggers\nconst tagDate = function (doc) {\n doc = normalize(doc)\n // run taggers\n methods.forEach((fn) => fn(doc))\n return doc\n}\nmodule.exports = tagDate\n","module.exports = {\n FinancialQuarter: {\n isA: 'Date',\n notA: 'Fraction',\n },\n // 'summer'\n Season: {\n isA: 'Date',\n },\n // '1982'\n Year: {\n isA: ['Date'],\n notA: 'RomanNumeral',\n },\n // 'months'\n Duration: {\n isA: ['Date', 'Noun'],\n },\n // 'easter'\n Holiday: {\n isA: ['Date', 'Noun'],\n },\n // 'two weeks before'\n DateShift: {\n isA: ['Date'],\n notA: ['TimeZone', 'Holiday'],\n },\n}\n","/* spencermountain/spacetime 6.13.1 Apache 2.0 */\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.spacetime = factory());\n}(this, (function () { 'use strict';\n\n function _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\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _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\n function _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\n function _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\n function _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\n var MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date\n\n var 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\n var 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\n var summerTime = inSummerTime;\n\n // it reproduces some things in ./index.js, but speeds up spacetime considerably\n\n var 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\n var quick = quickOffset;\n\n var _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,4/west\",\n \t\"8|n|03/25:03->09/29:23\": \"2/ulan_bator\",\n \t\"8|n\": \"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar\",\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/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane\",\n \t\"6|s\": \"12/vostok\",\n \t\"6|n\": \"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/qostanay,2/thimbu,2/thimphu,2/urumqi,9/chagos\",\n \t\"6.5|n\": \"2/rangoon,2/yangon,9/cocos\",\n \t\"5|s\": \"12/mawson,9/kerguelen\",\n \t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives\",\n \t\"5.75|n\": \"2/kathmandu,2/katmandu\",\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/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye\",\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/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte\",\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,3/jan_mayen,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\",\n \t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n \t\"1|s|04/02:01->09/03:03\": \"0/windhoek\",\n \t\"1|s\": \"0/kinshasa,0/luanda\",\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/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london\",\n \t\"1|n\": \"0/algiers,0/bangui,0/brazzaville,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,12/south_pole,11/auckland\",\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/pohnpei,11/ponape\",\n \t\"11.5|n|04/04:03->10/03:02\": \"11/norfolk\",\n \t\"10|s|04/04:03->10/03:02\": \"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria\",\n \t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,4/queensland\",\n \t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap\",\n \t\"10.5|s|04/04:01->10/03:02\": \"4/lhi,4/lord_howe\",\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,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu\",\n \t\"-9|n|03/14:02->11/07:02\": \"1/adak,1/atka\",\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\",\n \t\"-8|n\": \"11/pitcairn\",\n \t\"-7|n|03/14:02->11/07:02\": \"1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,6/pacific,10/bajanorte\",\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\",\n \t\"-6|s|04/03:22->09/04:22\": \"7/easterisland,11/easter\",\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/shiprock,1/yellowknife,6/mountain\",\n \t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos\",\n \t\"-5|s\": \"1/lima,1/rio_branco,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/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central\",\n \t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n \t\"-5|n\": \"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre\",\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/fort_wayne,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,6/eastern\",\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/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east\",\n \t\"-3|n|03/27:22->10/30:23\": \"1/nuuk\",\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/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem\",\n \t\"-2|s\": \"5/denoronha\",\n \t\"-2|n|03/27:22->10/30:23\": \"1/godthab\",\n \t\"-2|n|03/14:02->11/07:02\": \"1/miquelon\",\n \t\"-2|n\": \"1/noronha,3/south_georgia\",\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\",\n \t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti\"\n };\n\n var _build$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': _build\n });\n\n //prefixes for iana names..\n var _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc'];\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n function getCjsExportFromNamespace (n) {\n \treturn n && n['default'] || n;\n }\n\n var data = getCjsExportFromNamespace(_build$1);\n\n var all = {};\n Object.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 });\n all['utc'] = {\n offset: 0,\n hem: 'n' //default to northern hemisphere - (sorry!)\n\n }; //add etc/gmt+n\n\n for (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\n var 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\n var fallbackTZ = 'utc'; //\n //this Intl object is not supported often, yet\n\n var 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\n var 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\n var guessTz_1 = guessTz;\n\n var isOffset = /(\\-?[0-9]+)h(rs)?/i;\n var isNumber = /(\\-?[0-9]+)/;\n var utcOffset = /utc([\\-+]?[0-9]+)/i;\n var gmtOffset = /gmt([\\-+]?[0-9]+)/i;\n\n var 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\n var 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\n var parseOffset_1$1 = parseOffset$1;\n\n var local = guessTz_1(); //add all the city names by themselves\n\n var 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\n var 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\n var 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();\n var split = str.split('/'); //support long timezones like 'America/Argentina/Rio_Gallegos'\n\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\n var find = lookupTz;\n\n var o = {\n millisecond: 1\n };\n o.second = 1000;\n o.minute = 60000;\n o.hour = 3.6e6; // dst is supported post-hoc\n\n o.day = 8.64e7; //\n\n o.date = o.day;\n o.month = 8.64e7 * 29.5; //(average)\n\n o.week = 6.048e8;\n o.year = 3.154e10; // leap-years are supported post-hoc\n //add plurals\n\n Object.keys(o).forEach(function (k) {\n o[k + 's'] = o[k];\n });\n var milliseconds = o;\n\n var 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\n var 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\n var 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\n var walk_1 = walkTo;\n\n var shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec'];\n var longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\n function 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\n var 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\"\n var 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\n var parseOffset_1 = parseOffset;\n\n var 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\n var parseTime_1 = parseTime;\n\n var monthLengths = [31, // January - 31 days\n 28, // February - 28 days in a common year and 29 days in leap years\n 31, // March - 31 days\n 30, // April - 30 days\n 31, // May - 31 days\n 30, // June - 30 days\n 31, // July - 31 days\n 31, // August - 31 days\n 30, // September - 30 days\n 31, // October - 31 days\n 30, // November - 30 days\n 31 // December - 31 days\n ];\n var monthLengths_1 = monthLengths; // 28 - feb\n\n var 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 });\n fns.isLeapYear;\n fns.isDate;\n fns.isArray;\n fns.isObject;\n fns.isBoolean;\n fns.zeroPad;\n fns.titleCase;\n fns.ordinal;\n fns.toCardinal;\n fns.normalize;\n fns.getEpoch;\n fns.beADate;\n fns.formatTimezone;\n\n var isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it\n\n var 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\n var hasDate_1 = hasDate;\n\n var months = months$1.mapping();\n\n var 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\n var 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 }];\n var strParse = strFmt;\n\n // pull in 'today' data for the baseline moment\n var 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\n var 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 };\n dates['new years eve'] = dates['new years'];\n var 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\n var minimumEpoch = 2500000000;\n var defaults = {\n year: new Date().getFullYear(),\n month: 0,\n date: 1\n }; //support [2016, 03, 01] format\n\n var 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\n var 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\n var 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\n var input = parseInput;\n\n var shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n var longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n var 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\n var titleCaseEnabled = true;\n var 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\n var isoOffset = function isoOffset(s) {\n var offset = s.timezone().current.offset;\n return !offset ? 'Z' : fns.formatTimezone(offset, ':');\n };\n\n var _offset = isoOffset;\n\n var applyCaseFormat = function applyCaseFormat(str) {\n if (caseFormat.useTitleCase()) {\n return fns.titleCase(str);\n }\n\n return str;\n };\n\n var 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\n var 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 };\n Object.keys(aliases).forEach(function (k) {\n return format[k] = format[aliases[k]];\n });\n\n var 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\n var format_1 = printFormat;\n\n var pad = fns.zeroPad;\n var 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\n var 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\n var 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\n addAlias('q', 'Q', 4);\n addAlias('L', 'M', 4);\n addAlias('Y', 'y', 4);\n addAlias('c', 'e', 4);\n addAlias('k', 'H', 2);\n addAlias('K', 'h', 2);\n addAlias('S', 's', 2);\n addAlias('v', 'z', 4);\n addAlias('V', 'Z', 4); // support unix-style escaping with ' character\n\n var 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\n var 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\n var 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\n var unixFmt_1 = unixFmt;\n\n var units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\n var 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\n var 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\n var progress_1 = progress;\n\n var 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\n var nearest_1 = nearest;\n\n //increment until dates are the same\n var 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\n var 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\n var 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\n var 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\n var 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\n var waterfall = diff$1;\n\n var 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\n var 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\n var diff = main$1;\n\n //our conceptual 'break-points' for each unit\n\n var 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\n function 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\n function 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\n var 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\n var 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).\n var 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\n var quarters = [null, [0, 1], //jan 1\n [3, 1], //apr 1\n [6, 1], //july 1\n [9, 1] //oct 1\n ];\n\n var 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 };\n units$1.date = units$1.day;\n\n var 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\n var 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\n var startOf_1 = {\n startOf: startOf,\n endOf: endOf\n };\n\n var 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\n var 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\n var every_1 = every;\n\n var parseDst = function parseDst(dst) {\n if (!dst) {\n return [];\n }\n\n return dst.split('->');\n };\n\n var 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\n var 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\n var timezone_1 = timezone;\n\n var units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\n var 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\n methods$4.inDST = methods$4.isDST;\n methods$4.round = methods$4.nearest;\n methods$4.each = methods$4.every;\n var methods_1 = methods$4;\n\n //these methods wrap around them.\n\n var isLeapYear$1 = fns.isLeapYear;\n\n var 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\n var order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond\n\n var 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\n var 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\n var 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 };\n var _01Time = methods$3;\n\n var 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 };\n var _02Date = methods$2;\n\n var clearMinutes = function clearMinutes(s) {\n s = s.minute(0);\n s = s.second(0);\n s = s.millisecond(1);\n return s;\n };\n\n var 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 };\n var _03Year = methods$1;\n\n var methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\n methods.milliseconds = methods.millisecond;\n methods.seconds = methods.second;\n methods.minutes = methods.minute;\n methods.hours = methods.hour;\n methods.hour24 = methods.hour;\n methods.h12 = methods.hour12;\n methods.h24 = methods.hour24;\n methods.days = methods.day;\n\n var 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\n var query = addMethods$4;\n\n var isLeapYear = fns.isLeapYear;\n\n var 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\n var 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\n var 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\n var 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\n var _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\n var order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\n var 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 };\n keep.week = keep.hour;\n keep.season = keep.date;\n keep.quarter = keep.date; // Units need to be dst adjuested\n\n var dstAwareUnits = {\n year: true,\n quarter: true,\n season: true,\n month: true,\n week: true,\n day: true\n };\n var keepDate = {\n month: true,\n quarter: true,\n season: true,\n year: true\n };\n\n var 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\n var add = addMethods$3;\n\n //make a string, for easy comparison between dates\n var 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 };\n print.date = print.day;\n\n var 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\n var same = addMethods$2;\n\n var 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\n var compare = addMethods$1;\n\n var 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\n var i18n = addMethods;\n\n var timezones = unpack; //fake timezone-support, for fakers (es5 class)\n\n var 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\n Object.keys(methods_1).forEach(function (k) {\n SpaceTime.prototype[k] = methods_1[k];\n }); // ¯\\_(ツ)_/¯\n\n SpaceTime.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\n SpaceTime.prototype.toLocalDate = function () {\n return new Date(this.epoch);\n }; //append more methods\n\n\n query(SpaceTime);\n add(SpaceTime);\n same(SpaceTime);\n compare(SpaceTime);\n i18n(SpaceTime);\n var spacetime = SpaceTime;\n\n var 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\n var whereIts_1 = whereIts;\n\n var _version = '6.13.1';\n\n var main = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n }; // set all properties of a given 'today' object\n\n\n var 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\n main.now = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s;\n };\n\n main.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\n main.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\n main.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\n main.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n };\n\n main.timezones = function () {\n var s = new spacetime();\n return s.timezones;\n }; //find tz by time\n\n\n main.whereIts = whereIts_1;\n main.version = _version; //aliases:\n\n main.plugin = main.extend;\n var src = main;\n\n return src;\n\n})));\n","// some opinionated-but-common-sense timezone abbreviations\n// these timezone abbreviations are wholly made-up by me, Spencer Kelly, with no expertise in geography\n// generated humbly from https://github.com/spencermountain/spacetime-informal\nconst spacetime = require('spacetime')\n\nconst america = 'America/'\nconst asia = 'Asia/'\nconst europe = 'Europe/'\nconst africa = 'Africa/'\nconst aus = 'Australia/'\nconst pac = 'Pacific/'\n\nconst informal = {\n //europe\n 'british summer time': europe + 'London',\n bst: europe + 'London',\n 'british time': europe + 'London',\n 'britain time': europe + 'London',\n 'irish summer time': europe + 'Dublin',\n 'irish time': europe + 'Dublin',\n ireland: europe + 'Dublin',\n 'central european time': europe + 'Berlin',\n cet: europe + 'Berlin',\n 'central european summer time': europe + 'Berlin',\n cest: europe + 'Berlin',\n 'central europe': europe + 'Berlin',\n 'eastern european time': europe + 'Riga',\n eet: europe + 'Riga',\n 'eastern european summer time': europe + 'Riga',\n eest: europe + 'Riga',\n 'eastern europe time': europe + 'Riga',\n 'western european time': europe + 'Lisbon',\n // wet: europe+'Lisbon',\n 'western european summer time': europe + 'Lisbon',\n // west: europe+'Lisbon',\n 'western europe': europe + 'Lisbon',\n 'turkey standard time': europe + 'Istanbul',\n trt: europe + 'Istanbul',\n 'turkish time': europe + 'Istanbul',\n\n //africa\n etc: africa + 'Freetown',\n utc: africa + 'Freetown',\n 'greenwich standard time': africa + 'Freetown',\n gmt: africa + 'Freetown',\n 'east africa time': africa + 'Nairobi',\n // eat: africa+'Nairobi',\n 'east african time': africa + 'Nairobi',\n 'eastern africa time': africa + 'Nairobi',\n 'central africa time': africa + 'Khartoum',\n // cat: africa+'Khartoum',\n 'central african time': africa + 'Khartoum',\n 'south africa standard time': africa + 'Johannesburg',\n sast: africa + 'Johannesburg',\n 'southern africa': africa + 'Johannesburg',\n 'south african': africa + 'Johannesburg',\n 'west africa standard time': africa + 'Lagos',\n // wat: africa+'Lagos',\n 'western africa time': africa + 'Lagos',\n 'west african time': africa + 'Lagos',\n\n 'australian central standard time': aus + 'Adelaide',\n acst: aus + 'Adelaide',\n 'australian central daylight time': aus + 'Adelaide',\n acdt: aus + 'Adelaide',\n 'australia central': aus + 'Adelaide',\n 'australian eastern standard time': aus + 'Brisbane',\n aest: aus + 'Brisbane',\n 'australian eastern daylight time': aus + 'Brisbane',\n aedt: aus + 'Brisbane',\n 'australia east': aus + 'Brisbane',\n 'australian western standard time': aus + 'Perth',\n awst: aus + 'Perth',\n 'australian western daylight time': aus + 'Perth',\n awdt: aus + 'Perth',\n 'australia west': aus + 'Perth',\n 'australian central western standard time': aus + 'Eucla',\n acwst: aus + 'Eucla',\n 'australia central west': aus + 'Eucla',\n 'lord howe standard time': aus + 'Lord_Howe',\n lhst: aus + 'Lord_Howe',\n 'lord howe daylight time': aus + 'Lord_Howe',\n lhdt: aus + 'Lord_Howe',\n 'russian standard time': europe + 'Moscow',\n msk: europe + 'Moscow',\n russian: europe + 'Moscow',\n\n //america\n 'central standard time': america + 'Chicago',\n 'central time': america + 'Chicago',\n cst: america + 'Havana',\n 'central daylight time': america + 'Chicago',\n cdt: america + 'Havana',\n 'mountain standard time': america + 'Denver',\n 'mountain time': america + 'Denver',\n mst: america + 'Denver',\n 'mountain daylight time': america + 'Denver',\n mdt: america + 'Denver',\n 'atlantic standard time': america + 'Halifax',\n 'atlantic time': america + 'Halifax',\n ast: asia + 'Baghdad',\n 'atlantic daylight time': america + 'Halifax',\n adt: america + 'Halifax',\n 'eastern standard time': america + 'New_York',\n 'eastern time': america + 'New_York',\n est: america + 'New_York',\n 'eastern daylight time': america + 'New_York',\n edt: america + 'New_York',\n 'pacific time': america + 'Los_Angeles',\n 'pacific standard time': america + 'Los_Angeles',\n pst: america + 'Los_Angeles',\n 'pacific daylight time': america + 'Los_Angeles',\n pdt: america + 'Los_Angeles',\n 'alaskan standard time': america + 'Anchorage',\n 'alaskan time': america + 'Anchorage',\n ahst: america + 'Anchorage',\n 'alaskan daylight time': america + 'Anchorage',\n ahdt: america + 'Anchorage',\n 'hawaiian standard time': pac + 'Honolulu',\n 'hawaiian time': pac + 'Honolulu',\n hst: pac + 'Honolulu',\n 'aleutian time': pac + 'Honolulu',\n 'hawaii time': pac + 'Honolulu',\n 'newfoundland standard time': america + 'St_Johns',\n 'newfoundland time': america + 'St_Johns',\n nst: america + 'St_Johns',\n 'newfoundland daylight time': america + 'St_Johns',\n ndt: america + 'St_Johns',\n 'brazil time': america + 'Sao_Paulo',\n brt: america + 'Sao_Paulo',\n brasília: america + 'Sao_Paulo',\n brasilia: america + 'Sao_Paulo',\n 'brazilian time': america + 'Sao_Paulo',\n 'argentina time': america + 'Buenos_Aires',\n // art: a+'Buenos_Aires',\n 'argentinian time': america + 'Buenos_Aires',\n 'amazon time': america + 'Manaus',\n amt: america + 'Manaus',\n 'amazonian time': america + 'Manaus',\n 'easter island standard time': 'Chile/Easterisland',\n east: 'Chile/Easterisland',\n 'easter island summer time': 'Chile/Easterisland',\n easst: 'Chile/Easterisland',\n 'venezuelan standard time': america + 'Caracas',\n 'venezuelan time': america + 'Caracas',\n vet: america + 'Caracas',\n 'venezuela time': america + 'Caracas',\n 'paraguay time': america + 'Asuncion',\n pyt: america + 'Asuncion',\n 'paraguay summer time': america + 'Asuncion',\n pyst: america + 'Asuncion',\n 'cuba standard time': america + 'Havana',\n 'cuba time': america + 'Havana',\n 'cuba daylight time': america + 'Havana',\n 'cuban time': america + 'Havana',\n 'bolivia time': america + 'La_Paz',\n // bot: a+'La_Paz',\n 'bolivian time': america + 'La_Paz',\n 'colombia time': america + 'Bogota',\n cot: america + 'Bogota',\n 'colombian time': america + 'Bogota',\n 'acre time': america + 'Eirunepe',\n // act: a+'Eirunepe',\n 'peru time': america + 'Lima',\n // pet: a+'Lima',\n 'chile standard time': america + 'Punta_Arenas',\n 'chile time': america + 'Punta_Arenas',\n clst: america + 'Punta_Arenas',\n 'chile summer time': america + 'Punta_Arenas',\n cldt: america + 'Punta_Arenas',\n 'uruguay time': america + 'Montevideo',\n uyt: america + 'Montevideo',\n\n //asia\n ist: asia + 'Jerusalem',\n 'arabic standard time': asia + 'Baghdad',\n 'arabic time': asia + 'Baghdad',\n 'arab time': asia + 'Baghdad',\n 'iran standard time': asia + 'Tehran',\n 'iran time': asia + 'Tehran',\n irst: asia + 'Tehran',\n 'iran daylight time': asia + 'Tehran',\n irdt: asia + 'Tehran',\n iranian: asia + 'Tehran',\n 'pakistan standard time': asia + 'Karachi',\n 'pakistan time': asia + 'Karachi',\n pkt: asia + 'Karachi',\n 'india standard time': asia + 'Kolkata',\n 'indian time': asia + 'Kolkata',\n 'indochina time': asia + 'Bangkok',\n ict: asia + 'Bangkok',\n 'south east asia': asia + 'Bangkok',\n 'china standard time': asia + 'Shanghai',\n ct: asia + 'Shanghai',\n 'chinese time': asia + 'Shanghai',\n 'alma-ata time': asia + 'Almaty',\n almt: asia + 'Almaty',\n 'oral time': asia + 'Oral',\n 'orat time': asia + 'Oral',\n 'yakutsk time': asia + 'Yakutsk',\n yakt: asia + 'Yakutsk',\n 'gulf standard time': asia + 'Dubai',\n 'gulf time': asia + 'Dubai',\n gst: asia + 'Dubai',\n uae: asia + 'Dubai',\n 'hong kong time': asia + 'Hong_Kong',\n hkt: asia + 'Hong_Kong',\n 'western indonesian time': asia + 'Jakarta',\n wib: asia + 'Jakarta',\n 'indonesia time': asia + 'Jakarta',\n 'central indonesian time': asia + 'Makassar',\n wita: asia + 'Makassar',\n 'israel daylight time': asia + 'Jerusalem',\n idt: asia + 'Jerusalem',\n 'israel standard time': asia + 'Jerusalem',\n 'israel time': asia + 'Jerusalem',\n israeli: asia + 'Jerusalem',\n 'krasnoyarsk time': asia + 'Krasnoyarsk',\n krat: asia + 'Krasnoyarsk',\n 'malaysia time': asia + 'Kuala_Lumpur',\n myt: asia + 'Kuala_Lumpur',\n 'singapore time': asia + 'Singapore',\n sgt: asia + 'Singapore',\n 'korea standard time': asia + 'Seoul',\n 'korea time': asia + 'Seoul',\n kst: asia + 'Seoul',\n 'korean time': asia + 'Seoul',\n 'uzbekistan time': asia + 'Samarkand',\n uzt: asia + 'Samarkand',\n 'vladivostok time': asia + 'Vladivostok',\n vlat: asia + 'Vladivostok',\n\n //indian\n 'maldives time': 'Indian/Maldives',\n mvt: 'Indian/Maldives',\n 'mauritius time': 'Indian/Mauritius',\n mut: 'Indian/Mauritius',\n\n // pacific\n 'marshall islands time': pac + 'Kwajalein',\n mht: pac + 'Kwajalein',\n 'samoa standard time': pac + 'Midway',\n sst: pac + 'Midway',\n 'somoan time': pac + 'Midway',\n 'chamorro standard time': pac + 'Guam',\n chst: pac + 'Guam',\n 'papua new guinea time': pac + 'Bougainville',\n pgt: pac + 'Bougainville',\n}\n\n//add the official iana zonefile names\nlet iana = spacetime().timezones\nlet formal = Object.keys(iana).reduce((h, k) => {\n h[k] = k\n return h\n}, {})\nmodule.exports = Object.assign({}, informal, formal)\n","module.exports = [\n 'weekday',\n\n 'summer',\n 'winter',\n 'autumn',\n\n 'some day',\n 'one day',\n 'all day',\n 'some point',\n\n 'eod',\n 'eom',\n 'eoy',\n 'standard time',\n 'daylight time',\n 'tommorrow',\n]\n","module.exports = [\n 'centuries',\n 'century',\n 'day',\n 'days',\n 'decade',\n 'decades',\n 'hour',\n 'hours',\n 'hr',\n 'hrs',\n 'millisecond',\n 'milliseconds',\n 'minute',\n 'minutes',\n 'min',\n 'mins',\n 'month',\n 'months',\n 'seconds',\n 'sec',\n 'secs',\n 'week end',\n 'week ends',\n 'weekend',\n 'weekends',\n 'week',\n 'weeks',\n 'wk',\n 'wks',\n 'year',\n 'years',\n 'yr',\n 'yrs',\n 'quarter',\n // 'quarters',\n 'qtr',\n 'qtrs',\n 'season',\n 'seasons',\n]\n","module.exports = [\n 'all hallows eve',\n 'all saints day',\n 'all sts day',\n 'april fools',\n 'armistice day',\n 'australia day',\n 'bastille day',\n 'boxing day',\n 'canada day',\n 'christmas eve',\n 'christmas',\n 'cinco de mayo',\n 'day of the dead',\n 'dia de muertos',\n 'dieciseis de septiembre',\n 'emancipation day',\n 'grito de dolores',\n 'groundhog day',\n 'halloween',\n 'harvey milk day',\n 'inauguration day',\n 'independence day',\n 'independents day',\n 'juneteenth',\n 'labour day',\n 'national freedom day',\n 'national nurses day',\n 'new years eve',\n 'new years',\n 'purple heart day',\n 'rememberance day',\n 'rosa parks day',\n 'saint andrews day',\n 'saint patricks day',\n 'saint stephens day',\n 'saint valentines day',\n 'st andrews day',\n 'st patricks day',\n 'st stephens day',\n 'st valentines day ',\n 'valentines day',\n 'valentines',\n 'veterans day',\n 'victoria day',\n 'womens equality day',\n 'xmas',\n // Fixed religious and cultural holidays\n // Catholic + Christian\n 'epiphany',\n 'orthodox christmas day',\n 'orthodox new year',\n 'assumption of mary',\n 'all souls day',\n 'feast of the immaculate conception',\n 'feast of our lady of guadalupe',\n\n // Kwanzaa\n 'kwanzaa',\n // Pagan / metal 🤘\n 'imbolc',\n 'beltaine',\n 'lughnassadh',\n 'samhain',\n 'martin luther king day',\n 'mlk day',\n 'presidents day',\n 'mardi gras',\n 'tax day',\n 'commonwealth day',\n 'mothers day',\n 'memorial day',\n 'fathers day',\n 'columbus day',\n 'indigenous peoples day',\n 'canadian thanksgiving',\n 'election day',\n 'thanksgiving',\n 't-day',\n 'turkey day',\n 'black friday',\n 'cyber monday',\n // Astronomical religious and cultural holidays\n 'ash wednesday',\n 'palm sunday',\n 'maundy thursday',\n 'good friday',\n 'holy saturday',\n 'easter',\n 'easter sunday',\n 'easter monday',\n 'orthodox good friday',\n 'orthodox holy saturday',\n 'orthodox easter',\n 'orthodox easter monday',\n 'ascension day',\n 'pentecost',\n 'whitsunday',\n 'whit sunday',\n 'whit monday',\n 'trinity sunday',\n 'corpus christi',\n 'advent',\n // Jewish\n 'tu bishvat',\n 'tu bshevat',\n 'purim',\n 'passover',\n 'yom hashoah',\n 'lag baomer',\n 'shavuot',\n 'tisha bav',\n 'rosh hashana',\n 'yom kippur',\n 'sukkot',\n 'shmini atzeret',\n 'simchat torah',\n 'chanukah',\n 'hanukkah',\n // Muslim\n 'isra and miraj',\n 'lailat al-qadr',\n 'eid al-fitr',\n 'id al-Fitr',\n 'eid ul-Fitr',\n 'ramadan',\n 'eid al-adha',\n 'muharram',\n 'the prophets birthday',\n 'ostara',\n 'march equinox',\n 'vernal equinox',\n 'litha',\n 'june solistice',\n 'summer solistice',\n 'mabon',\n 'september equinox',\n 'fall equinox',\n 'autumnal equinox',\n 'yule',\n 'december solstice',\n 'winter solstice',\n // Additional important holidays\n 'chinese new year',\n 'diwali',\n]\n","module.exports = [\n 'noon',\n 'midnight',\n 'morning',\n 'tonight',\n 'evening',\n 'afternoon',\n 'breakfast time',\n 'lunchtime',\n 'dinnertime',\n 'midday',\n 'eod',\n 'oclock',\n 'oclock',\n 'at night',\n // 'now',\n // 'night',\n // 'sometime',\n // 'all day',\n]\n","const timezones = require('../_timezones')\nconst data = [\n [require('./dates'), '#Date'],\n [require('./durations'), '#Duration'],\n [require('./holidays'), '#Holiday'],\n [require('./times'), '#Time'],\n [Object.keys(timezones), '#Timezone'],\n]\nlet lex = {\n 'a couple': 'Value',\n thur: 'WeekDay',\n}\ndata.forEach((a) => {\n for (let i = 0; i < a[0].length; i++) {\n lex[a[0][i]] = a[1]\n }\n})\n\nmodule.exports = lex\n","const spacetime = require('spacetime')\n\nclass Unit {\n constructor(input, unit, context) {\n this.unit = unit || 'day'\n context = context || {}\n let today = {}\n if (context.today) {\n today = {\n date: context.today.date(),\n month: context.today.month(),\n year: context.today.year(),\n }\n }\n // set it to the beginning of the given unit\n let d = spacetime(input, context.timezone, { today: today })\n\n // set to beginning?\n // if (d.isValid() && keepTime !== true) {\n // d = d.startOf(this.unit)\n // }\n Object.defineProperty(this, 'd', {\n enumerable: false,\n writable: true,\n value: d,\n })\n Object.defineProperty(this, 'context', {\n enumerable: false,\n writable: true,\n value: context,\n })\n }\n // make a new one\n clone() {\n let d = new Unit(this.d, this.unit, this.context)\n return d\n }\n log() {\n console.log('--')\n this.d.log()\n console.log('\\n')\n return this\n }\n applyShift(obj = {}) {\n Object.keys(obj).forEach((unit) => {\n this.d = this.d.add(obj[unit], unit)\n })\n return this\n }\n applyTime(str) {\n if (str) {\n this.d = this.d.time(str)\n } else {\n this.d = this.d.startOf('day') //zero-out time\n }\n return this\n }\n applyWeekDay(day) {\n if (day) {\n let epoch = this.d.epoch\n this.d = this.d.day(day)\n if (this.d.epoch < epoch) {\n this.d = this.d.add(1, 'week')\n }\n }\n return this\n }\n applyRel(rel) {\n if (rel === 'next') {\n return this.next()\n }\n if (rel === 'last' || rel === 'this-past') {\n // special 'this past' logic is handled in WeekDay\n return this.last()\n }\n return this\n }\n applySection(section) {\n if (section === 'start') {\n return this.start()\n }\n if (section === 'end') {\n return this.end()\n }\n if (section === 'middle') {\n return this.middle()\n }\n return this\n }\n format(fmt) {\n return this.d.format(fmt)\n }\n start() {\n // do we have a custom day-start?\n if (this.context.dayStart) {\n let dayStart = this.d.time(this.context.dayStart)\n if (dayStart.isBefore(this.d)) {\n this.d = dayStart\n return this\n }\n }\n this.d = this.d.startOf(this.unit)\n return this\n }\n end() {\n // do we have a custom day-end?\n if (this.context.dayEnd) {\n let dayEnd = this.d.time(this.context.dayEnd)\n if (dayEnd.isAfter(this.d)) {\n this.d = dayEnd\n return this\n }\n }\n this.d = this.d.endOf(this.unit)\n return this\n }\n middle() {\n let diff = this.d.diff(this.d.endOf(this.unit))\n let minutes = Math.round(diff.minutes / 2)\n this.d = this.d.add(minutes, 'minutes')\n return this\n }\n // move it to 3/4s through\n beforeEnd() {\n let diff = this.d.startOf(this.unit).diff(this.d.endOf(this.unit))\n let mins = Math.round(diff.minutes / 4)\n this.d = this.d.endOf(this.unit)\n this.d = this.d.minus(mins, 'minutes')\n if (this.context.dayStart) {\n this.d = this.d.time(this.context.dayStart)\n }\n return this\n }\n // the millescond before\n before() {\n this.d = this.d.minus(1, this.unit)\n this.d = this.d.endOf(this.unit)\n if (this.context.dayEnd) {\n this.d = this.d.time(this.context.dayEnd)\n }\n return this\n }\n // 'after 2019'\n after() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n // tricky: 'next june' 'next tuesday'\n next() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n // tricky: 'last june' 'last tuesday'\n last() {\n this.d = this.d.minus(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\nmodule.exports = Unit\n","const spacetime = require('spacetime')\nconst Unit = require('./Unit')\n\nclass Day extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n if (this.d.isValid()) {\n this.d = this.d.startOf('day')\n }\n }\n middle() {\n this.d = this.d.time('10am')\n return this\n }\n beforeEnd() {\n this.d = this.d.time('2pm')\n return this\n }\n}\n\n// like 'feb 2'\nclass CalendarDate extends Day {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n if (this.d.isValid()) {\n this.d = this.d.startOf('day')\n }\n }\n next() {\n this.d = this.d.add(1, 'year')\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n return this\n }\n}\n\nclass WeekDay extends Day {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n // is the input just a weekday?\n if (typeof input === 'string') {\n this.d = spacetime(context.today, context.timezone)\n this.d = this.d.day(input)\n // assume a wednesday in the future\n if (this.d.isBefore(context.today)) {\n this.d = this.d.add(7, 'days')\n }\n } else {\n this.d = input\n }\n this.weekDay = this.d.dayName()\n if (this.d.isValid()) {\n this.d = this.d.startOf('day')\n }\n }\n clone() {\n return new WeekDay(this.d, this.unit, this.context)\n }\n next() {\n this.d = this.d.add(7, 'days')\n this.d = this.d.day(this.weekDay)\n return this\n }\n last() {\n this.d = this.d.minus(7, 'days')\n this.d = this.d.day(this.weekDay)\n return this\n }\n // the millescond before\n before() {\n this.d = this.d.minus(1, 'day')\n this.d = this.d.endOf('day')\n if (this.context.dayEnd) {\n this.d = this.d.time(this.context.dayEnd)\n }\n return this\n }\n applyRel(rel) {\n if (rel === 'next') {\n let tooFar = this.context.today.endOf('week').add(1, 'week')\n this.next()\n // did we go too-far?\n if (this.d.isAfter(tooFar)) {\n this.last() // go back\n }\n return this\n }\n // the closest-one backwards\n if (rel === 'this-past') {\n return this.last()\n }\n if (rel === 'last') {\n let start = this.context.today.startOf('week')\n this.last()\n // are we still in 'this week' though?\n if (this.d.isBefore(start) === false) {\n this.last() // do it again\n }\n return this\n }\n return this\n }\n}\n\n// like 'haloween'\nclass Holiday extends CalendarDate {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n if (this.d.isValid()) {\n this.d = this.d.startOf('day')\n }\n }\n}\n\nmodule.exports = {\n Day: Day,\n WeekDay: WeekDay,\n CalendarDate: CalendarDate,\n Holiday: Holiday,\n}\n","const Unit = require('./Unit')\n\n// a specific month, like 'March'\nclass AnyMonth extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'month'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n}\n\n// a specific month, like 'March'\nclass Month extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'month'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n next() {\n this.d = this.d.add(1, 'year')\n this.d = this.d.startOf('month')\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n this.d = this.d.startOf('month')\n return this\n }\n}\n\nclass AnyQuarter extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'quarter'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n last() {\n this.d = this.d.minus(1, 'quarter')\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\n\nclass Quarter extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'quarter'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n next() {\n this.d = this.d.add(1, 'year')\n this.d = this.d.startOf(this.unit)\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\nclass Season extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'season'\n // set to beginning\n if (this.d.isValid()) {\n this.d = this.d.startOf(this.unit)\n }\n }\n next() {\n this.d = this.d.add(1, 'year')\n this.d = this.d.startOf(this.unit)\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\nclass Year extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'year'\n if (this.d.isValid()) {\n this.d = this.d.startOf('year')\n }\n }\n}\n\nmodule.exports = {\n AnyMonth: AnyMonth,\n Month: Month,\n Quarter: Quarter,\n AnyQuarter: AnyQuarter,\n Season: Season,\n Year: Year,\n}\n","const Unit = require('./Unit')\n\nclass Week extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'week'\n if (this.d.isValid()) {\n this.d = this.d.startOf('week')\n }\n }\n clone() {\n return new Week(this.d, this.unit, this.context)\n }\n middle() {\n this.d = this.d.add(2, 'days') //wednesday\n return this\n }\n // move it to 3/4s through\n beforeEnd() {\n this.d = this.d.day('friday')\n return this\n }\n}\n\n//may need some work\nclass WeekEnd extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'week'\n if (this.d.isValid()) {\n this.d = this.d.day('saturday')\n this.d = this.d.startOf('day')\n }\n }\n start() {\n this.d = this.d.day('saturday').startOf('day')\n return this\n }\n // end() {\n // this.d = this.d.day('sunday').endOf('day')\n // return this\n // }\n next() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf('weekend')\n return this\n }\n last() {\n this.d = this.d.minus(1, this.unit)\n this.d = this.d.startOf('weekend')\n return this\n }\n}\n\nmodule.exports = {\n Week: Week,\n WeekEnd: WeekEnd,\n}\n","const Unit = require('./Unit')\n\nclass Hour extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context, true)\n this.unit = 'hour'\n if (this.d.isValid()) {\n this.d = this.d.startOf('hour')\n }\n }\n}\nclass Minute extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context, true)\n this.unit = 'minute'\n if (this.d.isValid()) {\n this.d = this.d.startOf('minute')\n }\n }\n}\nclass Moment extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context, true)\n this.unit = 'millisecond'\n }\n}\n\nmodule.exports = {\n Hour: Hour,\n Minute: Minute,\n Moment: Moment,\n}\n","module.exports = Object.assign(\n { Unit: require('./Unit') },\n require('./_day'),\n require('./_year'),\n require('./_week'),\n require('./_time')\n)\n","const knownUnits = {\n second: true,\n minute: true,\n hour: true,\n day: true,\n week: true,\n weekend: true,\n month: true,\n season: true,\n quarter: true,\n year: true,\n}\n\nconst aliases = {\n wk: 'week',\n min: 'minute',\n sec: 'second',\n weekend: 'week', //for now...\n}\n\nconst parseUnit = function (m) {\n let unit = m.match('#Duration').text('normal')\n unit = unit.replace(/s$/, '')\n // support shorthands like 'min'\n if (aliases.hasOwnProperty(unit)) {\n unit = aliases[unit]\n }\n return unit\n}\n\n//turn '5 weeks before' to {weeks:5}\nconst parseShift = function (doc) {\n let result = {}\n let shift = doc.match('#DateShift+')\n if (shift.found === false) {\n return result\n }\n // '5 weeks'\n shift.match('#Cardinal #Duration').forEach((ts) => {\n let num = ts.match('#Cardinal').text('normal')\n num = parseFloat(num)\n if (num && typeof num === 'number') {\n let unit = parseUnit(ts)\n if (knownUnits[unit] === true) {\n result[unit] = num\n }\n }\n })\n //is it 2 weeks ago? → -2\n if (shift.has('(before|ago|hence|back)$') === true) {\n Object.keys(result).forEach((k) => (result[k] *= -1))\n }\n shift.remove('#Cardinal #Duration')\n // supoprt '1 day after tomorrow'\n let m = shift.match('[#Duration] [(after|before)]')\n if (m.found) {\n let unit = m.groups('unit').text('reduced')\n // unit = unit.replace(/s$/, '')\n let dir = m.groups('dir').text('reduced')\n if (dir === 'after') {\n result[unit] = 1\n } else if (dir === 'before') {\n result[unit] = -1\n }\n }\n // in half an hour\n m = shift.match('half (a|an) [#Duration]', 0)\n if (m.found) {\n let unit = parseUnit(m)\n result[unit] = 0.5\n }\n // finally, remove it from our text\n doc.remove('#DateShift')\n return result\n}\nmodule.exports = parseShift\n","/*\na 'counter' is a Unit determined after a point\n * first hour of x\n * 7th week in x\n * last year in x\n * \nunlike a shift, like \"2 weeks after x\"\n*/\nconst oneBased = {\n minute: true,\n}\nconst getCounter = function (doc) {\n // 7th week of\n let m = doc.match('[#Value] [#Duration+] (of|in)')\n if (m.found) {\n let obj = m.groups()\n let num = obj.num.text('reduced')\n let unit = obj.unit.text('reduced')\n let found = {\n unit: unit,\n num: Number(num) || 0,\n }\n // 0-based or 1-based units\n if (!oneBased[unit]) {\n found.num -= 1\n }\n doc = doc.remove(m)\n return found\n }\n // first week of\n m = doc.match('[(first|initial|last|final)] [#Duration+] (of|in)')\n if (m.found) {\n let obj = m.groups()\n let dir = obj.dir.text('reduced')\n let unit = obj.unit.text('reduced')\n if (dir === 'initial') {\n dir = 'first'\n }\n if (dir === 'final') {\n dir = 'last'\n }\n let found = {\n unit: unit,\n dir: dir,\n }\n doc = doc.remove(m)\n return found\n }\n\n return {}\n}\nmodule.exports = getCounter\n","const spacetime = require('spacetime')\n\nconst hardCoded = {\n daybreak: '7:00am', //ergh\n breakfast: '8:00am',\n morning: '9:00am',\n noon: '12:00pm',\n midday: '12:00pm',\n afternoon: '2:00pm',\n lunchtime: '12:00pm',\n evening: '6:00pm',\n dinnertime: '6:00pm',\n night: '8:00pm',\n eod: '10:00pm',\n midnight: '12:00am',\n}\n\nconst halfPast = function (m, s) {\n let hour = m.match('#Cardinal$').text('reduced')\n\n let term = m.match('(half|quarter|25|15|10|5)')\n let mins = term.text('reduced')\n if (term.has('half')) {\n mins = '30'\n }\n if (term.has('quarter')) {\n mins = '15'\n }\n let behind = m.has('to')\n // apply it\n s = s.hour(hour)\n s = s.startOf('hour')\n // assume 'half past 5' is 5pm\n if (hour < 6) {\n s = s.ampm('pm')\n }\n if (behind) {\n s = s.subtract(mins, 'minutes')\n } else {\n s = s.add(mins, 'minutes')\n }\n return s\n}\n\nconst parseTime = function (doc, context) {\n let time = doc.match('(at|by|for|before|this)? #Time+')\n if (time.found) {\n doc.remove(time)\n }\n // get the main part of the time\n time = time.not('^(at|by|for|before|this)')\n time = time.not('sharp')\n time = time.not('on the dot')\n let s = spacetime.now(context.timezone)\n let now = s.clone()\n\n // check for known-times (like 'today')\n let timeStr = time.text('reduced')\n if (hardCoded.hasOwnProperty(timeStr)) {\n return hardCoded[timeStr]\n }\n\n // '5 oclock'\n let m = time.match('^#Cardinal oclock (am|pm)?')\n if (m.found) {\n m = m.not('oclock')\n s = s.hour(m.text('reduced'))\n s = s.startOf('hour')\n if (s.isValid() && !s.isEqual(now)) {\n let ampm = m.match('(am|pm)').text('reduced')\n s = s.ampm(ampm)\n return s.time()\n }\n }\n\n // 'quarter to two'\n m = time.match('(half|quarter|25|15|10|5) (past|after|to) #Cardinal')\n if (m.found) {\n s = halfPast(m, s)\n if (s.isValid() && !s.isEqual(now)) {\n return s.time()\n }\n }\n // '4 in the evening'\n m = time.match('[(after|before)]");if(n.found){var r=n.groups("unit").text("reduced"),i=n.groups("dir").text("reduced");"after"===i?e[r]=1:"before"===i&&(e[r]=-1)}if((n=a.match("half (a|an) [#Duration]",0)).found){var o=R(n);e[o]=.5}return t.remove("#DateShift"),e},Z={minute:!0},G=function(t){var e=t.match("[#Value] [#Duration+] (of|in)");if(e.found){var a=e.groups(),n=a.num.text("reduced"),r=a.unit.text("reduced"),i={unit:r,num:Number(n)||0};return Z[r]||(i.num-=1),t=t.remove(e),i}if((e=t.match("[(first|initial|last|final)] [#Duration+] (of|in)")).found){var o=e.groups(),u=o.dir.text("reduced");"initial"===u&&(u="first"),"final"===u&&(u="last");var s={unit:o.unit.text("reduced"),dir:u};return t=t.remove(e),s}return{}},U={daybreak:"7:00am",breakfast:"8:00am",morning:"9:00am",noon:"12:00pm",midday:"12:00pm",afternoon:"2:00pm",lunchtime:"12:00pm",evening:"6:00pm",dinnertime:"6:00pm",night:"8:00pm",eod:"10:00pm",midnight:"12:00am"},X=function(t,e){var a=t.match("(at|by|for|before|this)? #Time+");a.found&&t.remove(a),a=(a=(a=a.not("^(at|by|for|before|this)")).not("sharp")).not("on the dot");var n=x.now(e.timezone),r=n.clone(),i=a.text("reduced");if(U.hasOwnProperty(i))return U[i];var o=a.match("^#Cardinal oclock (am|pm)?");if(o.found&&(o=o.not("oclock"),(n=(n=n.hour(o.text("reduced"))).startOf("hour")).isValid()&&!n.isEqual(r))){var u=o.match("(am|pm)").text("reduced");return(n=n.ampm(u)).time()}if((o=a.match("(half|quarter|25|15|10|5) (past|after|to) #Cardinal")).found&&(n=function(t,e){var a=t.match("#Cardinal$").text("reduced"),n=t.match("(half|quarter|25|15|10|5)"),r=n.text("reduced");n.has("half")&&(r="30"),n.has("quarter")&&(r="15");var i=t.has("to");return e=(e=e.hour(a)).startOf("hour"),a<6&&(e=e.ampm("pm")),i?e.subtract(r,"minutes"):e.add(r,"minutes")}(o,n)).isValid()&&!n.isEqual(r))return n.time();if((o=a.match("[(after|before)]");if(n.found){var r=n.groups("unit").text("reduced"),i=n.groups("dir").text("reduced");"after"===i?e[r]=1:"before"===i&&(e[r]=-1)}if((n=a.match("half (a|an) [#Duration]",0)).found){var o=at(n);e[o]=.5}return t.remove("#DateShift"),e},rt={minute:!0},it=function(t){var e=t.match("[#Value] [#Duration+] (of|in)");if(e.found){var a=e.groups(),n=a.num.text("reduced"),r=a.unit.text("reduced"),i={unit:r,num:Number(n)||0};return rt[r]||(i.num-=1),t=t.remove(e),i}if((e=t.match("[(first|initial|last|final)] [#Duration+] (of|in)")).found){var o=e.groups(),u=o.dir.text("reduced");"initial"===u&&(u="first"),"final"===u&&(u="last");var s={unit:o.unit.text("reduced"),dir:u};return t=t.remove(e),s}return{}},ot={daybreak:"7:00am",breakfast:"8:00am",morning:"9:00am",noon:"12:00pm",midday:"12:00pm",afternoon:"2:00pm",lunchtime:"12:00pm",evening:"6:00pm",dinnertime:"6:00pm",night:"8:00pm",eod:"10:00pm",midnight:"12:00am"},ut=function(t,e){var a=t.match("(at|by|for|before|this)? #Time+");a.found&&t.remove(a),a=(a=(a=a.not("^(at|by|for|before|this)")).not("sharp")).not("on the dot");var n=V.now(e.timezone),r=n.clone(),i=a.text("reduced");if(ot.hasOwnProperty(i))return ot[i];var o=a.match("^#Cardinal oclock (am|pm)?");if(o.found&&(o=o.not("oclock"),(n=(n=n.hour(o.text("reduced"))).startOf("hour")).isValid()&&!n.isEqual(r))){var u=o.match("(am|pm)").text("reduced");return(n=n.ampm(u)).time()}if((o=a.match("(half|quarter|25|15|10|5) (past|after|to) #Cardinal")).found&&(n=function(t,e){var a=t.match("#Cardinal$").text("reduced"),n=t.match("(half|quarter|25|15|10|5)"),r=n.text("reduced");n.has("half")&&(r="30"),n.has("quarter")&&(r="15");var i=t.has("to");return e=(e=e.hour(a)).startOf("hour"),a<6&&(e=e.ampm("pm")),i?e.subtract(r,"minutes"):e.add(r,"minutes")}(o,n)).isValid()&&!n.isEqual(r))return n.time();if((o=a.match("[*] (through|thru) [*]', -// parse: (m, context) => { -// let from = m.groups('a') -// let to = m.groups('b') -// from = parseDate(from, context) -// to = parseDate(to, context) -// if (from && to) { -// return { -// start: from, -// end: to.end(), -// } -// } -// return null -// }, -// }, -// { -// // 'A until B' (not inclusive end) -// match: 'from? [*] (to|until|upto) [*]', -// parse: (m, context) => { -// let from = m.groups('a') -// let to = m.groups('b') -// from = parseDate(from, context) -// to = parseDate(to, context) -// if (from && to) { -// return { -// start: from, -// end: to.end(), -// } -// } -// return null -// }, -// }, -{ +}, { // 'before june' match: '^due? (by|before) [*]', group: 0, @@ -8121,13 +8149,73 @@ var ranges = [{ }; } + return null; + } +}, { + // 'middle of' + match: '^(middle|center|midpoint) of [*]', + group: 0, + parse: function parse(m, context) { + var unit = parse_1$2(m, context); + var start = unit.clone().middle(); + var end = unit.beforeEnd(); + + if (unit) { + return { + start: start, + end: end + }; + } + + return null; + } +}, { + // 'tuesday after 5pm' + match: '* after #Time+$', + parse: function parse(m, context) { + var unit = parse_1$2(m, context); + var start = unit.clone(); + var end = unit.end(); + + if (unit) { + return { + start: start, + end: end + }; + } + + return null; + } +}, { + // 'tuesday before noon' + match: '* before #Time+$', + parse: function parse(m, context) { + var unit = parse_1$2(m, context); + var end = unit.clone(); + var start = unit.start(); + + if (unit) { + return { + start: start, + end: end + }; + } + return null; } }]; var parseRange = function parseRange(doc, context) { // parse-out 'every week ..' - var interval = intervals(doc) || {}; // try each template in order + var interval = intervals(doc) || {}; // if it's *only* an interval response + + if (doc.found === false) { + return Object.assign({}, interval, { + start: null, + end: null + }); + } // try each template in order + for (var i = 0; i < ranges.length; i += 1) { var fmt = ranges[i]; @@ -8155,13 +8243,21 @@ var parseRange = function parseRange(doc, context) { var unit = parse_1$2(doc, context); if (unit) { + var end = unit.clone().end(); res = { start: unit, - end: unit.clone().end() + end: end }; } - var combined = Object.assign({}, interval, res); + var combined = Object.assign({}, interval, res); // ensure start is not after end + // console.log(combined) + + if (combined.start && combined.end && combined.start.d.epoch > combined.end.d.epoch) { + // console.warn('Warning: Start date is after End date') + combined.start = combined.start.start(); // combined.end = combined.start.clone() + } + return combined; }; @@ -8217,6 +8313,7 @@ var normalize = function normalize(doc) { var normalize_1 = normalize; var maxDate = 8640000000000000; +var max_loops = 500; var shouldPick = function shouldPick(s, byDay) { if (byDay && byDay[s.dayName()] !== true) { @@ -8230,7 +8327,13 @@ var shouldPick = function shouldPick(s, byDay) { var generateDates = function generateDates(result, context) { var list = []; var max_count = context.max_repeat || 12; - var s = spacetime(result.start || context.today, context.timezone); // should we stop at the end date? + var s = spacetime(result.start || context.today, context.timezone); + s = s.startOf('day'); + + if (context.dayStart) { + s = s.time(context.dayStart); + } // should we stop at the end date? + var end = spacetime(result.end, context.timezone); var toAdd = Object.keys(result.repeat.interval); @@ -8250,7 +8353,11 @@ var generateDates = function generateDates(result, context) { var loops = 0; // TODO: learn how to write better software. - while (list.length < max_count && s.epoch < end.epoch) { + for (var i = 0; i < max_loops; i += 1) { + if (list.length >= max_count || s.epoch >= end.epoch) { + break; + } + if (shouldPick(s, byDay)) { list.push(s.iso()); } @@ -8267,7 +8374,14 @@ var generateDates = function generateDates(result, context) { } } - result.repeat.generated = list; + result.repeat.generated = list; // if we got an interval, but not a start/end + + if (!result.start && result.repeat.generated && result.repeat.generated.length > 1) { + var arr = result.repeat.generated; + result.start = arr[0]; + result.end = arr[arr.length - 1]; + } + return result; }; @@ -8761,6 +8875,13 @@ var findDate = function findDate(doc) { if (m.found) { dates = dates.splitOn('#WeekDay'); dates = dates.not('^and'); + } // '5 june, 10 june' + + + m = dates.match('[#Value #Month] #Value #Month', 0); + + if (m.found) { + dates = dates.splitAfter(m); } // 'june 5th, june 10th' @@ -8782,13 +8903,30 @@ var findDate = function findDate(doc) { if (m.found) { dates = dates.not(m); - } // // 'january, february' - // m = dates.match('^[#Month] (and|or)? #Month$', 0) - // if (m.found) { - // dates = dates.splitAfter(m) - // dates = dates.not('^(and|or)') - // } + } // 'one saturday' + + + dates = dates.notIf('^one (#WeekDay|#Month)$'); // next week tomorrow + + m = dates.match('(this|next) #Duration [(today|tomorrow|yesterday)]', 0); + + if (m.found) { + dates = dates.splitBefore(m); + } // tomorrow 15 march + + + m = dates.match('[(today|tomorrow|yesterday)] #Value #Month', 0); + + if (m.found) { + dates = dates.splitAfter(m); + } // tomorrow yesterday + + m = dates.match('[(today|tomorrow|yesterday)] (today|tomorrow|yesterday)', 0); + + if (m.found) { + dates = dates.splitAfter(m); + } return dates; }; @@ -8843,7 +8981,12 @@ var addMethods = function addMethods(Doc, world) { n = null; } - context = Object.assign({}, context, opts); + context = Object.assign({}, context, opts); // use the user's timezone, by default + + if (context.timezone === undefined) { + context.timezone = spacetime().timezone().name; + } + var dates = find(this); if (typeof n === 'number') { diff --git a/plugins/dates/changelog.md b/plugins/dates/changelog.md index 7f5589170..d4ab97ca8 100644 --- a/plugins/dates/changelog.md +++ b/plugins/dates/changelog.md @@ -2,6 +2,13 @@ +### 1.5.3 [March 2021] +- **[change]** - move Timezone tag to main lib +- **[change]** - support timezone-abbrevations + +### 1.5.0 [March 2021] +- **[change]** - return dates in computer's timezone, unless set + ### 1.4.3 [March 2021] - **[change]** - consecutive date tokenization changes - **[change]** - fixes to 'this/next/last x' logic diff --git a/plugins/dates/package-lock.json b/plugins/dates/package-lock.json index b9acedd5e..ce7223dcc 100644 --- a/plugins/dates/package-lock.json +++ b/plugins/dates/package-lock.json @@ -1,8 +1,1446 @@ { "name": "compromise-dates", - "version": "1.4.3", - "lockfileVersion": 1, + "version": "1.5.3", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "compromise-dates", + "version": "1.5.3", + "license": "MIT", + "dependencies": { + "spacetime": "6.13.1", + "spacetime-holiday": "0.1.0" + }, + "devDependencies": { + "@rollup/plugin-alias": "3.1.2", + "@rollup/plugin-commonjs": "17.1.0", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "11.2.0", + "rollup": "2.41.2", + "rollup-plugin-babel": "4.4.0", + "rollup-plugin-filesize-check": "0.0.1", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.2" + }, + "peerDependencies": { + "compromise": ">=12.0.0", + "compromise-numbers": ">=1.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.1" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@rollup/plugin-alias": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.2.tgz", + "integrity": "sha512-wzDnQ6v7CcoRzS0qVwFPrFdYA4Qlr+ookA217Y2Z3DPZE1R8jrFNM3jvGgOf6o6DMjbnQIn5lCIJgHPe1Bt3uw==", + "dev": true, + "dependencies": { + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", + "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", + "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" + } + }, + "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-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz", + "integrity": "sha512-qHjNIKYt5pCcn+5RUBQxK8krhRvf1HnyVgUCcFFcweDS7fhkOLZeYh0mhHK6Ery8/bb9tvN/ubPzmfF0qjDCTA==", + "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" + } + }, + "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" + } + }, + "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": "14.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz", + "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", + "dev": true + }, + "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/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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "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", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "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", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/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 + }, + "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.1", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.1.tgz", + "integrity": "sha512-c6zhWJzXQBXWQXHqfVQC31KJHHW1VFP138TT2moE8A1qzzJfjjbBCxO227rPnCUTpg4I2+SHWfWpC8v/XoZ4Iw==", + "peer": true, + "dependencies": { + "efrt-unpack": "2.2.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/compromise-numbers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/compromise-numbers/-/compromise-numbers-1.2.0.tgz", + "integrity": "sha512-oGQvO5pK+5DLFAV/mk9FDhr4QWnCG6fMAZqoykqvOmP3g/R0haEVazcXgdhz72VlJIURMfIkeslaa5vdjVlffg==", + "peer": true, + "peerDependencies": { + "compromise": ">=12.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "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=", + "dev": true + }, + "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, + "dependencies": { + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "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", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "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, + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/efrt-unpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/efrt-unpack/-/efrt-unpack-2.2.0.tgz", + "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==", + "peer": 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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "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/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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "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, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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 + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "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.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "node_modules/is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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 + }, + "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", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-reference": { + "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": "*" + } + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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 + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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 + }, + "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 + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.1.tgz", + "integrity": "sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "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, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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/magic-string": { + "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, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "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/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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/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 + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "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, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "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=", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "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=", + "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=", + "dev": true, + "dependencies": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/rollup": { + "version": "2.41.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.2.tgz", + "integrity": "sha512-6u8fJJXJx6fmvKrAC9DHYZgONvSkz8S9b/VFBjoQ6dkKdHyPpPbpqiNl2Bao9XBzDHpq672X6sGZ9G1ZBqAHMg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "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-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-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, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "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.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "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, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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 + }, + "node_modules/spacetime": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.13.1.tgz", + "integrity": "sha512-sXpF4WxTt637z2THlmwfe2OVIIsjPV660NN6oPNsLpFpTt6WtcvImqneWgQJEQDk6S+FfTm4tdiI57Qenb4Idw==" + }, + "node_modules/spacetime-holiday": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/spacetime-holiday/-/spacetime-holiday-0.1.0.tgz", + "integrity": "sha512-rYIpSDbHnznZRstUrmYYFAaruW8e96t+1JfS0b6qMiAAQ2DrkLKc8oMotAAkB9qMTUwXXf5bIkdTHfP434uitQ==" + }, + "node_modules/split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "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/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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "chalk": "4.1.0", + "tap-out": "3.0.0" + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "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" + }, + "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_modules/tape": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", + "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "object-inspect": "^1.9.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", + "through": "^2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "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, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/through": { + "version": "2.3.8", + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "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, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "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, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + }, "dependencies": { "@babel/code-frame": { "version": "7.10.4", @@ -251,6 +1689,22 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "compromise": { + "version": "13.10.1", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.1.tgz", + "integrity": "sha512-c6zhWJzXQBXWQXHqfVQC31KJHHW1VFP138TT2moE8A1qzzJfjjbBCxO227rPnCUTpg4I2+SHWfWpC8v/XoZ4Iw==", + "peer": true, + "requires": { + "efrt-unpack": "2.2.0" + } + }, + "compromise-numbers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/compromise-numbers/-/compromise-numbers-1.2.0.tgz", + "integrity": "sha512-oGQvO5pK+5DLFAV/mk9FDhr4QWnCG6fMAZqoykqvOmP3g/R0haEVazcXgdhz72VlJIURMfIkeslaa5vdjVlffg==", + "peer": true, + "requires": {} + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -324,6 +1778,12 @@ "minimatch": "^3.0.4" } }, + "efrt-unpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/efrt-unpack/-/efrt-unpack-2.2.0.tgz", + "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==", + "peer": true + }, "es-abstract": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", @@ -834,9 +2294,9 @@ } }, "rollup": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.40.0.tgz", - "integrity": "sha512-WiOGAPbXoHu+TOz6hyYUxIksOwsY/21TRWoO593jgYt8mvYafYqQl+axaA8y1z2HFazNUUrsMSjahV2A6/2R9A==", + "version": "2.41.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.2.tgz", + "integrity": "sha512-6u8fJJXJx6fmvKrAC9DHYZgONvSkz8S9b/VFBjoQ6dkKdHyPpPbpqiNl2Bao9XBzDHpq672X6sGZ9G1ZBqAHMg==", "dev": true, "requires": { "fsevents": "~2.3.1" @@ -950,9 +2410,9 @@ "dev": true }, "spacetime": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.13.0.tgz", - "integrity": "sha512-gHOtAjPG2e2VK7o9yNevMrj9oJcACrazTI6pER97PfPF2Vdmp10aJPYc0QnrPmB6zHFJtbVboPk296rIICi0lw==" + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.13.1.tgz", + "integrity": "sha512-sXpF4WxTt637z2THlmwfe2OVIIsjPV660NN6oPNsLpFpTt6WtcvImqneWgQJEQDk6S+FfTm4tdiI57Qenb4Idw==" }, "spacetime-holiday": { "version": "0.1.0", @@ -968,6 +2428,23 @@ "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "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 + } + } + }, "string.prototype.trim": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", @@ -999,23 +2476,6 @@ "define-properties": "^1.1.3" } }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "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 - } - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", diff --git a/plugins/dates/package.json b/plugins/dates/package.json index 26b359933..7e2874847 100644 --- a/plugins/dates/package.json +++ b/plugins/dates/package.json @@ -1,7 +1,7 @@ { "name": "compromise-dates", "description": "plugin for nlp-compromise", - "version": "1.4.3", + "version": "1.5.3", "author": "Spencer Kelly (http://spencermounta.in)", "main": "./builds/compromise-dates.js", "unpkg": "./builds/compromise-dates.min.js", @@ -41,7 +41,7 @@ "@rollup/plugin-commonjs": "17.1.0", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "11.2.0", - "rollup": "2.40.0", + "rollup": "2.41.2", "rollup-plugin-babel": "4.4.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-terser": "7.0.2", @@ -49,7 +49,7 @@ "tape": "5.2.2" }, "dependencies": { - "spacetime": "6.13.0", + "spacetime": "6.13.1", "spacetime-holiday": "0.1.0" }, "license": "MIT" diff --git a/plugins/dates/scratch.js b/plugins/dates/scratch.js index a476fc1e6..713ea79f0 100644 --- a/plugins/dates/scratch.js +++ b/plugins/dates/scratch.js @@ -9,11 +9,18 @@ const fmt = (iso) => (iso ? spacetime(iso).format('{day-short} {nice} {year}') : const context = { // today: '2021-03-01', //monday // today: '2021-03-02', //tuesday - today: '2016-03-05', //on friday + // today: '2016-03-05', //on friday + // timezone: null, + dayStart: '10am', + dayEnd: '5pm', } -let doc = nlp('weds').debug() -let dates = doc.dates(context).get() +// let doc = nlp('end of april') +let doc = nlp('middle of next quarter') //.debug() + +let dates = doc.dates(context) +dates = dates.get() +console.log(dates) dates.forEach((date) => { console.log('start: ', fmt(date.start)) console.log(' end: ', fmt(date.end)) diff --git a/plugins/dates/src/01-tagger/00-basic.js b/plugins/dates/src/01-tagger/00-basic.js index 57ed35d55..7861921bd 100644 --- a/plugins/dates/src/01-tagger/00-basic.js +++ b/plugins/dates/src/01-tagger/00-basic.js @@ -103,7 +103,7 @@ const tagDates = function (doc) { //june the 5th date.match('#Date the? #Ordinal').tag('Date', 'correction') //last month - date.match(`${thisNext} #Date`).tag('Date', 'thisNext') + date.match(`${thisNext} #Date`).tag('Date', 'thisNext-date') //by 5 March date.match('due? (by|before|after|until) #Date').tag('Date', 'by') //next feb @@ -170,10 +170,10 @@ const tagDates = function (doc) { time.match('(by|before|after|at|@|about) #Time').tag('Time', 'preposition-time') //7 7pm // time.match('#Cardinal #Time').not('#Year').tag('Time', 'value-time') - //2pm est - time.match('#Time [(eastern|pacific|central|mountain)]', 0).tag('Date', 'timezone') - //6pm est - time.match('#Time [(est|pst|gmt)]', 0).tag('Date', 'timezone abbr') + // //2pm est + // time.match('#Time [(eastern|pacific|central|mountain)]', 0).tag('Date', 'timezone') + // //6pm est + // time.match('#Time [(est|pst|gmt)]', 0).tag('Date', 'timezone abbr') } //'2020' bare input let m = doc.match('^/^20[012][0-9]$/$') diff --git a/plugins/dates/src/01-tagger/04-time.js b/plugins/dates/src/01-tagger/04-time.js index c426634ec..5b0942887 100644 --- a/plugins/dates/src/01-tagger/04-time.js +++ b/plugins/dates/src/01-tagger/04-time.js @@ -24,15 +24,8 @@ const timeTagger = function (doc) { doc.match('#Date [at #Cardinal]', 0).notIf('#Year').tag('Time', here) // half an hour doc.match('half an (hour|minute|second)').tag('Date', here) - //eastern daylight time - doc.match('#Noun (standard|daylight|central|mountain)? time').tag('Timezone', here) - //utc+5 - doc.match('/^utc[+-][0-9]/').tag('Timezone', here) - doc.match('/^gmt[+-][0-9]/').tag('Timezone', here) - + // in eastern time doc.match('(in|for|by|near|at) #Timezone').tag('Timezone', here) - // 2pm eastern - doc.match('#Time [(eastern|mountain|pacific|central)]', 0).tag('Timezone', here) } // around four thirty doc.match('(at|around|near) [#Cardinal (thirty|fifteen) (am|pm)?]', 0).tag('Time', here) diff --git a/plugins/dates/src/01-tagger/07-timezone.js b/plugins/dates/src/01-tagger/07-timezone.js new file mode 100644 index 000000000..0b5f8da1f --- /dev/null +++ b/plugins/dates/src/01-tagger/07-timezone.js @@ -0,0 +1,106 @@ +// timezone abbreviations +// (from spencermountain/timezone-soft) +const zones = [ + 'act', + 'aft', + 'akst', + 'anat', + 'art', + 'azot', + 'azt', + 'bnt', + 'bot', + 'bt', + 'cast', + 'cat', + 'cct', + 'chast', + 'chut', + 'ckt', + 'cvt', + 'cxt', + 'davt', + 'eat', + 'ect', + 'fjt', + 'fkst', + 'fnt', + 'gamt', + 'get', + 'gft', + 'gilt', + 'gyt', + 'hast', + 'hncu', + 'hneg', + 'hnnomx', + 'hnog', + 'hnpm', + 'hnpmx', + 'hntn', + 'hovt', + 'iot', + 'irkt', + 'jst', + 'kgt', + 'kost', + 'lint', + 'magt', + 'mart', + 'mawt', + 'mmt', + 'nct', + 'nft', + 'novt', + 'npt', + 'nrt', + 'nut', + 'nzst', + 'omst', + 'pet', + 'pett', + 'phot', + 'phst', + 'pont', + 'pwt', + 'ret', + 'sakt', + 'samt', + 'sbt', + 'sct', + 'sret', + 'srt', + 'syot', + 'taht', + 'tft', + 'tjt', + 'tkt', + 'tlt', + 'tmt', + 'tot', + 'tvt', + 'ulat', + 'vut', + 'wakt', + 'wat', + 'wet', + 'wft', + 'wit', + 'wst', + 'yekt', +].reduce((h, str) => { + h[str] = true + return h +}, {}) + +const tagTz = function (doc) { + // 4pm PST + let m = doc.match('#Time [#Acronym]', 0) + if (m.found) { + let str = m.text('reduced') + if (zones[str] === true) { + m.tag('Timezone', 'tz-abbr') + } + } +} +module.exports = tagTz diff --git a/plugins/dates/src/01-tagger/07-fixup.js b/plugins/dates/src/01-tagger/08-fixup.js similarity index 96% rename from plugins/dates/src/01-tagger/07-fixup.js rename to plugins/dates/src/01-tagger/08-fixup.js index 59534bdc2..78d1087df 100644 --- a/plugins/dates/src/01-tagger/07-fixup.js +++ b/plugins/dates/src/01-tagger/08-fixup.js @@ -29,7 +29,7 @@ const fixUp = function (doc) { // .unTag('Date') // .lastTerm() // .tag('Date', here) - d.match(`(this|last|next) #Date ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'this month yesterday') + // d.match(`(this|last|next) #Date ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'this month yesterday') } //tomorrow on 5 d.match(`on #Cardinal$`).unTag('Date', here) diff --git a/plugins/dates/src/01-tagger/index.js b/plugins/dates/src/01-tagger/index.js index ba5983128..471d8bbe4 100644 --- a/plugins/dates/src/01-tagger/index.js +++ b/plugins/dates/src/01-tagger/index.js @@ -6,13 +6,20 @@ const methods = [ require('./04-time'), require('./05-shifts'), require('./06-intervals'), - require('./07-fixup'), + require('./07-timezone'), + require('./08-fixup'), ] // normalizations to run before tagger const normalize = function (doc) { // turn '20mins' into '20 mins' - doc.numbers().normalize() // this is sorta problematic + if (typeof doc.numbers === 'function') { + doc.numbers().normalize() + } else { + console.warn( + `Warning: compromise-numbers plugin is not loaded.\n You should load this plugin \n - https://bit.ly/3t8RfFG` + ) + } return doc } diff --git a/plugins/dates/src/02-ranges/index.js b/plugins/dates/src/02-ranges/index.js index a6b6dc835..96582a709 100644 --- a/plugins/dates/src/02-ranges/index.js +++ b/plugins/dates/src/02-ranges/index.js @@ -6,6 +6,10 @@ const ranges = require('./ranges') const parseRange = function (doc, context) { // parse-out 'every week ..' let interval = parseInterval(doc, context) || {} + // if it's *only* an interval response + if (doc.found === false) { + return Object.assign({}, interval, { start: null, end: null }) + } // try each template in order for (let i = 0; i < ranges.length; i += 1) { let fmt = ranges[i] @@ -28,12 +32,21 @@ const parseRange = function (doc, context) { } let unit = parseDate(doc, context) if (unit) { + let end = unit.clone().end() res = { start: unit, - end: unit.clone().end(), + end: end, } } let combined = Object.assign({}, interval, res) + // ensure start is not after end + // console.log(combined) + if (combined.start && combined.end && combined.start.d.epoch > combined.end.d.epoch) { + // console.warn('Warning: Start date is after End date') + combined.start = combined.start.start() + // combined.end = combined.start.clone() + } + return combined } module.exports = parseRange diff --git a/plugins/dates/src/02-ranges/ranges.js b/plugins/dates/src/02-ranges/ranges.js index 90e6b094a..22626c21e 100644 --- a/plugins/dates/src/02-ranges/ranges.js +++ b/plugins/dates/src/02-ranges/ranges.js @@ -177,42 +177,6 @@ module.exports = [ }, }, - // { - // // 'A through B' (inclusive end) - // match: 'from? [*] (through|thru) [*]', - // parse: (m, context) => { - // let from = m.groups('a') - // let to = m.groups('b') - // from = parseDate(from, context) - // to = parseDate(to, context) - // if (from && to) { - // return { - // start: from, - // end: to.end(), - // } - // } - // return null - // }, - // }, - - // { - // // 'A until B' (not inclusive end) - // match: 'from? [*] (to|until|upto) [*]', - // parse: (m, context) => { - // let from = m.groups('a') - // let to = m.groups('b') - // from = parseDate(from, context) - // to = parseDate(to, context) - // if (from && to) { - // return { - // start: from, - // end: to.end(), - // } - // } - // return null - // }, - // }, - { // 'before june' match: '^due? (by|before) [*]', @@ -279,4 +243,53 @@ module.exports = [ return null }, }, + { + // 'middle of' + match: '^(middle|center|midpoint) of [*]', + group: 0, + parse: (m, context) => { + let unit = parseDate(m, context) + let start = unit.clone().middle() + let end = unit.beforeEnd() + if (unit) { + return { + start: start, + end: end, + } + } + return null + }, + }, + { + // 'tuesday after 5pm' + match: '* after #Time+$', + parse: (m, context) => { + let unit = parseDate(m, context) + let start = unit.clone() + let end = unit.end() + if (unit) { + return { + start: start, + end: end, + } + } + return null + }, + }, + { + // 'tuesday before noon' + match: '* before #Time+$', + parse: (m, context) => { + let unit = parseDate(m, context) + let end = unit.clone() + let start = unit.start() + if (unit) { + return { + start: start, + end: end, + } + } + return null + }, + }, ] diff --git a/plugins/dates/src/data/_tags.js b/plugins/dates/src/data/_tags.js index 44a629964..0f52890fe 100644 --- a/plugins/dates/src/data/_tags.js +++ b/plugins/dates/src/data/_tags.js @@ -20,11 +20,6 @@ module.exports = { Holiday: { isA: ['Date', 'Noun'], }, - // 'PST' - Timezone: { - isA: ['Date', 'Noun'], - notA: ['Adjective', 'DateShift'], - }, // 'two weeks before' DateShift: { isA: ['Date'], diff --git a/plugins/dates/src/find.js b/plugins/dates/src/find.js index b9fd4bee9..af5aeb3cc 100644 --- a/plugins/dates/src/find.js +++ b/plugins/dates/src/find.js @@ -47,12 +47,16 @@ const findDate = function (doc) { dates = dates.splitOn('#WeekDay') dates = dates.not('^and') } + // '5 june, 10 june' + m = dates.match('[#Value #Month] #Value #Month', 0) + if (m.found) { + dates = dates.splitAfter(m) + } // 'june 5th, june 10th' m = dates.match('[#Month #Value] #Month', 0) if (m.found) { dates = dates.splitAfter(m) } - // '20 minutes june 5th' m = dates.match('[#Cardinal #Duration] #Date', 0) //but allow '20 minutes ago' if (m.found && !dates.has('#Cardinal #Duration] (ago|from|before|after|back)')) { @@ -63,13 +67,24 @@ const findDate = function (doc) { if (m.found) { dates = dates.not(m) } - // // 'january, february' - // m = dates.match('^[#Month] (and|or)? #Month$', 0) - // if (m.found) { - // dates = dates.splitAfter(m) - // dates = dates.not('^(and|or)') - // } + // 'one saturday' + dates = dates.notIf('^one (#WeekDay|#Month)$') + // next week tomorrow + m = dates.match('(this|next) #Duration [(today|tomorrow|yesterday)]', 0) + if (m.found) { + dates = dates.splitBefore(m) + } + // tomorrow 15 march + m = dates.match('[(today|tomorrow|yesterday)] #Value #Month', 0) + if (m.found) { + dates = dates.splitAfter(m) + } + // tomorrow yesterday + m = dates.match('[(today|tomorrow|yesterday)] (today|tomorrow|yesterday)', 0) + if (m.found) { + dates = dates.splitAfter(m) + } return dates } module.exports = findDate diff --git a/plugins/dates/src/generate.js b/plugins/dates/src/generate.js index a0981fa4b..be3211f22 100644 --- a/plugins/dates/src/generate.js +++ b/plugins/dates/src/generate.js @@ -1,5 +1,6 @@ const spacetime = require('spacetime') const maxDate = 8640000000000000 +const max_loops = 500 const shouldPick = function (s, byDay) { if (byDay && byDay[s.dayName()] !== true) { @@ -13,6 +14,10 @@ const generateDates = function (result, context) { let list = [] let max_count = context.max_repeat || 12 let s = spacetime(result.start || context.today, context.timezone) + s = s.startOf('day') + if (context.dayStart) { + s = s.time(context.dayStart) + } // should we stop at the end date? let end = spacetime(result.end, context.timezone) let toAdd = Object.keys(result.repeat.interval) @@ -28,7 +33,10 @@ const generateDates = function (result, context) { // start going! let loops = 0 // TODO: learn how to write better software. - while (list.length < max_count && s.epoch < end.epoch) { + for (let i = 0; i < max_loops; i += 1) { + if (list.length >= max_count || s.epoch >= end.epoch) { + break + } if (shouldPick(s, byDay, end)) { list.push(s.iso()) } @@ -43,6 +51,12 @@ const generateDates = function (result, context) { } } result.repeat.generated = list + // if we got an interval, but not a start/end + if (!result.start && result.repeat.generated && result.repeat.generated.length > 1) { + let arr = result.repeat.generated + result.start = arr[0] + result.end = arr[arr.length - 1] + } return result } module.exports = generateDates diff --git a/plugins/dates/src/index.js b/plugins/dates/src/index.js index 151c1ec5e..b20d5bfcd 100644 --- a/plugins/dates/src/index.js +++ b/plugins/dates/src/index.js @@ -41,6 +41,10 @@ const addMethods = function (Doc, world) { n = null } context = Object.assign({}, context, opts) + // use the user's timezone, by default + if (context.timezone === undefined) { + context.timezone = spacetime().timezone().name + } let dates = findDates(this) if (typeof n === 'number') { diff --git a/plugins/dates/src/parseDate/parse.js b/plugins/dates/src/parseDate/parse.js index 43fadab38..37402558a 100644 --- a/plugins/dates/src/parseDate/parse.js +++ b/plugins/dates/src/parseDate/parse.js @@ -69,16 +69,11 @@ const parseDate = function (doc, context) { // 2 days after.. if (shift) { unit.applyShift(shift) - // if (shift.hour || shift.minute || shift.second) { - // console.log(shift) - // unit = new Hour(unit.d, null, unit.context) - // } } // wednesday next week if (weekDay && unit.unit !== 'day') { unit.applyWeekDay(weekDay) unit = new WeekDay(unit.d, null, unit.context) - // console.log(rel, unit.d.format()) } // this/next/last if (rel) { diff --git a/plugins/dates/src/parseDate/units/Unit.js b/plugins/dates/src/parseDate/units/Unit.js index 2cae35182..ab75480a8 100644 --- a/plugins/dates/src/parseDate/units/Unit.js +++ b/plugins/dates/src/parseDate/units/Unit.js @@ -91,17 +91,27 @@ class Unit { return this.d.format(fmt) } start() { - this.d = this.d.startOf(this.unit) + // do we have a custom day-start? if (this.context.dayStart) { - this.d = this.d.time(this.context.dayStart) + let dayStart = this.d.time(this.context.dayStart) + if (dayStart.isBefore(this.d)) { + this.d = dayStart + return this + } } + this.d = this.d.startOf(this.unit) return this } end() { - this.d = this.d.endOf(this.unit) + // do we have a custom day-end? if (this.context.dayEnd) { - this.d = this.d.time(this.context.dayEnd) + let dayEnd = this.d.time(this.context.dayEnd) + if (dayEnd.isAfter(this.d)) { + this.d = dayEnd + return this + } } + this.d = this.d.endOf(this.unit) return this } middle() { @@ -110,6 +120,17 @@ class Unit { this.d = this.d.add(minutes, 'minutes') return this } + // move it to 3/4s through + beforeEnd() { + let diff = this.d.startOf(this.unit).diff(this.d.endOf(this.unit)) + let mins = Math.round(diff.minutes / 4) + this.d = this.d.endOf(this.unit) + this.d = this.d.minus(mins, 'minutes') + if (this.context.dayStart) { + this.d = this.d.time(this.context.dayStart) + } + return this + } // the millescond before before() { this.d = this.d.minus(1, this.unit) diff --git a/plugins/dates/src/parseDate/units/_day.js b/plugins/dates/src/parseDate/units/_day.js index 8418b02e9..1433e89f8 100644 --- a/plugins/dates/src/parseDate/units/_day.js +++ b/plugins/dates/src/parseDate/units/_day.js @@ -9,6 +9,14 @@ class Day extends Unit { this.d = this.d.startOf('day') } } + middle() { + this.d = this.d.time('10am') + return this + } + beforeEnd() { + this.d = this.d.time('2pm') + return this + } } // like 'feb 2' @@ -33,7 +41,7 @@ class CalendarDate extends Day { class WeekDay extends Day { constructor(input, unit, context) { super(input, unit, context) - this.unit = 'week' + this.unit = 'day' // is the input just a weekday? if (typeof input === 'string') { this.d = spacetime(context.today, context.timezone) @@ -51,17 +59,8 @@ class WeekDay extends Day { } } clone() { - //overloaded method return new WeekDay(this.d, this.unit, this.context) } - end() { - //overloaded method - this.d = this.d.endOf('day') - if (this.context.dayEnd) { - this.d = this.d.time(this.context.dayEnd) - } - return this - } next() { this.d = this.d.add(7, 'days') this.d = this.d.day(this.weekDay) diff --git a/plugins/dates/src/parseDate/units/_week.js b/plugins/dates/src/parseDate/units/_week.js index 8a049ba45..5e42e3832 100644 --- a/plugins/dates/src/parseDate/units/_week.js +++ b/plugins/dates/src/parseDate/units/_week.js @@ -8,6 +8,18 @@ class Week extends Unit { this.d = this.d.startOf('week') } } + clone() { + return new Week(this.d, this.unit, this.context) + } + middle() { + this.d = this.d.add(2, 'days') //wednesday + return this + } + // move it to 3/4s through + beforeEnd() { + this.d = this.d.day('friday') + return this + } } //may need some work diff --git a/plugins/dates/src/parseDate/units/_year.js b/plugins/dates/src/parseDate/units/_year.js index cd539789f..82734098f 100644 --- a/plugins/dates/src/parseDate/units/_year.js +++ b/plugins/dates/src/parseDate/units/_year.js @@ -33,6 +33,7 @@ class Month extends Unit { return this } } + class AnyQuarter extends Unit { constructor(input, unit, context) { super(input, unit, context) diff --git a/plugins/dates/tests/end.test.js b/plugins/dates/tests/end.test.js index fa0879e73..4ed6e08da 100644 --- a/plugins/dates/tests/end.test.js +++ b/plugins/dates/tests/end.test.js @@ -38,7 +38,7 @@ const tests = [ ['on june 2nd', [2016, june, 2]], ['4:32 on march 2nd', [2016, march, 2]], ['at 2 oclock march 2nd', [2016, march, 2]], - ['sometime tomorrow before 3', [2016, february, 12]], + // ['sometime tomorrow before 3', [2016, february, 12]], ['on 1999/12/25', [1999, december, 25]], ['on 4:23am july 5th ', [2016, july, 5]], ['@ 5pm march 2nd', [2016, march, 2]], diff --git a/plugins/dates/tests/false-positive.test.js b/plugins/dates/tests/false-positive.test.js index c4dde6233..effebf84b 100644 --- a/plugins/dates/tests/false-positive.test.js +++ b/plugins/dates/tests/false-positive.test.js @@ -29,6 +29,7 @@ test('no dates', function (t) { '4a.', 'A4 A5', 'palm', + // 'One Saturday he had been to market', ] arr.forEach(function (str) { const doc = nlp(str) diff --git a/plugins/dates/tests/format.test.js b/plugins/dates/tests/format.test.js index 548017841..ac96bea9b 100644 --- a/plugins/dates/tests/format.test.js +++ b/plugins/dates/tests/format.test.js @@ -28,7 +28,7 @@ test('short+long form', function (t) { t.equal('April, June, and September', str, 'toShortForm-comma') doc = nlp('January 10, 2018 7:20 AM') - let start = doc.dates().json()[0].date.start + let start = doc.dates({ timezone: null }).json()[0].date.start t.equal(start, '2018-01-10T07:20:00.000Z', '7:20am') t.end() diff --git a/plugins/dates/tests/to-iso.test.js b/plugins/dates/tests/to-iso.test.js index f6e763dcf..ad2d05dc6 100644 --- a/plugins/dates/tests/to-iso.test.js +++ b/plugins/dates/tests/to-iso.test.js @@ -3,6 +3,7 @@ const nlp = require('./_lib') const context = { today: { year: 2019 }, + timezone: null, } test('date-parse :', function (t) { diff --git a/plugins/dates/tests/tokenizer.test.js b/plugins/dates/tests/tokenizer.test.js index 9a9a44599..2394629cb 100644 --- a/plugins/dates/tests/tokenizer.test.js +++ b/plugins/dates/tests/tokenizer.test.js @@ -31,6 +31,7 @@ test('date-tokenizer', function (t) { ['june and august', 2], ['june and august 2020', 1], ['june, august 9th', 2], + ['15 march 16 march', 2], ] arr.forEach((a) => { let dates = nlp(a[0]).dates() diff --git a/plugins/typeahead/README.md b/plugins/typeahead/README.md new file mode 100644 index 000000000..84fdaf923 --- /dev/null +++ b/plugins/typeahead/README.md @@ -0,0 +1,174 @@ +
+ + + + + + + + + + + + + +
+ npm install compromise-typeahead +
Work in progress
+
+
+
+ +
+ +
+ +a plugin that allows *assuming a word*, before it is fully-typed. +
+

Demo

+
+ +```js +const nlp = require('compromise') //load the plugin +nlp.extend(require('compromise-typeahead')) + +// a bunch of words we're expecting +const lexicon = { + bedfordshire: 'Town', + aberdeenshire: 'Town', + buckinghamshire: 'Town', + argyllshire: 'Town', + bambridgeshire: 'Town', + cheshire: 'Town', + ayrshire: 'Town', +} +// throw them in +nlp.typeahead(lexicon, { min: 3 }) + +// ok, create a document +let doc = nlp('i went to bucking', lexicon) + +doc.has('buckinghamshire') +//true! + +let m = doc.match('#Town') +console.log(m.text()) +// 'bucking' + +console.log(m.text('implicit')) +// 'buckinghamshire' +``` +You can see, it just kind of pretends the word is there. It uses the same 'implicit' scheme that [contractions do](https://observablehq.com/@spencermountain/compromise-contractions). + +It only applies to the end of the document, for now. + +In addition to assuming the word, a passed-in [lexicon](https://observablehq.com/@spencermountain/compromise-lexicon) will also tag it automatically. If this is not required, you can simply pass-in an array of terms instead. + + +
+ +
+cool! + +
+ +
+
+ +
+ +## Notes: +Typeahead is a dangerous game. Making assumptions about a user's text based on prefix, is very error-prone, especially for small-prefixes. + +Great care should be taken when selecting your words for typeahead. + +**[This tool](https://observablehq.com/@spencermountain/prefix-word-lookup)** may help in reviewing a list of potential prefix-collisions. + +...ya but even then.. - it's nearly impossible to predict misunderstandings when the interpreter is being greedy. + + +
+ +
+ +So, heads-up. + +Three things it does to decrease false-positives - + +#### Block any overlap: +The plugin will not make predictions for any overlapping prefixes, in the given terms. +if **'milan'** and **'milwaukee'** are both given, **'mil'** will not be triggered for anything. +```js +nlp.typeahead(['milan', 'milwaukee']) +nlp('mil').has('(milan|milwaukee)') //false +``` + +#### Ignore 2-char prefixes: +Prefixes shorter than 3 chars will be ignored. + +you can set a lower, or higher minimum with: +```js +nlp.typeahead(['toronto'], { min: 4 }) +nlp('tor').has('toronto') //false +nlp('toro').has('toronto') //true +``` + +#### Block known words: +Prefixes that exist in the compromise lexicon will also be ignored. + +these are assumed to be pretty common, full words. + +You can disable this by passing-in `safe:false`. +```js +// 'swim' is it's own word. +nlp.typeahead(['swimsuit']) +nlp('swim').has('swimsuit') //false +nlp('swimsu').has('swimsuit') //true + +// who cares - do it anyways +nlp.typeahead(['swimsuit'], { safe:false }) +nlp('swim').has('swimsuit') //true +``` +the compromise lexicon includes ~14k words, but very few common nouns. It is not meant to be a perfect-guard against prefix-collisions, like this. +So please don't lean on this safe feature too-hard. + + +#### Layering prefixes carefully +you may want to conjure-up a scheme where some words are matched greedier than others. +```js +// layer-one, quite-greedy +nlp.typeahead(['grey', 'gold', 'red'], { min: 2 }) +// layer-two, a little safer +nlp.typeahead(['greyhound', 'goldendoodle', 'poodle'], { min: 3 }) + +// first-layer is sneaky +nlp('re').has('red')//true +// second-layer is less-sneaky +nlp('po').has('poodle')//false + +nlp('gr').has('grey')//true +nlp('gre').has('(grey|greyhound)')//false (collision of two layers) +nlp('golde').has('goldendoodle')//true +``` +Adding more matches will merge into existing prefixes, and automatically remove collisions. + +If you want to get rid of them, you can set the property on the [World object](https://observablehq.com/@spencermountain/compromise-world) directly: +```js +nlp('').world.prefixes = {} //whoosh! +``` + + +
+ +
+ + +## See Also +* [compromise-keypress](../keypress) - a caching plugin for on-type parsing + + +
+ +
+ +**MIT** diff --git a/plugins/typeahead/builds/compromise-typeahead.js b/plugins/typeahead/builds/compromise-typeahead.js new file mode 100644 index 000000000..179f1c514 --- /dev/null +++ b/plugins/typeahead/builds/compromise-typeahead.js @@ -0,0 +1,128 @@ +/* compromise-typeahead 0.2.0 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.compromiseTypeahead = factory()); +}(this, (function () { 'use strict'; + + var tryPrefix = function tryPrefix(doc, lex) { + var world = doc.world; + world.prefixes = world.prefixes || {}; // get end-part of text + + var end = doc.last(); + var m = end.terms().last(); + var json = m.json({ + terms: { + normal: true + } + }); + + if (!json[0] || !json[0].terms) { + return; + } + + json = json[0].terms[0]; // if we've already put whitespace, end. + + if (json.post) { + return; + } // if we found something + + + if (world.prefixes.hasOwnProperty(json.normal)) { + var found = world.prefixes[json.normal]; // add full-word as an implicit result + + m.termList()[0].implicit = found; // tag it too? + + if (lex.hasOwnProperty(found)) { + m.tag(lex[found], 'typeahead'); + } + } + }; + + var tryPrefix_1 = tryPrefix; + + // generate all the possible prefixes up-front + var createIndex = function createIndex(arr, opts, world) { + var index = {}; + var collisions = []; + var existing = world.prefixes || {}; + arr.forEach(function (str) { + str = str.toLowerCase().trim(); + var max = str.length; + + if (opts.max && max > opts.max) { + max = opts.max; + } + + for (var size = opts.min; size < max; size += 1) { + var prefix = str.substr(0, size); // ensure prefix is not a word + + if (opts.safe && world.words.hasOwnProperty(prefix)) { + continue; + } // does it already exist? + + + if (existing.hasOwnProperty(prefix) === true) { + collisions.push(prefix); + continue; + } + + if (index.hasOwnProperty(prefix) === true) { + collisions.push(prefix); + continue; + } + + index[prefix] = str; + } + }); // merge with existing prefixes + + index = Object.assign({}, existing, index); // remove ambiguous-prefixes + + collisions.forEach(function (str) { + delete index[str]; + }); + return index; + }; + + var getPrefixes = createIndex; + + var isObject = function isObject(obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; + + var defaults = { + safe: true, + min: 3 + }; + + var plugin = function plugin(Doc, world, _nlp) { + /** add words that can be predicted from their prefix */ + _nlp.typeahead = function () { + var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var lex = {}; + opts = Object.assign({}, defaults, opts); // wiggle-out our params + + if (isObject(arr)) { + lex = arr; + arr = Object.keys(lex); + } // pre-compute all prefixes + + + world.prefixes = getPrefixes(arr, opts, world); // each keypress, try the end + + world.postProcess(function (doc) { + tryPrefix_1(doc, lex); + }); + }; // alias + + + _nlp.typeAhead = Doc.prototype.typeahead; + }; + + var src = plugin; + + return src; + +}))); +//# sourceMappingURL=compromise-typeahead.js.map diff --git a/plugins/typeahead/builds/compromise-typeahead.js.map b/plugins/typeahead/builds/compromise-typeahead.js.map new file mode 100644 index 000000000..429f480d9 --- /dev/null +++ b/plugins/typeahead/builds/compromise-typeahead.js.map @@ -0,0 +1 @@ +{"version":3,"file":"compromise-typeahead.js","sources":["../src/tryPrefix.js","../src/getPrefixes.js","../src/index.js"],"sourcesContent":["const tryPrefix = function (doc, lex) {\n let world = doc.world\n world.prefixes = world.prefixes || {}\n // get end-part of text\n let end = doc.last()\n let m = end.terms().last()\n let json = m.json({ terms: { normal: true } })\n if (!json[0] || !json[0].terms) {\n return\n }\n json = json[0].terms[0]\n // if we've already put whitespace, end.\n if (json.post) {\n return\n }\n // if we found something\n if (world.prefixes.hasOwnProperty(json.normal)) {\n let found = world.prefixes[json.normal]\n // add full-word as an implicit result\n m.termList()[0].implicit = found\n // tag it too?\n if (lex.hasOwnProperty(found)) {\n m.tag(lex[found], 'typeahead')\n }\n }\n}\nmodule.exports = tryPrefix\n","// generate all the possible prefixes up-front\nconst createIndex = function (arr, opts, world) {\n let index = {}\n let collisions = []\n let existing = world.prefixes || {}\n arr.forEach((str) => {\n str = str.toLowerCase().trim()\n let max = str.length\n if (opts.max && max > opts.max) {\n max = opts.max\n }\n for (let size = opts.min; size < max; size += 1) {\n let prefix = str.substr(0, size)\n // ensure prefix is not a word\n if (opts.safe && world.words.hasOwnProperty(prefix)) {\n continue\n }\n // does it already exist?\n if (existing.hasOwnProperty(prefix) === true) {\n collisions.push(prefix)\n continue\n }\n if (index.hasOwnProperty(prefix) === true) {\n collisions.push(prefix)\n continue\n }\n index[prefix] = str\n }\n })\n // merge with existing prefixes\n index = Object.assign({}, existing, index)\n // remove ambiguous-prefixes\n collisions.forEach((str) => {\n delete index[str]\n })\n return index\n}\nmodule.exports = createIndex\n","const tryPrefix = require('./tryPrefix')\nconst getPrefixes = require('./getPrefixes')\n\nconst isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\n}\n\nconst defaults = {\n safe: true,\n min: 3,\n}\n\nconst plugin = function (Doc, world, _nlp) {\n /** add words that can be predicted from their prefix */\n _nlp.typeahead = function (arr = [], opts = {}) {\n let lex = {}\n opts = Object.assign({}, defaults, opts)\n // wiggle-out our params\n if (isObject(arr)) {\n lex = arr\n arr = Object.keys(lex)\n }\n // pre-compute all prefixes\n world.prefixes = getPrefixes(arr, opts, world)\n // each keypress, try the end\n world.postProcess((doc) => {\n tryPrefix(doc, lex)\n })\n }\n // alias\n _nlp.typeAhead = Doc.prototype.typeahead\n}\nmodule.exports = plugin\n"],"names":["tryPrefix","doc","lex","world","prefixes","end","last","m","terms","json","normal","post","hasOwnProperty","found","termList","implicit","tag","createIndex","arr","opts","index","collisions","existing","forEach","str","toLowerCase","trim","max","length","size","min","prefix","substr","safe","words","push","Object","assign","isObject","obj","prototype","toString","call","defaults","plugin","Doc","_nlp","typeahead","keys","getPrefixes","postProcess","typeAhead"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/typeahead/builds/compromise-typeahead.min.js b/plugins/typeahead/builds/compromise-typeahead.min.js new file mode 100644 index 000000000..818e3ea6c --- /dev/null +++ b/plugins/typeahead/builds/compromise-typeahead.min.js @@ -0,0 +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).compromiseTypeahead=t()}(this,(function(){"use strict";var e=function(e,t){var r=e.world;r.prefixes=r.prefixes||{};var o=e.last().terms().last(),n=o.json({terms:{normal:!0}});if(n[0]&&n[0].terms&&!(n=n[0].terms[0]).post&&r.prefixes.hasOwnProperty(n.normal)){var s=r.prefixes[n.normal];o.termList()[0].implicit=s,t.hasOwnProperty(s)&&o.tag(t[s],"typeahead")}},t=function(e,t,r){var o={},n=[],s=r.prefixes||{};return e.forEach((function(e){var a=(e=e.toLowerCase().trim()).length;t.max&&a>t.max&&(a=t.max);for(var i=t.min;i0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i={};a=Object.assign({},o,a),r(n)&&(i=n,n=Object.keys(i)),s.prefixes=t(n,a,s),s.postProcess((function(t){e(t,i)}))},a.typeAhead=n.prototype.typeahead}})); diff --git a/plugins/typeahead/builds/compromise-typeahead.mjs b/plugins/typeahead/builds/compromise-typeahead.mjs new file mode 100644 index 000000000..f44efdc20 --- /dev/null +++ b/plugins/typeahead/builds/compromise-typeahead.mjs @@ -0,0 +1,119 @@ +/* compromise-typeahead 0.2.0 MIT */ +var tryPrefix = function tryPrefix(doc, lex) { + var world = doc.world; + world.prefixes = world.prefixes || {}; // get end-part of text + + var end = doc.last(); + var m = end.terms().last(); + var json = m.json({ + terms: { + normal: true + } + }); + + if (!json[0] || !json[0].terms) { + return; + } + + json = json[0].terms[0]; // if we've already put whitespace, end. + + if (json.post) { + return; + } // if we found something + + + if (world.prefixes.hasOwnProperty(json.normal)) { + var found = world.prefixes[json.normal]; // add full-word as an implicit result + + m.termList()[0].implicit = found; // tag it too? + + if (lex.hasOwnProperty(found)) { + m.tag(lex[found], 'typeahead'); + } + } +}; + +var tryPrefix_1 = tryPrefix; + +// generate all the possible prefixes up-front +var createIndex = function createIndex(arr, opts, world) { + var index = {}; + var collisions = []; + var existing = world.prefixes || {}; + arr.forEach(function (str) { + str = str.toLowerCase().trim(); + var max = str.length; + + if (opts.max && max > opts.max) { + max = opts.max; + } + + for (var size = opts.min; size < max; size += 1) { + var prefix = str.substr(0, size); // ensure prefix is not a word + + if (opts.safe && world.words.hasOwnProperty(prefix)) { + continue; + } // does it already exist? + + + if (existing.hasOwnProperty(prefix) === true) { + collisions.push(prefix); + continue; + } + + if (index.hasOwnProperty(prefix) === true) { + collisions.push(prefix); + continue; + } + + index[prefix] = str; + } + }); // merge with existing prefixes + + index = Object.assign({}, existing, index); // remove ambiguous-prefixes + + collisions.forEach(function (str) { + delete index[str]; + }); + return index; +}; + +var getPrefixes = createIndex; + +var isObject = function isObject(obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; +}; + +var defaults = { + safe: true, + min: 3 +}; + +var plugin = function plugin(Doc, world, _nlp) { + /** add words that can be predicted from their prefix */ + _nlp.typeahead = function () { + var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var lex = {}; + opts = Object.assign({}, defaults, opts); // wiggle-out our params + + if (isObject(arr)) { + lex = arr; + arr = Object.keys(lex); + } // pre-compute all prefixes + + + world.prefixes = getPrefixes(arr, opts, world); // each keypress, try the end + + world.postProcess(function (doc) { + tryPrefix_1(doc, lex); + }); + }; // alias + + + _nlp.typeAhead = Doc.prototype.typeahead; +}; + +var src = plugin; + +export default src; diff --git a/plugins/typeahead/package-lock.json b/plugins/typeahead/package-lock.json new file mode 100644 index 000000000..3c4469668 --- /dev/null +++ b/plugins/typeahead/package-lock.json @@ -0,0 +1,1199 @@ +{ + "name": "compromise-typeahead", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "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==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@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 + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", + "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", + "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-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz", + "integrity": "sha512-qHjNIKYt5pCcn+5RUBQxK8krhRvf1HnyVgUCcFFcweDS7fhkOLZeYh0mhHK6Ery8/bb9tvN/ubPzmfF0qjDCTA==", + "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" + } + }, + "@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 + }, + "@types/node": { + "version": "14.14.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.33.tgz", + "integrity": "sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==", + "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": "*" + } + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "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" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "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", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "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", + "get-intrinsic": "^1.0.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "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 + }, + "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", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "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=", + "dev": true + }, + "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", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "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 + } + } + }, + "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", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "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" + } + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.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" + } + }, + "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", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "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", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "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 + }, + "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" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "fs.realpath": { + "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", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "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", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "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-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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 + }, + "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.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "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-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, + "is-reference": { + "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": "*" + } + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "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-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==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.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-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 + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "jest-worker": { + "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": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "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" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "magic-string": { + "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" + } + }, + "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 + }, + "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 + }, + "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 + }, + "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", + "define-properties": "^1.1.3" + } + }, + "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", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "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-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "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=", + "dev": true + }, + "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" + } + }, + "re-emitter": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", + "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "dev": true + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "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", + "define-properties": "^1.1.3" + } + }, + "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" + } + }, + "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" + } + }, + "rollup": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.40.0.tgz", + "integrity": "sha512-WiOGAPbXoHu+TOz6hyYUxIksOwsY/21TRWoO593jgYt8mvYafYqQl+axaA8y1z2HFazNUUrsMSjahV2A6/2R9A==", + "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-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 + }, + "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", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "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.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + }, + "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", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "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 + }, + "split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "requires": { + "through": "2" + } + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "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", + "define-properties": "^1.1.3" + } + }, + "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", + "define-properties": "^1.1.3" + } + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "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 + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tap-dancer": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", + "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "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" + } + } + } + }, + "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, + "requires": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + } + }, + "tape": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.0.tgz", + "integrity": "sha512-J7stlwNrBEpHlZvbvPEAFvMmqIy79kMYvXiyekl5w6O7C2HF63bFKi8su70mdUtZZvNMm7EbIzLyI+fk6U9Ntg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "deep-equal": "^2.0.5", + "defined": "^1.0.0", + "dotignore": "^0.1.2", + "for-each": "^0.3.3", + "glob": "^7.1.6", + "has": "^1.0.3", + "inherits": "^2.0.4", + "is-regex": "^1.1.2", + "minimist": "^1.2.5", + "object-inspect": "^1.9.0", + "object-is": "^1.1.4", + "object.assign": "^4.1.2", + "resolve": "^2.0.0-next.3", + "resumer": "^0.0.0", + "string.prototype.trim": "^1.2.3", + "through": "^2.3.8" + }, + "dependencies": { + "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", + "path-parse": "^1.0.6" + } + } + } + }, + "terser": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + } + }, + "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 + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "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==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "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", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "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", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/plugins/typeahead/package.json b/plugins/typeahead/package.json new file mode 100644 index 000000000..334f6896d --- /dev/null +++ b/plugins/typeahead/package.json @@ -0,0 +1,50 @@ +{ + "name": "compromise-typeahead", + "description": "plugin for nlp-compromise", + "version": "0.2.0", + "author": "Spencer Kelly (http://spencermounta.in)", + "main": "./builds/compromise-typeahead.js", + "unpkg": "./builds/compromise-typeahead.min.js", + "module": "./builds/compromise-typeahead.mjs", + "types": "types/index.d.ts", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/compromise.git" + }, + "scripts": { + "test": "tape \"./tests/**/*.test.js\" | tap-dancer --color always", + "testb": "TESTENV=prod tape \"./tests/**/*.test.js\" | tap-dancer --color always", + "watch": "amble ./scratch.js", + "build": "rollup -c --silent" + }, + "prettier": { + "trailingComma": "es5", + "tabWidth": 2, + "semi": false, + "singleQuote": true, + "printWidth": 100 + }, + "files": [ + "builds/", + "types/index.d.ts" + ], + "eslintIgnore": [ + "builds/*.js" + ], + "peerDependencies": { + "compromise": ">=12.0.0" + }, + "dependencies": {}, + "devDependencies": { + "@rollup/plugin-commonjs": "17.1.0", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "11.2.0", + "rollup": "2.40.0", + "rollup-plugin-babel": "4.4.0", + "rollup-plugin-filesize-check": "0.0.1", + "rollup-plugin-terser": "7.0.2", + "tap-dancer": "0.3.1", + "tape": "5.2.0" + }, + "license": "MIT" +} diff --git a/plugins/typeahead/rollup.config.js b/plugins/typeahead/rollup.config.js new file mode 100644 index 000000000..fb90d487e --- /dev/null +++ b/plugins/typeahead/rollup.config.js @@ -0,0 +1,76 @@ +import commonjs from '@rollup/plugin-commonjs' +import json from '@rollup/plugin-json' +import resolve from '@rollup/plugin-node-resolve' +import { terser } from 'rollup-plugin-terser' +import babel from 'rollup-plugin-babel' +import sizeCheck from 'rollup-plugin-filesize-check' +const name = 'compromise-typeahead' + +import { version } from './package.json' +const banner = `/* ${name} ${version} MIT */` + +export default [ + { + input: 'src/index.js', + output: [ + { + file: `builds/${name}.mjs`, + format: 'esm', + banner: banner, + }, + ], + plugins: [ + resolve(), + json(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + sizeCheck(), + ], + }, + { + input: 'src/index.js', + output: [ + { + file: `builds/${name}.js`, + format: 'umd', + sourcemap: true, + name: 'compromiseTypeahead', + banner: banner, + }, + ], + plugins: [ + resolve(), + json(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + sizeCheck(), + ], + }, + { + input: 'src/index.js', + output: [ + { + file: `builds/${name}.min.js`, + format: 'umd', + name: 'compromiseTypeahead', + }, + ], + plugins: [ + resolve(), + json(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + terser(), + sizeCheck(), + ], + }, +] diff --git a/plugins/typeahead/src/getPrefixes.js b/plugins/typeahead/src/getPrefixes.js new file mode 100644 index 000000000..ef7df0ecb --- /dev/null +++ b/plugins/typeahead/src/getPrefixes.js @@ -0,0 +1,38 @@ +// generate all the possible prefixes up-front +const createIndex = function (arr, opts, world) { + let index = {} + let collisions = [] + let existing = world.prefixes || {} + arr.forEach((str) => { + str = str.toLowerCase().trim() + let max = str.length + if (opts.max && max > opts.max) { + max = opts.max + } + for (let size = opts.min; size < max; size += 1) { + let prefix = str.substr(0, size) + // ensure prefix is not a word + if (opts.safe && world.words.hasOwnProperty(prefix)) { + continue + } + // does it already exist? + if (existing.hasOwnProperty(prefix) === true) { + collisions.push(prefix) + continue + } + if (index.hasOwnProperty(prefix) === true) { + collisions.push(prefix) + continue + } + index[prefix] = str + } + }) + // merge with existing prefixes + index = Object.assign({}, existing, index) + // remove ambiguous-prefixes + collisions.forEach((str) => { + delete index[str] + }) + return index +} +module.exports = createIndex diff --git a/plugins/typeahead/src/index.js b/plugins/typeahead/src/index.js new file mode 100644 index 000000000..c2543dbf8 --- /dev/null +++ b/plugins/typeahead/src/index.js @@ -0,0 +1,33 @@ +const tryPrefix = require('./tryPrefix') +const getPrefixes = require('./getPrefixes') + +const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]' +} + +const defaults = { + safe: true, + min: 3, +} + +const plugin = function (Doc, world, _nlp) { + /** add words that can be predicted from their prefix */ + _nlp.typeahead = function (arr = [], opts = {}) { + let lex = {} + opts = Object.assign({}, defaults, opts) + // wiggle-out our params + if (isObject(arr)) { + lex = arr + arr = Object.keys(lex) + } + // pre-compute all prefixes + world.prefixes = getPrefixes(arr, opts, world) + // each keypress, try the end + world.postProcess((doc) => { + tryPrefix(doc, lex) + }) + } + // alias + _nlp.typeAhead = Doc.prototype.typeahead +} +module.exports = plugin diff --git a/plugins/typeahead/src/tryPrefix.js b/plugins/typeahead/src/tryPrefix.js new file mode 100644 index 000000000..133f2874e --- /dev/null +++ b/plugins/typeahead/src/tryPrefix.js @@ -0,0 +1,27 @@ +const tryPrefix = function (doc, lex) { + let world = doc.world + world.prefixes = world.prefixes || {} + // get end-part of text + let end = doc.last() + let m = end.terms().last() + let json = m.json({ terms: { normal: true } }) + if (!json[0] || !json[0].terms) { + return + } + json = json[0].terms[0] + // if we've already put whitespace, end. + if (json.post) { + return + } + // if we found something + if (world.prefixes.hasOwnProperty(json.normal)) { + let found = world.prefixes[json.normal] + // add full-word as an implicit result + m.termList()[0].implicit = found + // tag it too? + if (lex.hasOwnProperty(found)) { + m.tag(lex[found], 'typeahead') + } + } +} +module.exports = tryPrefix diff --git a/plugins/typeahead/tests/_lib.js b/plugins/typeahead/tests/_lib.js new file mode 100644 index 000000000..254633449 --- /dev/null +++ b/plugins/typeahead/tests/_lib.js @@ -0,0 +1,12 @@ +if (typeof process !== undefined && typeof module !== undefined) { + let nlp + if (process.env.TESTENV === 'prod') { + nlp = require('../../../') + nlp.extend(require(`../`)) + } else { + nlp = require('../../../src') + nlp.extend(require(`../src`)) + } + + module.exports = nlp +} diff --git a/plugins/typeahead/tests/typeahead.test.js b/plugins/typeahead/tests/typeahead.test.js new file mode 100644 index 000000000..912dc2f08 --- /dev/null +++ b/plugins/typeahead/tests/typeahead.test.js @@ -0,0 +1,82 @@ +const test = require('tape') +const nlp = require('./_lib') + +test('typeahead test', function (t) { + const lexicon = { + bedfordshire: 'Town', + aberdeenshire: 'Town', + buckinghamshire: 'Town', + argyllshire: 'Town', + bambridgeshire: 'Town', + cheshire: 'Town', + ayrshire: 'Town', + } + // add the words we should predict from + nlp.typeahead(lexicon, { min: 4 }) + // create a document + let doc = nlp('i went to bucking', lexicon) + let m = doc.match('buckinghamshire') + t.equal(m.text(), 'bucking', 'found partial') + t.equal(m.text('implicit'), 'buckinghamshire', 'found full') + + // match by tag, too + m = doc.match('#Town') + t.equal(m.text(), 'bucking', 'found partial') + t.equal(m.text('implicit'), 'buckinghamshire', 'found full') + + doc = nlp('buck') + t.equal(doc.has('buckinghamshire'), true, 'found 4-letters') + doc = nlp('buc') + t.equal(doc.has('buckinghamshire'), false, 'not-found 3-letters') + t.end() +}) + +test('collision test', function (t) { + nlp.typeahead(['milan', 'milwaukee'], { min: 1, safe: false }) + t.equal(nlp('mil').has('(milan|milwaukee)'), false, 'collision') + // t.equal(nlp('mila').has('milan'), true, 'no-collision-1') + t.equal(nlp('milw').has('milwaukee'), true, 'no-collision-2') + t.end() +}) + +test('min test', function (t) { + nlp.typeahead(['toronto'], { min: 4 }) + t.equal(nlp('tor').has('toronto'), false, 'min-block') + t.equal(nlp('toro').has('toronto'), true, 'min-continue') + + nlp.typeahead(['lettuce', 'fettucini', 'falafel'], { min: 1 }) + t.equal(nlp('l').has('lettuce'), true, 'one-word-match') + t.equal(nlp('t').has('lettuce'), false, 'one-word-nope') + t.equal(nlp('f').has('lettuce'), false, 'one-word-collision') + t.equal(nlp('fe').has('fettucini'), true, 'min-continue') + t.end() +}) + +test('lexicon-guard test', function (t) { + // 'swim' is it's own word. + nlp.typeahead(['swimsuit']) + t.equal(nlp('swim').has('swimsuit'), false, 'lexicon-block') + t.equal(nlp('swimsu').has('swimsuit'), true, 'lexicon-continue') + + nlp('').world.prefixes = {} //whoosh! + // who cares - do it anyways + nlp.typeahead(['swimsuit'], { safe: false }) + t.equal(nlp('swim').has('swimsuit'), true, 'safemode-off') + t.equal(nlp('swimsu').has('swimsuit'), true, 'lexicon-continue-2') + t.end() +}) + +test('prefix layer test', function (t) { + // layer-one, quite-greedy + nlp.typeahead(['grey', 'gold', 'red'], { min: 2 }) + // layer-two, a little safer + nlp.typeahead(['greyhound', 'goldendoodle', 'poodle'], { min: 3 }) + + t.equal(nlp('re').has('red'), true, '2-match') + t.equal(nlp('po').has('poodle'), false, '2-match not found') + + t.equal(nlp('gr').has('grey'), true, '2-match-sneaky') + t.equal(nlp('gre').has('grey') || nlp('gre').has('greyhound'), false, 'collision') // (collision of terms) + t.equal(nlp('golde').has('goldendoodle'), true, 'long-match') + t.end() +}) diff --git a/scratch.js b/scratch.js index cec344dfc..6c4953a9f 100644 --- a/scratch.js +++ b/scratch.js @@ -1,39 +1,14 @@ const nlp = require('./src/index') nlp.extend(require('./plugins/numbers/src')) nlp.extend(require('./plugins/dates/src')) +// nlp.extend(require('./plugins/typeahead/src')) // nlp.extend(require('./plugins/sentences/src')) -nlp.verbose(true) - -// -// '3/8ths' -// 'three eighths of -' -// '- and three eighths' -// 'three out of eight' -// - -// complex denominators - 'one fifty fourths', 'one thirty third' -// - -// let doc = nlp('i should drive') -// doc.sentences().toPastTense().debug() - -// let doc = nlp(`a tv show`).debug() -// let doc = nlp(`send me a currency report.`).debug() -// let doc = nlp(`a close watch on`).debug() -// let doc = nlp(` a surgery date of`).debug() -// let doc = nlp(`A girl hit a boy.`).debug() -let doc = nlp(`a auto repair shop.`).debug() -// console.log(doc.dates().get()) -// console.log(doc.verbs().isImperative()) - -// let vb = doc.verbs().clone(true) -// vb.sentences().debug() -// doc.verbs().isImperative().debug() -// doc.sentences().toPastTense().debug() - -// console.log(doc.dates().get()) -// console.log(doc.durations().get(0)) - -// possible match-bug: -// let doc = nlp(`go fast john!`).debug() -// s.has('^#Infinitive #Adverb? #Noun?$') +// nlp.verbose(true) + +// require('/Users/spencer/mountain/timezone-soft/data/metazone/index.js').forEach(obj => { +// let doc = nlp(obj.std.abbr) +// if (!doc.has('(#Place|#Timezone)')) { +// console.log(obj.std.abbr) +// } +// }) +let doc = nlp('3pm OMST').debug() diff --git a/src/02-tagger/01-init/data/startsWith.js b/src/02-tagger/01-init/data/startsWith.js index e4f5d5089..f9f2317eb 100644 --- a/src/02-tagger/01-init/data/startsWith.js +++ b/src/02-tagger/01-init/data/startsWith.js @@ -23,6 +23,9 @@ module.exports = [ [/^[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 diff --git a/src/02-tagger/04-correction/matches/02-dates.js b/src/02-tagger/04-correction/matches/02-dates.js index 8981f1b2a..8bdd11d8e 100644 --- a/src/02-tagger/04-correction/matches/02-dates.js +++ b/src/02-tagger/04-correction/matches/02-dates.js @@ -75,6 +75,20 @@ let list = [ // { 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' }, ] module.exports = list diff --git a/src/02-tagger/04-correction/matches/08-place.js b/src/02-tagger/04-correction/matches/08-place.js index 46d2e88f2..2de01c6f0 100644 --- a/src/02-tagger/04-correction/matches/08-place.js +++ b/src/02-tagger/04-correction/matches/08-place.js @@ -9,11 +9,18 @@ let list = [ }, //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|or|pa|sc|tn|tx|ut|vt|pr)]', + 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)', diff --git a/src/Term/methods/_doesMatch.js b/src/Term/methods/_doesMatch.js index aa8941cbe..f12bd2688 100644 --- a/src/Term/methods/_doesMatch.js +++ b/src/Term/methods/_doesMatch.js @@ -69,6 +69,9 @@ const doesMatch = function (t, reg, index, length) { } // support optimized (one|two) if (reg.fastOr !== undefined) { + if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { + return true + } return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text) } //support slower (one|two) diff --git a/src/World/_data.js b/src/World/_data.js index 568d467e9..a8c3c0f45 100644 --- a/src/World/_data.js +++ b/src/World/_data.js @@ -27,16 +27,16 @@ module.exports={ "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¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1ern1Mi0;en2Hlni2Z;lenc2Uncouv0Gr2Gughn;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", - "Country": "true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;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:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma", - "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,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:CW;7:C8;8:B6;9:DL;A:DK;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,nde8sD;!l7t1;de,lErr9yD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro6s1;nAr5C;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,l7;lom1nBFuD;leyma6ta;dDlBm1yabonga;!dhart7Bn7;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y6;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;e5Og3n7olfo,ri7A;co,ky;bCeB7;cDl7;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ub9x,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,rHsEtDumAw9;is,to;aEcAkAm0vD;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;!e8;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk7;aEeD;al,l;el,l;hElv2rD;le,ri8v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe8;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha8tDv2;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;g0nn7SrenFuDv8Jwe8;!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;a8ri59;r,th;cp3j5m66na73rEspAthem,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;a6BemEmai6oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKd9kImHrFsEvi3yD;!d9s1;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;aPeJoIuDydA;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4Jd9;an,s0;lGo50rFuDv7;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;ffr7rge;brEl9rDv2;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;ar04dZfrYit0lSmKnHo2rFsteb0th0uge6vDym9zra;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;!dCgAmGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay6ight;a6dl7nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e8ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay6ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne8rDyl;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,sA;il;lGmer1rD;ey,lEro8y;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;!foDl7y;rd;bErDyd;is;!by;i6ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n7rDt;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;i6nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePd9eJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;d9mA;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:9X;3:9H;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:77;B:6E;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaA;aAhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsA;liA1s2;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukB;lk5roby5;dBllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisA;dor95lst31m3rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps2s0Y;hirBkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot3lliv4zuA;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,lFnDr3saAto,v3;ch7d0AtDz;a4Pe,os;as,ihBm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins2;!on;bei0LcEes,vDzzo;as,e8;ci,hards2;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,ss2;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;eEkolDlsCx2;ic,ov6X;ls1miD;!n1;ils2mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov3;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dBti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkBqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k3nDo;d,gu;mbarDpe2Rvr3;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;czDsA;yk;cFlD;!cDen3Q;huk;!ev3ic,s;e6uiveD;rt;eff0l3mu8nnun1;hn,lloe,minsArEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r3;e2JhFnErge2Ju2NvD;anB;es,ss2;anEnsD;en,on,t2;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks2obs1;brahimBglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz3fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers2;kkiEnD;on1;la,n1;dz3g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw2;o,staf2Utierr7zm4;ayDg3iffitUub0;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;hatBnandeVrD;arDei8;a,i;ov3;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s2;er,is2wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov3;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e2uD;ca;hl,mcevsAnErw6t2EviD;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;bGl09ng3rD;eghetEnD;a,y;ti;an,ota0M;cer9lder2mpbeIrFstDvadi08;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;ev3;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss2;asD;hi;er,ham;b3ch,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,s2;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", - "LastName": "true¦0:9F;1:9V;2:9X;3:9H;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:77;B:6E;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaA;aAhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsA;liA1s2;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukB;lk5roby5;dBllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisA;dor95lst31m3rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps2s0Y;hirBkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot3lliv4zuA;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,lFnDr3saAto,v3;ch7d0AtDz;a4Pe,os;as,ihBm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins2;!on;bei0LcEes,vDzzo;as,e8;ci,hards2;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,ss2;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;eEkolDlsCx2;ic,ov6X;ls1miD;!n1;ils2mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov3;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dBti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkBqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k3nDo;d,gu;mbarDpe2Rvr3;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;czDsA;yk;cFlD;!cDen3Q;huk;!ev3ic,s;e6uiveD;rt;eff0l3mu8nnun1;hn,lloe,minsArEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r3;e2JhFnErge2Ju2NvD;anB;es,ss2;anEnsD;en,on,t2;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks2obs1;brahimBglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz3fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers2;kkiEnD;on1;la,n1;dz3g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw2;o,staf2Utierr7zm4;ayDg3iffitUub0;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;hatBnandeVrD;arDei8;a,i;ov3;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s2;er,is2wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov3;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e2uD;ca;hl,mcevsAnErw6t2EviD;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;bGl09ng3rD;eghetEnD;a,y;ti;an,ota0M;cer9lder2mpbeIrFstDvadi08;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;ev3;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss2;asD;hi;er,ham;b3ch,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,s2;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta", - "MaleName": "true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:CW;7:C8;8:B6;9:DL;A:DK;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,nde8sD;!l7t1;de,lErr9yD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro6s1;nAr5C;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,l7;lom1nBFuD;leyma6ta;dDlBm1yabonga;!dhart7Bn7;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y6;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;e5Og3n7olfo,ri7A;co,ky;bCeB7;cDl7;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ub9x,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,rHsEtDumAw9;is,to;aEcAkAm0vD;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;!e8;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk7;aEeD;al,l;el,l;hElv2rD;le,ri8v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe8;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha8tDv2;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;g0nn7SrenFuDv8Jwe8;!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;a8ri59;r,th;cp3j5m66na73rEspAthem,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;a6BemEmai6oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKd9kImHrFsEvi3yD;!d9s1;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;aPeJoIuDydA;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4Jd9;an,s0;lGo50rFuDv7;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;ffr7rge;brEl9rDv2;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;ar04dZfrYit0lSmKnHo2rFsteb0th0uge6vDym9zra;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;!dCgAmGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay6ight;a6dl7nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e8ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay6ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne8rDyl;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,sA;il;lGmer1rD;ey,lEro8y;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;!foDl7y;rd;bErDyd;is;!by;i6ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n7rDt;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;i6nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePd9eJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;d9mA;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", "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:71;8:6O;9:6P;A:5T;B:7L;C:7J;D:7D;E:7C;F:6Q;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietFr1Ms0FtVuTvacuum 1wLyammerEzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r8s8;eel Dip G;aJiIn2L;gh 0Crd0;n Dr 3S;it 60k8lk6rm 6Bsh 7Lt6Ov53;rgeEsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleFp G;ckFde 02;neFp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov7up;aIe 4Vll52;m 1r 01;ckEke Jlk I;ov7u53;aIba4d2in,o3Fup;ba4ft7p58w3;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;arHeLiKlJrIurE;ingEuc8;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row D;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v7;gn 4WngJt Iz8;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v8;aTeQiPoLuI;b 4Sle0n Istl8;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arBin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleEess JiLoI;p 1;ah1Ron;iIp 5Fr3XurFwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leEn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt D;arrowFerd0oI;d6teF;aQeNiMoKuI;ddl8lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur8lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft7ba4d2forw2Jin45ov7uI;nd7p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arBd2;av1Mt 36velI; o3T;c8p 1sh ItchEugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic8mpA;ke30tF;c39zz 1;aUePiMoJuI;nkerFrry 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,oIrBt0Su18;ff,n,v7;bo5ft7hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrBup;ff,n,ut,v7;cJhIl1WrBt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownEy 1;aw3oC;eIshe1N; 1z8;lKol I;aIwi1G;bo5rB;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 D;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v7;a4ehi20;e J;at0dge0nd Iy8;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl8;aYhVlean 9oIross Dut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd7;ogeth7;ut,v7;th,wI;ard;a4y;pIrBw3;art;eIipA;ck DeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Dt6;ry JvI;e 01;aw3o18;l ImF;aIba4d2o16up;rBw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t D;in,o5up;e I;ov7;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrBw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgFil 9n8oLssKttlJunce Ix D;aw3ba4;e 9; arB;k Dt 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov7up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h D;ainEe D;g DkE; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arBo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut", diff --git a/src/World/tags/tags/misc.js b/src/World/tags/tags/misc.js index 49655dd79..5ece24b1c 100644 --- a/src/World/tags/tags/misc.js +++ b/src/World/tags/tags/misc.js @@ -38,6 +38,11 @@ module.exports = { WeekDay: { isA: ['Date', 'Noun'], }, + // 'PST' + Timezone: { + isA: ['Date', 'Noun'], + notA: ['Adjective', 'ProperNoun'], + }, // '9:20pm' Time: { isA: ['Date'], diff --git a/src/_version.js b/src/_version.js index 8b6450356..160b5ccdd 100644 --- a/src/_version.js +++ b/src/_version.js @@ -1 +1 @@ -module.exports = '13.10.1' \ No newline at end of file +module.exports = '13.10.2' \ No newline at end of file diff --git a/tests/_pennSample.js b/tests/_pennSample.js index f8f3bf25b..27f2452ca 100644 --- a/tests/_pennSample.js +++ b/tests/_pennSample.js @@ -4384,10 +4384,6 @@ module.exports = [ text: 'Watch the airlift', tags: 'VB, DT, NN', }, - { - text: 'Hundreds of people are feared dead in Mississippi, and the Louisiana city of New Orleans is badly flooded.', - tags: 'NNS, IN, NNS, VBP, VBN, JJ, IN, NNP, CC, DT, NNP, NN, IN, NNP, NNP, VBZ, RB, VBN', - }, { text: 'The Superdome stadium is without power, and toilets are overflowing.', tags: 'DT, NNP, NN, VBZ, IN, NN, CC, NNS, VBP, VBG', diff --git a/tests/tagger/tagger.test.js b/tests/tagger/tagger.test.js index f4222c7fe..ef8cf9327 100644 --- a/tests/tagger/tagger.test.js +++ b/tests/tagger/tagger.test.js @@ -231,6 +231,13 @@ test('pos-basic-tag:', function (t) { [` a surgery date of`, ['Determiner', 'Noun', 'Noun', 'Preposition']], [`A girl hit a boy.`, ['Determiner', 'Noun', 'Infinitive', 'Determiner', 'Noun']], [`a auto repair shop.`, ['Determiner', 'Noun', 'Noun', 'Noun']], + // timezones + ['Morocco Standard Time', ['Timezone', 'Timezone', 'Timezone']], + ['GMT+9', ['Timezone']], + ['3pm EST', ['Time', 'Timezone']], + ['3pm eastern time', ['Time', 'Timezone', 'Timezone']], + ['pacific standard time', ['Timezone', 'Timezone', 'Timezone']], + ['korea daylight time', ['Timezone', 'Timezone', 'Timezone']], ] arr.forEach(function (a) { let terms = nlp(a[0]).json(0).terms