diff --git a/dist/alpheios-data-models.js b/dist/alpheios-data-models.js index bc680ca..f0b1327 100644 --- a/dist/alpheios-data-models.js +++ b/dist/alpheios-data-models.js @@ -1177,12 +1177,17 @@ class Feature { /** * Compares a feature's values to another feature's values for sorting * @param {Feature} otherFeature the feature to compare this feature's values to - * @return {integer} >=1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second + * @return {integer} < 1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second */ compareTo (otherFeature) { // the data values are sorted upon construction and insertion so we only should need to look at the first values // feature sortOrders are descending (i.e. 5 sorts higher than 1) - return otherFeature._data[0].sortOrder - this._data[0].sortOrder + if (otherFeature) { + return otherFeature._data[0].sortOrder - this._data[0].sortOrder + } else { + // if the other feature isn't defined, this one sorts first + return -1 + } } get items () { @@ -4227,6 +4232,7 @@ class Lexeme { } this.lemma = lemma + this.altLemmas = [] this.inflections = [] inflections.forEach(i => { this.addInflection(i) }) this.meaning = meaning || new _definition_set__WEBPACK_IMPORTED_MODULE_2__["default"](this.lemma.word, this.lemma.languageID) @@ -4242,6 +4248,14 @@ class Lexeme { this.inflections.push(inflection) } + /** + * add an alternative lemma to the lexeme + * @param {Lemma} lemma + */ + addAltLemma (lemma) { + this.altLemmas.push(lemma) + } + /** * test to see if a lexeme is populated with meaningful data * Returns true if any of these are true: diff --git a/dist/alpheios-data-models.js.map b/dist/alpheios-data-models.js.map index 55aff87..9667337 100644 --- a/dist/alpheios-data-models.js.map +++ b/dist/alpheios-data-models.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///../node_modules/uuid/lib/bytesToUuid.js","webpack:///../node_modules/uuid/lib/rng-browser.js","webpack:///../node_modules/uuid/v4.js","webpack:///./arabic_language_model.js","webpack:///./constants.js","webpack:///./definition-set.js","webpack:///./definition.js","webpack:///./driver.js","webpack:///./feature.js","webpack:///./feature_importer.js","webpack:///./feature_list.js","webpack:///./feature_type.js","webpack:///./greek_language_model.js","webpack:///./grm-feature.js","webpack:///./homonym.js","webpack:///./i18n.js","webpack:///./inflection.js","webpack:///./inflection_group.js","webpack:///./inflection_grouping_key.js","webpack:///./language_model.js","webpack:///./language_model_factory.js","webpack:///./latin_language_model.js","webpack:///./lemma.js","webpack:///./lexeme.js","webpack:///./persian_language_model.js","webpack:///./resource_provider.js","webpack:///./translation.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACjCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAChE;AACA,oCAAoC,KAAK,GAAG,KAAK,GAAG,KAAK,UAAU,KAAK;AACxE;AACA,qCAAqC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1E;AACA,qCAAqC,KAAK;AAC1C;AACA,mCAAmC,KAAK;AACxC;AACA,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1NA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9EA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAsBA;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gCAAgC,SAAS,gDAAgD,EAAE;AAC3F;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD,MAAM;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL,6BAA6B,MAAM;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kDAAkD,OAAO;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA,8CAA8C,SAAS,yDAAyD,EAAE;AAClH;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzbA;AAAA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5DA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;;AAEpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,+BAA+B;AACtC;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yEAAyE,8BAA8B,4BAA4B,2BAA2B;AAC9J;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,4BAA4B,4BAA4B,2BAA2B;AAC1J;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9OA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,GAAG,KAAK;AAChC;AACA,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,WAAW,KAAK,GAAG,KAAK;AACxB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnRA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;AACpE;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9KA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,gBAAgB;AAC/B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;AACpE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,8BAA8B;AACnE,wBAAwB,2BAA2B;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5PA;AAAA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACpBA;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,YAAY,2BAA2B,KAAK;AACnF;AACA;;AAEA;AACA;AACA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,KAAK;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,aAAa;AACnD;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oHAAsE,yCAAyC;AAC/G;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;ACjlBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,OAAO;AACrB,SAAS,OAAO;AAChB,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpNA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,SAAS;AACtB,aAAa,OAAO;;AAEpB,aAAa,YAAY;AACzB;AACA,mEAAmE;AACnE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;;AAEpE;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,aAAa;AAC1B,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,wBAAwB;AACtD;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpKA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,8BAA8B;;AAE9B,+BAA+B;;AAE/B,gCAAgC;;AAEhC,iCAAiC;;AAEjC,2BAA2B;;AAE3B,0BAA0B;;AAE1B;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;AACA;;;;;;;;;;;;;AChEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;;;;;;;;;;;;AC3CA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE,mCAAmC;AACvG;AACA;;AAEA;AACA;AACA;AACA;AACA","file":"alpheios-data-models.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./driver.js\");\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class ArabicLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_ARABIC }\n static get languageCode () { return Constants.STR_LANG_CODE_ARA }\n static get languageCodes () { return [Constants.STR_LANG_CODE_ARA, Constants.STR_LANG_CODE_AR] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_RTL }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * @override LanguageModel#alternateWordEncodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // tanwin (& tatweel) - drop FATHATAN, DAMMATAN, KASRATAN, TATWEEL\n let tanwin = word.replace(/[\\u{064B}\\u{064C}\\u{064D}\\u{0640}]/ug, '')\n // hamzas - replace ALEF WITH MADDA ABOVE, ALEF WITH HAMZA ABOVE/BELOW with ALEF\n let hamza = tanwin.replace(/[\\u{0622}\\u{0623}\\u{0625}]/ug, '\\u{0627}')\n // harakat - drop FATHA, DAMMA, KASRA, SUPERSCRIPT ALEF, ALEF WASLA\n let harakat = hamza.replace(/[\\u{064E}\\u{064F}\\u{0650}\\u{0670}\\u{0671}]/ug, '')\n // shadda\n let shadda = harakat.replace(/\\u{0651}/ug, '')\n // sukun\n let sukun = shadda.replace(/\\u{0652}/ug, '')\n // alef\n let alef = sukun.replace(/\\u{0627}/ug, '')\n let alternates = new Map([\n ['tanwin', tanwin],\n ['hamza', hamza],\n ['harakat', harakat],\n ['shadda', shadda],\n ['sukun', sukun],\n ['alef', alef]\n ])\n if (encoding !== null && alternates.has(encoding)) {\n return [alternates.get(encoding)]\n } else {\n return Array.from(alternates.values())\n }\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n */\n static aggregateInflectionsForDisplay (inflections) {\n // TODO at some point we might want to be able to check the provider in here\n // because this really only applies to the specifics of the Aramorph parser\n let aggregated = []\n let aggregates = { [Constants.POFS_NOUN]: [], [Constants.POFS_ADJECTIVE]: [], [Constants.POFS_NOUN_PROPER]: [] }\n for (let infl of inflections) {\n if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/ADJ[uaiNK]/)) {\n aggregates[Constants.POFS_ADJECTIVE].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN_PROPER].push(infl)\n } else {\n // we are also going to keep the examples out of the display for now\n infl.example = null\n aggregated.push(infl)\n }\n }\n for (let type of Object.keys(aggregates)) {\n let base = aggregated.filter((i) => i[Feature.types.part].value === type)\n if (base.length !== 1) {\n // if we don't have the base form then we don't really know what to do here\n // so just put the inflection back in the ones available for display\n aggregated.push(...aggregates[type])\n }\n // we may decide we want to keep the extra suffix and morph information\n // from the alternate inflections but for now we just will drop it from\n // the inflections that are displayed\n }\n return aggregated\n }\n}\n","/* eslint-disable no-unused-vars */\nexport const LANG_UNIT_WORD = Symbol('word')\nexport const LANG_UNIT_CHAR = Symbol('char')\nexport const LANG_DIR_LTR = Symbol('ltr')\nexport const LANG_DIR_RTL = Symbol('rtl')\nexport const LANG_UNDEFINED = Symbol('undefined')\nexport const LANG_LATIN = Symbol('latin')\nexport const LANG_GREEK = Symbol('greek')\nexport const LANG_ARABIC = Symbol('arabic')\nexport const LANG_PERSIAN = Symbol('persian')\nexport const STR_LANG_CODE_UNDEFINED = 'undefined'\nexport const STR_LANG_CODE_LAT = 'lat'\nexport const STR_LANG_CODE_LA = 'la'\nexport const STR_LANG_CODE_GRC = 'grc'\nexport const STR_LANG_CODE_ARA = 'ara'\nexport const STR_LANG_CODE_AR = 'ar'\nexport const STR_LANG_CODE_FAS = 'fas'\nexport const STR_LANG_CODE_PER = 'per'\nexport const STR_LANG_CODE_FA_IR = 'fa-IR'\nexport const STR_LANG_CODE_FA = 'fa'\n// parts of speech\nexport const POFS_ADJECTIVE = 'adjective'\nexport const POFS_ADVERB = 'adverb'\nexport const POFS_ADVERBIAL = 'adverbial'\nexport const POFS_ARTICLE = 'article'\nexport const POFS_CONJUNCTION = 'conjunction'\nexport const POFS_EXCLAMATION = 'exclamation'\nexport const POFS_INTERJECTION = 'interjection'\nexport const POFS_NOUN = 'noun'\nexport const POFS_NOUN_PROPER = 'proper noun'\nexport const POFS_NUMERAL = 'numeral'\nexport const POFS_PARTICLE = 'particle'\nexport const POFS_PREFIX = 'prefix'\nexport const POFS_PREPOSITION = 'preposition'\nexport const POFS_PRONOUN = 'pronoun'\nexport const POFS_SUFFIX = 'suffix'\nexport const POFS_GERUNDIVE = 'gerundive'\nexport const POFS_SUPINE = 'supine'\nexport const POFS_VERB = 'verb'\nexport const POFS_VERB_PARTICIPLE = 'verb participle'\n// gender\nexport const GEND_MASCULINE = 'masculine'\nexport const GEND_FEMININE = 'feminine'\nexport const GEND_NEUTER = 'neuter'\nexport const GEND_COMMON = 'common'\nexport const GEND_ANIMATE = 'animate'\nexport const GEND_INANIMATE = 'inanimate'\n// Polish gender types\nexport const GEND_PERSONAL_MASCULINE = 'personal masculine'\nexport const GEND_ANIMATE_MASCULINE = 'animate masculine'\nexport const GEND_INANIMATE_MASCULINE = 'inanimate masculine'\n// comparative\nexport const COMP_POSITIVE = 'positive'\nexport const COMP_COMPARITIVE = 'comparative'\nexport const COMP_SUPERLATIVE = 'superlative'\n// case\nexport const CASE_ABESSIVE = 'abessive'\nexport const CASE_ABLATIVE = 'ablative'\nexport const CASE_ABSOLUTIVE = 'absolutive'\nexport const CASE_ACCUSATIVE = 'accusative'\nexport const CASE_ADDIRECTIVE = 'addirective'\nexport const CASE_ADELATIVE = 'adelative'\nexport const CASE_ADESSIVE = 'adessive'\nexport const CASE_ADVERBIAL = 'adverbial'\nexport const CASE_ALLATIVE = 'allative'\nexport const CASE_ANTESSIVE = 'antessive'\nexport const CASE_APUDESSIVE = 'apudessive'\nexport const CASE_AVERSIVE = 'aversive'\nexport const CASE_BENEFACTIVE = 'benefactive'\nexport const CASE_CARITIVE = 'caritive'\nexport const CASE_CAUSAL = 'causal'\nexport const CASE_CAUSAL_FINAL = 'causal-final'\nexport const CASE_COMITATIVE = 'comitative'\nexport const CASE_DATIVE = 'dative'\nexport const CASE_DELATIVE = 'delative'\nexport const CASE_DIRECT = 'direct'\nexport const CASE_DISTRIBUTIVE = 'distributive'\nexport const CASE_DISTRIBUTIVE_TEMPORAL = 'distributive-temporal'\nexport const CASE_ELATIVE = 'elative'\nexport const CASE_ERGATIVE = 'ergative'\nexport const CASE_ESSIVE = 'essive'\nexport const CASE_ESSIVE_FORMAL = 'essive-formal'\nexport const CASE_ESSIVE_MODAL = 'essive-modal'\nexport const CASE_EQUATIVE = 'equative'\nexport const CASE_EVITATIVE = 'evitative'\nexport const CASE_EXESSIVE = 'exessive'\nexport const CASE_FINAL = 'final'\nexport const CASE_FORMAL = 'formal'\nexport const CASE_GENITIVE = 'genitive'\nexport const CASE_ILLATIVE = 'illative'\nexport const CASE_INELATIVE = 'inelative'\nexport const CASE_INESSIVE = 'inessive'\nexport const CASE_INSTRUCTIVE = 'instructive'\nexport const CASE_INSTRUMENTAL = 'instrumental'\nexport const CASE_INSTRUMENTAL_COMITATIVE = 'instrumental-comitative'\nexport const CASE_INTRANSITIVE = 'intransitive'\nexport const CASE_LATIVE = 'lative'\nexport const CASE_LOCATIVE = 'locative'\nexport const CASE_MODAL = 'modal'\nexport const CASE_MULTIPLICATIVE = 'multiplicative'\nexport const CASE_NOMINATIVE = 'nominative'\nexport const CASE_PARTITIVE = 'partitive'\nexport const CASE_PEGATIVE = 'pegative'\nexport const CASE_PERLATIVE = 'perlative'\nexport const CASE_POSSESSIVE = 'possessive'\nexport const CASE_POSTELATIVE = 'postelative'\nexport const CASE_POSTDIRECTIVE = 'postdirective'\nexport const CASE_POSTESSIVE = 'postessive'\nexport const CASE_POSTPOSITIONAL = 'postpositional'\nexport const CASE_PREPOSITIONAL = 'prepositional'\nexport const CASE_PRIVATIVE = 'privative'\nexport const CASE_PROLATIVE = 'prolative'\nexport const CASE_PROSECUTIVE = 'prosecutive'\nexport const CASE_PROXIMATIVE = 'proximative'\nexport const CASE_SEPARATIVE = 'separative'\nexport const CASE_SOCIATIVE = 'sociative'\nexport const CASE_SUBDIRECTIVE = 'subdirective'\nexport const CASE_SUBESSIVE = 'subessive'\nexport const CASE_SUBELATIVE = 'subelative'\nexport const CASE_SUBLATIVE = 'sublative'\nexport const CASE_SUPERDIRECTIVE = 'superdirective'\nexport const CASE_SUPERESSIVE = 'superessive'\nexport const CASE_SUPERLATIVE = 'superlative'\nexport const CASE_SUPPRESSIVE = 'suppressive'\nexport const CASE_TEMPORAL = 'temporal'\nexport const CASE_TERMINATIVE = 'terminative'\nexport const CASE_TRANSLATIVE = 'translative'\nexport const CASE_VIALIS = 'vialis'\nexport const CASE_VOCATIVE = 'vocative'\nexport const MOOD_ADMIRATIVE = 'admirative'\nexport const MOOD_COHORTATIVE = 'cohortative'\nexport const MOOD_CONDITIONAL = 'conditional'\nexport const MOOD_DECLARATIVE = 'declarative'\nexport const MOOD_DUBITATIVE = 'dubitative'\nexport const MOOD_ENERGETIC = 'energetic'\nexport const MOOD_EVENTIVE = 'eventive'\nexport const MOOD_GENERIC = 'generic'\nexport const MOOD_GERUNDIVE = 'gerundive'\nexport const MOOD_HYPOTHETICAL = 'hypothetical'\nexport const MOOD_IMPERATIVE = 'imperative'\nexport const MOOD_INDICATIVE = 'indicative'\nexport const MOOD_INFERENTIAL = 'inferential'\nexport const MOOD_INFINITIVE = 'infinitive'\nexport const MOOD_INTERROGATIVE = 'interrogative'\nexport const MOOD_JUSSIVE = 'jussive'\nexport const MOOD_NEGATIVE = 'negative'\nexport const MOOD_OPTATIVE = 'optative'\nexport const MOOD_PARTICIPLE = 'participle'\nexport const MOOD_PRESUMPTIVE = 'presumptive'\nexport const MOOD_RENARRATIVE = 'renarrative'\nexport const MOOD_SUBJUNCTIVE = 'subjunctive'\nexport const MOOD_SUPINE = 'supine'\nexport const NUM_SINGULAR = 'singular'\nexport const NUM_PLURAL = 'plural'\nexport const NUM_DUAL = 'dual'\nexport const NUM_TRIAL = 'trial'\nexport const NUM_PAUCAL = 'paucal'\nexport const NUM_SINGULATIVE = 'singulative'\nexport const NUM_COLLECTIVE = 'collective'\nexport const NUM_DISTRIBUTIVE_PLURAL = 'distributive plural'\nexport const NRL_CARDINAL = 'cardinal'\nexport const NRL_ORDINAL = 'ordinal'\nexport const NRL_DISTRIBUTIVE = 'distributive'\nexport const NURL_NUMERAL_ADVERB = 'numeral adverb'\nexport const ORD_1ST = '1st'\nexport const ORD_2ND = '2nd'\nexport const ORD_3RD = '3rd'\nexport const ORD_4TH = '4th'\nexport const ORD_5TH = '5th'\nexport const ORD_6TH = '6th'\nexport const ORD_7TH = '7th'\nexport const ORD_8TH = '8th'\nexport const ORD_9TH = '9th'\nexport const TENSE_AORIST = 'aorist'\nexport const TENSE_FUTURE = 'future'\nexport const TENSE_FUTURE_PERFECT = 'future perfect'\nexport const TENSE_IMPERFECT = 'imperfect'\nexport const TENSE_PAST_ABSOLUTE = 'past absolute'\nexport const TENSE_PERFECT = 'perfect'\nexport const TENSE_PLUPERFECT = 'pluperfect'\nexport const TENSE_PRESENT = 'present'\nexport const VKIND_TO_BE = 'to be'\nexport const VKIND_COMPOUNDS_OF_TO_BE = 'compounds of to be'\nexport const VKIND_TAKING_ABLATIVE = 'taking ablative'\nexport const VKIND_TAKING_DATIVE = 'taking dative'\nexport const VKIND_TAKING_GENITIVE = 'taking genitive'\nexport const VKIND_TRANSITIVE = 'transitive'\nexport const VKIND_INTRANSITIVE = 'intransitive'\nexport const VKIND_IMPERSONAL = 'impersonal'\nexport const VKIND_DEPONENT = 'deponent'\nexport const VKIND_SEMIDEPONENT = 'semideponent'\nexport const VKIND_PERFECT_DEFINITE = 'perfect definite'\nexport const VOICE_ACTIVE = 'active'\nexport const VOICE_PASSIVE = 'passive'\nexport const VOICE_MEDIOPASSIVE = 'mediopassive'\nexport const VOICE_IMPERSONAL_PASSIVE = 'impersonal passive'\nexport const VOICE_MIDDLE = 'middle'\nexport const VOICE_ANTIPASSIVE = 'antipassive'\nexport const VOICE_REFLEXIVE = 'reflexive'\nexport const VOICE_RECIPROCAL = 'reciprocal'\nexport const VOICE_CAUSATIVE = 'causative'\nexport const VOICE_ADJUTATIVE = 'adjutative'\nexport const VOICE_APPLICATIVE = 'applicative'\nexport const VOICE_CIRCUMSTANTIAL = 'circumstantial'\nexport const VOICE_DEPONENT = 'deponent'\nexport const TYPE_IRREGULAR = 'irregular'\nexport const TYPE_REGULAR = 'regular'\n// Classes\nexport const CLASS_PERSONAL = 'personal'\nexport const CLASS_REFLEXIVE = 'reflexive'\nexport const CLASS_POSSESSIVE = 'possessive'\nexport const CLASS_DEMONSTRATIVE = 'demonstrative'\nexport const CLASS_RELATIVE = 'relative'\nexport const CLASS_INTERROGATIVE = 'interrogative'\nexport const CLASS_GENERAL_RELATIVE = 'general relative'\nexport const CLASS_INDEFINITE = 'indefinite'\nexport const CLASS_INTENSIVE = 'intensive'\nexport const CLASS_RECIPROCAL = 'reciprocal'\n/* eslit-enable no-unused-vars */\n","import Definition from './definition'\n\nexport default class DefinitionSet {\n constructor (lemmaWord, languageID) {\n this.lemmaWord = lemmaWord\n this.languageID = languageID\n\n this.shortDefs = []\n this.fullDefs = []\n }\n\n /**\n * A function that is used to instantiate a DefinitionSet object from a JSON object.\n * @param {Object} jsonObject - A JSON object representing DefinitionSet data.\n * @return {DefinitionSet} A DefinitionSet object populated with data from JSON object.\n */\n static readObject (jsonObject) {\n let definitionSet = new DefinitionSet(jsonObject.lemmaWord, jsonObject.languageID)\n\n for (let shortDef of jsonObject.shortDefs) {\n definitionSet.shortDefs.push(Definition.readObject(shortDef))\n }\n for (let fullDef of jsonObject.fullDefs) {\n definitionSet.fullDefs.push(Definition.readObject(fullDef))\n }\n\n return definitionSet\n }\n\n /**\n * Check to see if the DefinitionSet is empty\n * @return {boolean} true if empty false if there is at least one definition\n */\n isEmpty () {\n return this.shortDefs.length === 0 && this.fullDefs.length === 0\n }\n\n /**\n * Appends one or more definitions to a list of short definitions.\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @return {Definition[]} A list of short definitions this object has.\n */\n appendShortDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.shortDefs = this.shortDefs.concat(definitions)\n }\n return this.shortDefs\n }\n\n /**\n * clear accumulated short definitions\n */\n clearShortDefs () {\n this.shortDefs = []\n }\n\n /**\n * Appends one or more definitions to a list of full definitions.\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @return {Definition[]} A list of full definitions this object has.\n */\n appendFullDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.fullDefs = this.fullDefs.concat(definitions)\n }\n return this.fullDefs\n }\n\n /**\n * clear accumulated full definitions\n */\n clearFullDefs () {\n this.fullDefs = []\n }\n}\n","class Definition {\n constructor (text, language, format, lemmaText) {\n this.text = text\n this.language = language\n this.format = format\n this.lemmaText = lemmaText\n }\n\n static readObject (jsonObject) {\n return new Definition(jsonObject.text, jsonObject.language, jsonObject.format, jsonObject.lemmaText)\n }\n}\nexport default Definition\n","'use strict'\nimport * as Constants from './constants.js'\nimport Definition from './definition.js'\nimport DefinitionSet from './definition-set'\nimport Feature from './feature.js'\nimport GrmFeature from './grm-feature.js'\nimport FeatureType from './feature_type.js'\nimport FeatureList from './feature_list.js'\nimport FeatureImporter from './feature_importer.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Homonym from './homonym.js'\nimport Lexeme from './lexeme.js'\nimport Lemma from './lemma.js'\nimport Inflection from './inflection.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport ResourceProvider from './resource_provider.js'\n\nimport Translation from './translation.js'\n\nexport {\n Constants,\n Definition,\n DefinitionSet,\n Feature,\n GrmFeature,\n FeatureType,\n FeatureList,\n FeatureImporter,\n Inflection,\n LanguageModelFactory,\n Homonym,\n Lexeme,\n Lemma,\n LatinLanguageModel,\n GreekLanguageModel,\n ArabicLanguageModel,\n PersianLanguageModel,\n ResourceProvider,\n\n Translation }\n","import LanguageModelFactory from './language_model_factory.js'\nimport FeatureImporter from './feature_importer.js'\nimport * as i18n from './i18n.js'\n\n/**\n * A grammatical feature object, that can replace both Feature and FeatureType objects.\n */\nexport default class Feature {\n /**\n *\n * @param {string} type - A type of the feature, allowed values are specified in 'type' getter.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n *\n * If a single value with no sort order is provided, data format will be:\n * value\n * This value will be assigned a default sort order.\n *\n * If a single value with sort order is provided, data format will be:\n * [[value, sortOrder]]\n *\n * If multiple values without sort order are provided, data format will be:\n * [value1, value2, value3, ...]\n * Items will be assigned a sort order according to their order in an array, starting from one.\n *\n * If multiple values with sort order are provided, data format will be:\n * [[value1, sortOrder1], [value2, sortOrder2], [value3, sortOrder3], ...]\n * If a sort order is omitted anywhere, it will be set to a default sort order.\n *\n * Each value of a feature has its `sortOrder` property. This value is used to soft values of a feature\n * between themselves. Feature object has a `sortOrder` property of its own, too. It is used\n * to compare two Feature objects between themselves.\n *\n * @param {symbol} languageID - A language ID of a feature\n * @param {number} sortOrder - A sort order of a feature when multiple features are compared.\n * @param allowedValues - If feature has a restricted set of allowed values, here will be a list of those\n * values. An order of those values can define a sort order.\n */\n constructor (type, data, languageID, sortOrder = 1, allowedValues = []) {\n if (!Feature.isAllowedType(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!data) {\n throw new Error('Feature should have a non-empty value(s).')\n }\n if (!languageID) {\n throw new Error('No language ID is provided')\n }\n\n this.type = type\n this.languageID = languageID\n this.sortOrder = sortOrder\n this.allowedValues = allowedValues\n\n // `_data` is an array\n this._data = Feature.dataValuesFromInput(data)\n this.sort()\n }\n\n static dataValuesFromInput (data) {\n let normalized\n if (!Array.isArray(data)) {\n // Single value with no sort order\n normalized = [[data, this.defaultSortOrder]]\n } else if (!Array.isArray(data[0])) {\n // Multiple values without any sort order, default sort order will be used\n // we reverse because sortOrder is numeric descending (i.e. 2 is before 1)\n normalized = data.map((v, i) => [v, data.length - i])\n } else {\n // Value has all the data, including a sort order\n normalized = data\n }\n return normalized.map(d => { return { value: d[0], sortOrder: Number.parseInt(d[1]) } })\n }\n\n /**\n *\n * @param featureData\n */\n static newFromFtr (featureData) {\n\n }\n\n static get types () {\n return {\n /**\n * @deprecated : Use `fullForm` where appropriate instead\n */\n word: 'word',\n fullForm: 'full form',\n hdwd: 'headword',\n part: 'part of speech', // Part of speech\n number: 'number',\n 'case': 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n 'class': 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var' // variance?\n }\n }\n\n static isAllowedType (value) {\n return Object.values(this.types).includes(`${value}`)\n }\n\n static get defaultSortOrder () {\n return 1\n }\n\n static get joinSeparator () {\n return ' '\n }\n\n static get defaultImporterName () {\n return 'default'\n }\n\n /**\n * Test to see if this feature allows unrestricted values.\n * @returns {boolean} true if unrestricted false if not.\n */\n get allowsUnrestrictedValues () {\n /*\n If `allowedValues` array is empty then there are no value restrictions\n */\n return this.allowedValues.length === 0\n }\n\n /**\n * Defines a sort order of feature values. Values are sorted according to their sort order\n * (a number starting from one). If several values have the same sort order, they will be\n * sorted alphabetically according to their values.\n * Sort order is deterministic.\n */\n sort () {\n this._data.sort((a, b) => a.sortOrder !== b.sortOrder ? b.sortOrder - a.sortOrder : a.value.localeCompare(b.value))\n }\n\n /**\n * Compares a feature's values to another feature's values for sorting\n * @param {Feature} otherFeature the feature to compare this feature's values to\n * @return {integer} >=1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second\n */\n compareTo (otherFeature) {\n // the data values are sorted upon construction and insertion so we only should need to look at the first values\n // feature sortOrders are descending (i.e. 5 sorts higher than 1)\n return otherFeature._data[0].sortOrder - this._data[0].sortOrder\n }\n\n get items () {\n return this._data\n }\n\n /**\n * Returns a single value string. If feature has a single value, this value will be returned.\n * If it has multiple values, those values will be concatenated with a default separator and\n * returned in a single string. Values composing this string are sorted according\n * to each value's sort order.\n * @return {string} A single value string.\n */\n get value () {\n return this.values.join(this.constructor.joinSeparator)\n }\n\n /**\n * Returns an array of string values of a feature, sorted according to each item's sort order.\n * If a feature contains a single feature, an array with one value will be returned.\n * @return {string[]} An array of string values.\n */\n get values () {\n return this._data.map(v => v.value)\n }\n\n /**\n * Retrieves a value object by name. Can be used to update a value object directly.\n * @param {string} featureVale - A feature value of an object to retrieve.\n */\n getValue (featureVale) {\n return this._data.find(v => v.value === featureVale)\n }\n\n /**\n * Returns a number of feature values.\n * @retrun {number] A quantity of feature values\n */\n get valQty () {\n return this._data.length\n }\n\n get isEmpty () {\n return this.valQty === 0\n }\n\n get isSingle () {\n return this.valQty === 1\n }\n\n get isMultiple () {\n return this.valQty > 1\n }\n\n /**\n * A string representation of a feature.\n * @return {string}\n */\n toString () {\n return this.value\n }\n\n /**\n * Examines the feature for a specific value.\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValue (value) {\n return this.values.includes(value)\n }\n\n /**\n * Checks if this feature has all value from an array.\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValues (values) {\n let hasValues = true\n for (let value of values) {\n hasValues = hasValues && this.hasValue(value)\n }\n return hasValues\n }\n\n /**\n * Checks if this feature has some value from an array.\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasSomeValues (values) {\n let hasValues = false\n for (let value of values) {\n hasValues = hasValues || this.hasValue(value)\n }\n return hasValues\n }\n\n get valuesUnrestricted () {\n return this.allowedValues.length === 0\n }\n\n /**\n * Two features are considered fully equal if they are of the same type, have the same language,\n * and the same set of feature values in the same order.\n * @param {Feature} feature - A GrmFtr object this feature should be compared with.\n * @return {boolean} True if features are equal, false otherwise.\n */\n isEqual (feature) {\n return this.type === feature.type &&\n LanguageModelFactory.compareLanguages(this.languageID, feature.languageID) &&\n this.value === feature.value\n }\n\n /**\n * Adds a single new value to the existing feature object.\n * This function is chainable.\n * @param {string} value - A feature value.\n * @param {number} sortOrder - A sort order.\n * @return {Feature} - Self reference for chaining.\n */\n addValue (value, sortOrder = this.constructor.defaultSortOrder) {\n if (!this.hasValue(value)) {\n this._data.push({\n value: value,\n sortOrder: sortOrder\n })\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n console.warn(`Value \"${value}\" already exists. If you want to change it, use \"getValue\" to access it directly.`)\n }\n return this\n }\n\n /**\n * Adds multiple new values to the existing feature object.\n * This function is chainable.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n * @return {Feature} - Self reference for chaining.\n */\n addValues (data) {\n let normalizedData = this.constructor.dataValuesFromInput(data)\n let values = normalizedData.map(v => v.value)\n if (!this.hasSomeValues(values)) {\n this._data = this._data.concat(normalizedData)\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n console.warn(`One or several values from \"${values}\" already exist. If you want to change it, use \"getValue\" to access a value directly.`)\n }\n return this\n }\n\n /**\n * Removes a single value from the existing feature object.\n * @param value\n */\n removeValue (value) {\n // TODO: Do we need it?\n console.warn(`This feature is not implemented yet`)\n }\n\n /**\n * Creates a new single value Feature object of the same type and same language,\n * but with a different feature value.\n * This can be used when one feature defines a type and it is necessary\n * to create other items of the same type.\n * @param {string} value - A value of a feature.\n * @param {number} sortOrder.\n * @return {Feature} A new Ftr object.\n */\n createFeature (value, sortOrder = this.constructor.defaultSortOrder) {\n // TODO: Add a check of if the value exists in a source Feature object\n return new Feature(this.type, [[value, sortOrder]], this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates a multiple value Feature object of the same type and same language,\n * but with a different feature values.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations,\n * formatted according to rules described in a Ftr constructor.\n * @return {Feature} A new Ftr object.\n */\n createFeatures (data) {\n return new Feature(this.type, data, this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates an array of Feature objects where each Feature object is matching one feature value\n * form the values of this object.\n * Useful when the current objects is a type feature and it is necessary to create an array\n * of Feature objects for the type from it.\n * @return {Feature[]} - An array of Feature objects. Each object represents one feature value\n * from the current object.\n */\n get ownFeatures () {\n return this.values.map(v => new Feature(this.type, v, this.languageID, 1, this.allowedValues))\n }\n\n /**\n * Create a copy of the feature object.\n */\n getCopy () {\n let values = this._data.map(item => [item.value, item.sortOrder])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues.slice())\n }\n\n /**\n * A locale-specific abbreviation for a feature's values.\n * @return {string[]}\n */\n toLocaleStringAbbr (lang = 'en') {\n return this.values.map(v => i18n.i18n[lang][v] ? i18n.i18n[lang][v].abbr : v).join(this.constructor.joinSeparator)\n }\n\n /**\n * Adds an importer to the internal list.\n * @param {string} name - A name of an importer.\n * @param {FeatureImporter} importer - A `FeatureImporter` object.\n */\n addImporter (importer = new FeatureImporter(), name = this.constructor.defaultImporterName) {\n if (!this.importers) {\n this.importers = new Map()\n }\n this.importers.set(name, importer)\n return importer\n }\n\n getImporter (name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n return this.importers.get(name)\n }\n\n /**\n * Adds feature values from the imported values.\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @return {Feature} - A new Ftr object.\n */\n addFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n foreignData = this.constructor.dataValuesFromInput(foreignData)\n this._data.push(...foreignData.map(fv => { return { value: importer.get(fv.value), sortOrder: fv.sortOrder } }))\n this.sort()\n return this\n }\n\n /**\n * Creates a new feature of the same type and with the same language from the imported values.\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @return {Feature} - A new Ftr object.\n */\n createFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n if (!Array.isArray(foreignData)) {\n foreignData = [foreignData]\n }\n let values = foreignData.map(fv => importer.get(fv))\n /*\n Some values may be mapped into multiple values. For them an importer will return an array of values instead of a single value.\n The values will be a multidimensional array that will require flattening.\n */\n values = values.reduce((acc, cv) => acc.concat(cv), [])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues)\n }\n}\n","class FeatureImporter {\n /**\n * @param defaults\n * @param {boolean} returnUnknown - If true, and a source value is not found in the importer,\n * a source value will be returned without any change (a passthrough). If false, an Error\n * will be thrown for unknown source values.\n * @return {FeatureImporter}\n */\n constructor (defaults = [], returnUnknown = false) {\n this.hash = {}\n for (let value of defaults) {\n this.map(value, value)\n }\n this.returnUnknown = returnUnknown\n return this\n }\n\n /**\n * Sets mapping between external imported value and one or more library standard values. If an importedValue\n * is already in a hash table, old libraryValue will be overwritten with the new one.\n * @param {string} importedValue - External value\n * @param {Object | Object[] | string | string[]} libraryValue - Library standard value\n */\n map (importedValue, libraryValue) {\n if (!importedValue) {\n throw new Error('Imported value should not be empty.')\n }\n\n if (!libraryValue) {\n throw new Error('Library value should not be empty.')\n }\n\n this.hash[importedValue] = libraryValue\n return this\n }\n\n /**\n * Checks if value is in a map.\n * @param {string} importedValue - A value to test.\n * @returns {boolean} - Tru if value is in a map, false otherwise.\n */\n has (importedValue) {\n return this.hash.hasOwnProperty(importedValue)\n }\n\n /**\n * Returns one or more library standard values that match an external value\n * @param {string} sourceValue - External value\n * @returns {Object | string} One or more of library standard values\n */\n get (sourceValue) {\n if (this.has(sourceValue)) {\n return this.hash[sourceValue]\n } else if (this.returnUnknown) {\n return sourceValue\n } else {\n throw new Error('A value \"' + sourceValue + '\" is not found in the importer.')\n }\n }\n}\nexport default FeatureImporter\n","/**\n * A list of grammatical features that characterizes a language unit. Has some additional service methods,\n * compared with standard storage objects.\n */\nclass FeatureList {\n /**\n * Initializes a feature list.\n * @param {Feature[]} features - Features that build the list (optional, can be set later).\n */\n constructor (features = []) {\n this._features = []\n this._types = {}\n this.add(features)\n }\n\n add (features) {\n if (!features || !Array.isArray(features)) {\n throw new Error('Features must be defined and must come in an array.')\n }\n\n for (let feature of features) {\n this._features.push(feature)\n this._types[feature.type] = feature\n }\n }\n\n /**\n * Returns an array of grouping features.\n * @returns {FeatureType[]} - An array of grouping features.\n */\n get items () {\n return this._features\n }\n\n forEach (callback) {\n this._features.forEach(callback)\n }\n\n /**\n * Returns a feature of a particular type. If such feature does not exist in a list, returns undefined.\n * @param {string} type - Feature type as defined in `types` object.\n * @return {FeatureType | undefined} A feature if a particular type if contains it. Undefined otherwise.\n */\n ofType (type) {\n if (this.hasType(type)) {\n return this._types[type]\n }\n }\n\n /**\n * Checks whether a feature list has a feature of a specific type.\n * @param {string} type - Feature type as defined in `types` object.\n * @return {boolean} Whether a feature list has a feature of a particular type.\n */\n hasType (type) {\n return this._types.hasOwnProperty(type)\n }\n}\nexport default FeatureList\n","import Feature from './feature.js'\nimport FeatureImporter from './feature_importer.js'\nimport LMF from './language_model_factory'\n\n/**\n * @deprecated Use Feature instead\n * Definition class for a (grammatical) feature. Stores type information and (optionally) all possible values of the feature.\n * It serves as a feature generator. If list of possible values is provided, it can generate a Feature object\n * each time a property that corresponds to a feature value is accessed. If no list of possible values provided,\n * a Feature object can be generated with get(value) method.\n *\n * An order of values determines a default sort and grouping order. If two values should have the same order,\n * they should be grouped within an array: value1, [value2, value3], value4. Here 'value2' and 'value3' have\n * the same priority for sorting and grouping.\n */\nclass FeatureType {\n // TODO: value checking\n /**\n * Creates and initializes a Feature Type object.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string[] | string[][]} values - A list of allowed values for this feature type.\n * If an empty array is provided, there will be no\n * allowed values as well as no ordering (can be used for items that do not need or have a simple order,\n * such as footnotes).\n * @param {String | Symbol} language - A language of a feature type.\n */\n constructor (type, values, language) {\n if (!values || !Array.isArray(values)) {\n throw new Error('Values should be an array (or an empty array) of values.')\n }\n if (!language) {\n throw new Error('FeatureType constructor requires a language')\n }\n\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n\n /*\n This is a sort order index for a grammatical feature values. It is determined by the order of values in\n a 'values' array.\n */\n this._orderIndex = []\n this._orderLookup = {}\n\n for (const [index, value] of values.entries()) {\n this._orderIndex.push(value)\n if (Array.isArray(value)) {\n for (let element of value) {\n this[element] = new Feature(this.type, element, this.languageID)\n this._orderLookup[element] = index\n }\n } else {\n this[value] = new Feature(this.type, value, this.languageID)\n this._orderLookup[value] = index\n }\n }\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n /**\n * test to see if this FeatureType allows unrestricted values\n * @returns {boolean} true if unrestricted false if not\n */\n hasUnrestrictedValue () {\n return this.orderedValues.length === 1 && this.orderedValues[0] === FeatureType.UNRESTRICTED_VALUE\n }\n\n /**\n * Return a Feature with an arbitrary value. This value would not be necessarily present among FeatureType values.\n * This can be especially useful for features that do not set: a list of predefined values, such as footnotes.\n * @param value\n * @param {int} sortOrder\n * @returns {Feature}\n */\n get (value, sortOrder = 1) {\n if (value) {\n return new Feature(this.type, [[value, sortOrder]], this.languageID)\n } else {\n throw new Error('A non-empty value should be provided.')\n }\n }\n\n /**\n *\n * @param {string[][]} data - An array of value arrays as: [[value1, sortOrder1], [value2, sortOrder2]]\n * @return {Feature}\n */\n getValues (data) {\n return new Feature(this.type, data, this.languageID)\n }\n\n getFromImporter (importerName, value) {\n let mapped\n try {\n mapped = this.importer[importerName].get(value)\n } catch (e) {\n // quietly catch not found and replace with default\n mapped = this.get(value)\n }\n return mapped\n }\n\n /**\n * Creates and returns a new importer with a specific name. If an importer with this name already exists,\n * an existing Importer object will be returned.\n * @param {string} name - A name of an importer object\n * @returns {Importer} A new or existing Importer object that matches a name provided\n */\n addImporter (name) {\n if (!name) {\n throw new Error('Importer should have a non-empty name.')\n }\n this.importer = this.importer || {}\n this.importer[name] = this.importer[name] || new FeatureImporter()\n return this.importer[name]\n }\n\n /**\n * Return copies of all feature values as Feature objects in a sorted array, according to feature type's sort order.\n * For a similar function that returns strings instead of Feature objects see orderedValues().\n * @returns {Feature[] | Feature[][]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of Feature objects will be returned instead of a single Feature object, as for single feature values.\n */\n get orderedFeatures () {\n return this.orderedValues.map((value) => new Feature(this.type, value, this.languageID))\n }\n\n /**\n * Return all feature values as strings in a sorted array, according to feature type's sort order.\n * This is a main method that specifies a sort order of the feature type. orderedFeatures() relies\n * on this method in providing a sorted array of feature values. If you want to create\n * a custom sort order for a particular feature type that will depend on some options that are not type-related,\n * create a wrapper around this function providing it with options arguments so it will be able to decide\n * in what order those features will be based on those arguments.\n * For a similar function that returns Feature objects instead of strings see orderedValues().\n * @returns {string[]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of strings will be returned instead of a single strings, as for single feature values.\n */\n get orderedValues () {\n return this._orderIndex\n }\n\n /**\n * Returns a lookup table for type values as:\n * {value1: order1, value2: order2}, where order is a sort order of an item. If two items have the same sort order,\n * their order value will be the same.\n * @returns {object}\n */\n get orderLookup () {\n return this._orderLookup\n }\n\n /**\n * Sets an order of grammatical feature values for a grammatical feature. Used mostly for sorting, filtering,\n * and displaying.\n *\n * @param {Feature[] | Feature[][]} values - a list of grammatical features that specify their order for\n * sorting and filtering. Some features can be grouped as [[genders.masculine, genders.feminine], LibLatin.genders.neuter].\n * It means that genders.masculine and genders.feminine belong to the same group. They will have the same index\n * and will be stored inside an _orderIndex as an array. genders.masculine and genders.feminine will be grouped together\n * during filtering and will be in the same bin during sorting.\n *\n */\n set order (values) {\n if (!values || (Array.isArray(values) && values.length === 0)) {\n throw new Error('A non-empty list of values should be provided.')\n }\n\n // If a single value is provided, convert it into an array\n if (!Array.isArray(values)) {\n values = [values]\n }\n\n for (let value of values) {\n if (Array.isArray(value)) {\n for (let element of value) {\n if (!this.hasOwnProperty(element.value)) {\n throw new Error('Trying to order an element with \"' + element.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (element.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + element.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${element.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n } else {\n if (!this.hasOwnProperty(value.value)) {\n throw new Error('Trying to order an element with \"' + value.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (value.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + value.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(value.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${value.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n }\n\n // Erase whatever sort order was set previously\n this._orderLookup = {}\n this._orderIndex = []\n\n // Define a new sort order\n for (const [index, element] of values.entries()) {\n if (Array.isArray(element)) {\n // If it is an array, all values should have the same order\n let elements = []\n for (const subElement of element) {\n this._orderLookup[subElement.value] = index\n elements.push(subElement.value)\n }\n this._orderIndex[index] = elements\n } else {\n // If is a single value\n this._orderLookup[element.value] = index\n this._orderIndex[index] = element.value\n }\n }\n }\n}\nFeatureType.UNRESTRICTED_VALUE = Symbol('unrestricted')\nexport default FeatureType\n","import LanguageModel from './language_model.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class GreekLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_GREEK }\n static get languageCode () { return Constants.STR_LANG_CODE_GRC }\n static get languageCodes () { return [Constants.STR_LANG_CODE_GRC] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_GENERAL_RELATIVE,\n Constants.CLASS_INDEFINITE,\n Constants.CLASS_INTENSIVE,\n Constants.CLASS_INTERROGATIVE,\n Constants.CLASS_PERSONAL,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_RECIPROCAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_RELATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL,\n Constants.NUM_DUAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT,\n Constants.TENSE_AORIST\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_PASSIVE,\n Constants.VOICE_ACTIVE,\n Constants.VOICE_MEDIOPASSIVE,\n Constants.VOICE_MIDDLE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_OPTATIVE,\n Constants.MOOD_IMPERATIVE\n ]\n ],\n [\n // TODO full list of greek dialects\n Feature.types.dialect,\n [\n 'attic',\n 'epic',\n 'doric'\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * @override LanguageModel#grammarFeatures\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.voice]\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {string} word the source word\n * @returns {string} the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type string\n */\n static normalizeWord (word) {\n // we normalize greek to NFC - Normalization Form Canonical Composition\n if (word) {\n return word.normalize('NFC')\n } else {\n return word\n }\n }\n\n /**\n * @override LanguageModel#alternateWordEncodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // the original alpheios code used the following normalizations\n // 1. When looking up a lemma\n // stripped vowel length\n // stripped caps\n // then if failed, tried again with out these\n // 2. when adding to a word list\n // precombined unicode (vowel length/diacritics preserved)\n // 2. When looking up a verb in the verb paradigm tables\n // it set e_normalize to false, otherwise it was true...\n // make sure it's normalized to NFC and in lower case\n let normalized = GreekLanguageModel.normalizeWord(word).toLocaleLowerCase()\n let strippedVowelLength = normalized.replace(\n /[\\u{1FB0}\\u{1FB1}]/ug, '\\u{03B1}').replace(\n /[\\u{1FB8}\\u{1FB9}]/ug, '\\u{0391}').replace(\n /[\\u{1FD0}\\u{1FD1}]/ug, '\\u{03B9}').replace(\n /[\\u{1FD8}\\u{1FD9}]/ug, '\\u{0399}').replace(\n /[\\u{1FE0}\\u{1FE1}]/ug, '\\u{03C5}').replace(\n /[\\u{1FE8}\\u{1FE9}]/ug, '\\u{03A5}').replace(\n /[\\u{00AF}\\u{0304}\\u{0306}]/ug, '')\n let strippedDiaeresis = normalized.replace(\n /\\u{0390}/ug, '\\u{03AF}').replace(\n /\\u{03AA}/ug, '\\u{0399}').replace(\n /\\u{03AB}/ug, '\\u{03A5}').replace(\n /\\u{03B0}/ug, '\\u{03CD}').replace(\n /\\u{03CA}/ug, '\\u{03B9}').replace(\n /\\u{03CB}/ug, '\\u{03C5}').replace(\n /\\u{1FD2}/ug, '\\u{1F76}').replace(\n /\\u{1FD3}/ug, '\\u{1F77}').replace(\n /\\u{1FD7}/ug, '\\u{1FD6}').replace(\n /\\u{1FE2}/ug, '\\u{1F7A}').replace(\n /\\u{1FE3}/ug, '\\u{1F7B}').replace(\n /\\u{1FE7}/ug, '\\u{1FE6}').replace(\n /\\u{1FC1}/ug, '\\u{1FC0}').replace(\n /\\u{1FED}/ug, '\\u{1FEF}').replace(\n /\\u{1FEE}/ug, '\\u{1FFD}').replace(\n /[\\u{00A8}\\u{0308}]/ug, '')\n if (encoding === 'strippedDiaeresis') {\n return [strippedDiaeresis]\n } else {\n return [strippedVowelLength]\n }\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return '.,;:!?\\'\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n * @param {Inflection} inflection - An inflection object\n * @return {Object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n let constraints = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n let formBasedList = [Constants.POFS_PRONOUN, Constants.POFS_NUMERAL, Constants.POFS_ARTICLE]\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if (formBasedList.includes(inflection[Feature.types.part].value)) {\n constraints.fullFormBased = true\n } else {\n constraints.suffixBased = true\n }\n } else {\n console.warn(`Unable to set grammar: part of speech data is missing or is incorrect`, inflection[Feature.types.part])\n }\n\n constraints.pronounClassRequired =\n LanguageModelFactory.compareLanguages(GreekLanguageModel.languageID, inflection.languageID) &&\n inflection.hasOwnProperty(Feature.types.part) &&\n inflection[Feature.types.part].value === Constants.POFS_PRONOUN\n\n return constraints\n }\n\n /**\n * Determines a class of a given word (pronoun) by finding a matching word entry(ies)\n * in a pronoun source info (`forms`) and getting a single or multiple classes of those entries.\n * Some morphological analyzers provide class information that is unreliable or do not\n * provide class information at all. However, class information is essential in\n * deciding in what table should pronouns be grouped. For this, we have to\n * determine pronoun classes using this method.\n * @param {Form[]} forms - An array of known forms of pronouns.\n * @param {string} word - A word we need to find a matching class for.\n * @param {boolean} normalize - Whether normalized forms of words shall be used for comparison.\n * @return {Feature} Matching classes found within a Feature objects. If no matching classes found,\n * returns undefined.\n */\n static getPronounClasses (forms, word, normalize = true) {\n let matchingValues = new Set() // Will eliminate duplicated values\n let matchingForms = forms.filter(\n form => {\n let match = false\n if (form.value) {\n match = normalize\n ? GreekLanguageModel.normalizeWord(form.value) === GreekLanguageModel.normalizeWord(word)\n : form.value === word\n }\n return match\n }\n )\n for (const matchingForm of matchingForms) {\n if (matchingForm.features.hasOwnProperty(Feature.types.grmClass)) {\n for (const value of matchingForm.features[Feature.types.grmClass].values) {\n matchingValues.add(value)\n }\n }\n }\n if (matchingValues.size > 0) {\n return new Feature(Feature.types.grmClass, Array.from(matchingValues), GreekLanguageModel.languageID)\n }\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport * as i18n from './i18n.js'\n\n/**\n * Wrapper class for a (grammatical, usually) feature, such as part of speech or declension. Keeps both value and type information.\n */\nclass GrmFeature {\n /**\n * @deprecated Use Feature instead\n * Initializes a Feature object\n * @param {string | string[]} value - A single feature value or, if this feature could have multiple\n * values, an array of values.\n * Multiple values do not allow to use a sort order. Because of this, it's better to use\n * array of multiple Feature objects with single value each instead of a single Feature object\n * with multiple values.\n * Multiple values are left for backward compatibility only. Please do not use them as they\n * will be removed in the future.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string | symbol} language - A language of a feature, allowed values are specified in 'languages' object.\n * @param {int} sortOrder - an integer used for sorting\n */\n constructor (value, type, language, sortOrder = 1) {\n if (!GrmFeature.types.isAllowed(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!value) {\n throw new Error('Feature should have a non-empty value.')\n }\n if (!type) {\n throw new Error('Feature should have a non-empty type.')\n }\n if (!language) {\n throw new Error('Feature constructor requires a language')\n }\n this.value = value\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n this.sortOrder = sortOrder\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n isEqual (feature) {\n if (Array.isArray(feature.value)) {\n // `feature` is a single object with multiple `value` properties. This feature will be sunset\n // as it does not allow to use sort order on Feature objects.\n if (!Array.isArray(this.value) || this.value.length !== feature.value.length) {\n return false\n }\n let equal = this.type === feature.type && LMF.compareLanguages(this.languageID, feature.languageID)\n equal = equal && this.value.every(function (element, index) {\n return element === feature.value[index]\n })\n return equal\n } else {\n return LMF.compareLanguages(this.languageID, feature.languageID) && this.type === feature.type && this.value === feature.value\n }\n }\n\n isSubsetof (features) {\n if (!Array.isArray(features)) {\n features = [features] // If `features` is a single value, convert it to an array (a more general case)\n }\n // `feature` is an array of feature objects with (possibly) each having a single feature value.\n let languageID = features[0].languageID // Assume all Feature objects have the same language ID\n let type = features[0].type // Assume all Feature objects have the same type\n let values = features.map(f => f.value)\n if (LMF.compareLanguages(this.languageID, languageID) && this.type === type && values.includes(this.value)) {\n return true\n }\n return false\n }\n\n /**\n * examine the feature for a specific value\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values\n */\n hasValue (value) {\n if (Array.isArray(this.value)) {\n return this.value.includes(value)\n } else {\n return this.value === value\n }\n }\n\n /**\n * string representation of a feature\n * @return {string}\n */\n toString () {\n if (Array.isArray(this.value)) {\n return this.value.join(',')\n } else {\n return this.value\n }\n }\n\n /**\n * a locale-specific abbreviation for a feature's values\n * @return {string}\n */\n toLocaleStringAbbr (lang = 'en') {\n if (Array.isArray(this.value)) {\n return this.value.map((v) => this.toLocaleStringAbbr(v, lang))\n } else {\n return i18n.i18n[lang][this.value].abbr\n }\n }\n\n static toFeature (sourceFeature) {\n if (Array.isArray(sourceFeature)) {\n if (!(sourceFeature[0] instanceof Feature)) {\n const type = sourceFeature[0].type\n const languageID = sourceFeature[0].languageID\n const values = sourceFeature.map(v => v.value)\n return new Feature(type, values, languageID)\n }\n } else {\n if (!(sourceFeature instanceof Feature)) {\n return new Feature(sourceFeature.type, sourceFeature.value, sourceFeature.languageID)\n }\n }\n return sourceFeature\n }\n}\n// Should have no spaces in values in order to be used in HTML templates\nGrmFeature.types = {\n word: 'word',\n part: 'part of speech', // Part of speech\n number: 'number',\n 'case': 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n 'class': 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var', // variance?\n isAllowed (value) {\n let v = `${value}`\n return Object.values(this).includes(v)\n }\n}\nexport default GrmFeature\n","import LMF from './language_model_factory'\r\nimport Lexeme from './lexeme.js'\r\nimport Lemma from './lemma.js'\r\n\r\nclass Homonym {\r\n /**\r\n * Initializes a Homonym object.\r\n * @param {Lexeme[]} lexemes - An array of Lexeme objects.\r\n * @param {string} form - the form which produces the homonyms\r\n */\r\n constructor (lexemes, form) {\r\n if (!lexemes || (Array.isArray(lexemes) && lexemes.length === 0)) {\r\n throw new Error('Lexemes data should not be empty.')\r\n }\r\n\r\n if (!Array.isArray(lexemes)) {\r\n throw new Error('Lexeme data should be provided in an array.')\r\n }\r\n\r\n for (let lexeme of lexemes) {\r\n if (!(lexeme instanceof Lexeme)) {\r\n throw new Error('All lexeme data should be of Lexeme object type.')\r\n }\r\n }\r\n\r\n this.lexemes = lexemes\r\n this.targetWord = form\r\n }\r\n\r\n /**\r\n * Creates a simple form of inflection with one lexeme and zero or more inflections\r\n * attached to it. The lexeme will have lemma whose `word` will be set to\r\n * a homonym's target word.\r\n * @param {string} word - A word that will populate homonym's `targetWord` prop and lemma `word` one.\r\n * @param {symbol} languageID - A language identificator as defined in Constants.LANG_XXX.\r\n * @param {Inflection[]} inflections - Zero or more inflection objects that will be attached to the lexeme\r\n * @return {Homonym} A newly created homonym object.\r\n */\r\n static createSimpleForm (word, languageID, inflections = []) {\r\n let lemma = new Lemma(word, languageID)\r\n let lexeme = new Lexeme(lemma, inflections)\r\n return new Homonym([lexeme], word)\r\n }\r\n\r\n static readObject (jsonObject) {\r\n let lexemes = []\r\n if (jsonObject.lexemes) {\r\n for (let lexeme of jsonObject.lexemes) {\r\n lexemes.push(Lexeme.readObject(lexeme))\r\n }\r\n }\r\n let homonym = new Homonym(lexemes)\r\n if (jsonObject.targetWord) {\r\n homonym.targetWord = jsonObject.targetWord\r\n }\r\n return homonym\r\n }\r\n\r\n /**\r\n * Returns a language code of a homonym (ISO 639-3).\r\n * Homonym does not have a language property, only lemmas and inflections do. We assume that all lemmas\r\n * and inflections within the same homonym will have the same language, and we can determine a language\r\n * by using language property of the first lemma. We chan change this logic in the future if we'll need to.\r\n * @returns {string} A language code, as defined in the `languages` object.\r\n */\r\n get language () {\r\n console.warn(`Please use languageID instead`)\r\n return LMF.getLanguageCodeFromId(this.languageID)\r\n }\r\n\r\n /**\r\n * Returns a language ID of a homonym.\r\n * Homonym does not have a languageID property, only lemmas and inflections do. We assume that all lemmas\r\n * and inflections within the same homonym will have the same language, and we can determine a language\r\n * by using languageID property of the first lemma. We chan change this logic in the future if we'll need to.\r\n * @returns {Symbol} A language ID, as defined in the `LANG_` constants.\r\n */\r\n get languageID () {\r\n if (this.lexemes && this.lexemes[0] && this.lexemes[0].lemma && this.lexemes[0].lemma.languageID) {\r\n return this.lexemes[0].lemma.languageID\r\n } else {\r\n throw new Error('Homonym has not been initialized properly. Unable to obtain language ID information.')\r\n }\r\n }\r\n\r\n /**\r\n * Returns a list of all inflections within all lexemes of a homonym\r\n * @return {Inflection[]} An array of inflections\r\n */\r\n get inflections () {\r\n let inflections = []\r\n for (const lexeme of this.lexemes) {\r\n inflections = inflections.concat(lexeme.inflections)\r\n }\r\n return inflections\r\n }\r\n\r\n isDisambiguated () {\r\n return this.lexemes.filter(l => l.disambiguated).length > 0\r\n }\r\n\r\n /**\r\n * Disambiguate homymyn objects with another\r\n * @param {Homonym} base the homonym to use to disambiguate\r\n * @param {Homonym[]} disambiguators the homonyms to use to disambiguate\r\n */\r\n static disambiguate (base, disambiguators) {\r\n if (disambiguators.length === 0) {\r\n // nothing left to disamibugate with\r\n return base\r\n }\r\n let disambiguator = disambiguators.shift()\r\n let lexemes = []\r\n let missedLexemes = []\r\n // iterate through the lexemes in the disambiguator and try\r\n // to disambiguate the existing lexemes with each\r\n for (let otherLexeme of disambiguator.lexemes) {\r\n let lexemeMatched = false\r\n for (let lexeme of base.lexemes) {\r\n let newLex = Lexeme.disambiguate(lexeme, otherLexeme)\r\n lexemes.push(newLex)\r\n if (newLex.disambiguated) {\r\n lexemeMatched = true\r\n }\r\n }\r\n // if we couldn't find a matching lexeme, add the disambigutor's lexemes\r\n // to the list of lexemes for the new Homonym\r\n if (!lexemeMatched) {\r\n otherLexeme.disambiguated = true\r\n missedLexemes.push(otherLexeme)\r\n }\r\n }\r\n // create a new homonym with the disamibugated lexemes\r\n let newHom = new Homonym([...lexemes, ...missedLexemes], base.targetWord)\r\n return Homonym.disambiguate(newHom, disambiguators)\r\n }\r\n}\r\nexport default Homonym\r\n","/**\n * This is a temporary placeholder for an i18n library\n */\nexport const i18n = {\n en: {\n feminine: {\n full: 'feminine',\n abbr: 'f.'\n },\n masculine: {\n full: 'masculine',\n abbr: 'm.'\n },\n neuter: {\n full: 'neuter',\n abbr: 'n.'\n },\n nominative: {\n full: 'nominative',\n abbr: 'nom.'\n },\n accusative: {\n full: 'accusative',\n abbr: 'acc.'\n },\n genitive: {\n full: 'genitive',\n abbr: 'gen.'\n },\n vocative: {\n full: 'vocative',\n abbr: 'voc.'\n },\n ablative: {\n full: 'ablative',\n abbr: 'abl.'\n },\n locative: {\n full: 'locative',\n abbr: 'loc.'\n },\n dative: {\n full: 'dative',\n abbr: 'dat.'\n },\n positive: {\n full: 'positive',\n abbr: 'pos.'\n },\n comparative: {\n full: 'comparative',\n abbr: 'comp.'\n },\n superlative: {\n full: 'superlative',\n abbr: 'super.'\n },\n singular: {\n full: 'singular',\n abbr: 's.'\n },\n plural: {\n full: 'plural',\n abbr: 'p.'\n },\n dual: {\n full: 'dual',\n abbr: 'dl.'\n },\n present: {\n full: 'present',\n abbr: 'pr.'\n },\n imperfect: {\n full: 'imperfect',\n abbr: 'imp.'\n },\n perfect: {\n full: 'perfect',\n abbr: 'perf.'\n },\n pluperfect: {\n full: 'pluperfect',\n abbr: 'pluperf.'\n },\n plusquamperfect: {\n full: 'plusquamperfect',\n abbr: 'pqpf.'\n },\n 'future perfect': {\n full: 'future perfect',\n abbr: 'fut. perf.'\n },\n future: {\n full: 'future',\n abbr: 'fut.'\n },\n aorist: {\n full: 'aorist',\n abbr: 'aor.'\n },\n indicative: {\n full: 'indicative',\n abbr: 'ind.'\n },\n subjunctive: {\n full: 'subjunctive',\n abbr: 'sub.'\n },\n infinitive: {\n full: 'infinitive',\n abbr: 'inf.'\n },\n imperative: {\n full: 'imperative',\n abbr: 'imp.'\n },\n supine: {\n full: 'supine',\n abbr: 'sup.'\n },\n participle: {\n full: 'participle',\n abbr: 'par.'\n },\n optative: {\n full: 'optative',\n abbr: 'opt.'\n },\n active: {\n full: 'active',\n abbr: 'act.'\n },\n passive: {\n full: 'passive',\n abbr: 'pass.'\n },\n middle: {\n full: 'middle',\n abbr: 'mid.'\n },\n mediopassive: {\n full: 'mediopassive',\n abbr: 'mp.'\n },\n deponens: {\n full: 'deponens',\n abbr: 'dep.'\n }\n }\n}\n","import Feature from './feature.js'\nimport LMF from './language_model_factory.js'\nimport * as Constants from './constants.js'\n/*\n Hierarchical structure of return value of a morphological analyzer:\n\n Homonym (a group of words that are written the same way, https://en.wikipedia.org/wiki/Homonym)\n Lexeme 1 (a unit of lexical meaning, https://en.wikipedia.org/wiki/Lexeme)\n Have a lemma and one or more inflections\n Lemma (also called a headword, a canonical form of a group of words https://en.wikipedia.org/wiki/Lemma_(morphology) )\n Inflection 1\n Stem\n Suffix (also called ending)\n Inflection 2\n Stem\n Suffix\n Lexeme 2\n Lemma\n Inflection 1\n Stem\n Suffix\n */\n\n/**\n * Represents an inflection of a word\n */\nclass Inflection {\n /**\n * Initializes an Inflection object.\n * @param {string} stem - A stem of a word.\n * @param {string | symbol} language - A word's language.\n * @param {string} suffix - a suffix of a word\n * @param {prefix} prefix - a prefix of a word\n * @param {example} example - example\n */\n constructor (stem = null, language, suffix = null, prefix = null, example = null) {\n if (!stem && !suffix) {\n throw new Error('At least stem or suffix must be defined')\n }\n if (!language) {\n throw new Error('Language should not be empty.')\n }\n\n if (!LMF.supportsLanguage(language)) {\n throw new Error(`language ${language} not supported.`)\n }\n\n this.stem = stem\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n this.model = LMF.getLanguageModel(this.languageID)\n this.features = new Set() // Names of features of this inflection\n\n // A grammar constraints object\n this.constraints = {\n fullFormBased: false, // True this inflection stores and requires to use a full form of a word\n suffixBased: false, // True if only suffix is enough to identify this inflection\n obligatoryMatches: [], // Names of features that should be matched in order to include a form or suffix to an inflection table\n optionalMatches: [] // Names of features that will be recorded but are not important for inclusion of a form or suffix to an inflection table\n }\n\n // Suffix may not be present in every word. If missing, it will be set to null.\n this.suffix = suffix\n\n // Prefix may not be present in every word. If missing, it will be set to null.\n this.prefix = prefix\n\n // Example may not be provided\n this.example = example\n }\n\n get form () {\n let form, prefix, suffix, divider, stem\n\n stem = this.stem ? this.stem : ''\n divider = this.stem ? ' - ' : ''\n\n if (this.model.direction === Constants.LANG_DIR_RTL) {\n prefix = this.prefix ? divider + this.prefix : ''\n suffix = this.suffix ? this.suffix + divider : ''\n\n form = suffix + stem + prefix\n } else {\n prefix = this.prefix ? this.prefix + divider : ''\n suffix = this.suffix ? divider + this.suffix : ''\n\n form = prefix + stem + suffix\n }\n\n return form\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n /**\n * Sets grammar properties based on inflection info\n */\n setConstraints () {\n if (this.model.hasOwnProperty('getInflectionConstraints')) {\n let constraintData = this.model.getInflectionConstraints(this)\n this.constraints = Object.assign(this.constraints, constraintData)\n }\n }\n\n compareWithWordDependsOnType (word, className, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n let value\n\n if (!this.constraints.irregularVerb) {\n value = this.constraints.suffixBased ? this.suffix : this.form\n } else {\n if (className === 'Suffix') {\n value = this.suffix\n } else {\n value = this[Feature.types.fullForm] ? this[Feature.types.fullForm].value : this.form\n }\n }\n\n return normalize\n ? model.normalizeWord(value) === model.normalizeWord(word)\n : value === word\n }\n\n compareWithWord (word, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n const value = this.constraints.suffixBased ? this.suffix : this.form\n return normalize\n ? model.normalizeWord(value) === model.normalizeWord(word)\n : value === word\n }\n\n /**\n * Check to see if the supplied inflection can disambiguate this one\n * @param {Inflection} infl Inflection object to be used for disambiguation\n */\n disambiguatedBy (infl) {\n let matched = true\n // an inflection can only be disambiguated by its features\n if (this.features.length === 0 || infl.features.length === 0) {\n matched = false\n }\n // the supplied inflection can be less specific but not more\n if (infl.features.length > this.features.length) {\n matched = false\n }\n for (let feature of infl.features) {\n if (!this[feature] || !this[feature].isEqual(infl[feature])) {\n matched = false\n break\n }\n }\n return matched\n }\n\n static readObject (jsonObject) {\n let inflection =\n new Inflection(\n jsonObject.stem, jsonObject.languageCode, jsonObject.suffix, jsonObject.prefix, jsonObject.example)\n inflection.languageID = LMF.getLanguageIdFromCode(inflection.languageCode)\n return inflection\n }\n\n /**\n * @deprecated Use `addFeature` instead\n * Sets a grammatical feature in an inflection. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n console.warn(`Please use \"addFeature\" instead.`)\n if (!data) {\n throw new Error('Inflection feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n let type = data[0].type\n this[type] = []\n for (let element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('Inflection feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Language \"${element.languageID.toString()}\" of a feature does not match\n a language \"${this.languageID.toString()}\" of an Inflection object.`)\n }\n\n this[type].push(element)\n this.features.add(type)\n }\n }\n\n /**\n * Sets a grammatical feature of an inflection. Feature is stored in a `feature.type` property.\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this[feature.type] = feature\n this.features.add(feature.type)\n }\n\n /**\n * Sets multiple grammatical features of an inflection.\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error(`Features must be in an array`)\n }\n\n for (let feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Checks whether an inflection has a feature with `featureName` name and `featureValue` value\n * @param {string} featureName - A name of a feature\n * @param {string} featureValue - A value of a feature\n * @return {boolean} True if an inflection contains a feature, false otherwise\n */\n hasFeatureValue (featureName, featureValue) {\n if (this.hasOwnProperty(featureName)) {\n return this[featureName].values.includes(featureValue)\n }\n return false\n }\n}\nexport default Inflection\n","class InflectionGroup {\n /**\n * A group of inflections or groups of inflections\n *\n * @param {InflectionGroupingKey} groupingKey features of the inflections in the group\n * @param {Inflection[]|InflectionGroup[]} inflections array of Inflections or InflectionGroups in this group\n */\n constructor (groupingKey, inflections = [], sortKey = null) {\n this.groupingKey = groupingKey\n this.inflections = inflections\n }\n\n /**\n * Add an Inflection or InflectionGroup to the group\n * @param {Inflection|InflectionGroup} inflection\n */\n append (inflection) {\n this.inflections.push(inflection)\n }\n}\nexport default InflectionGroup\n","import Feature from './feature.js'\n\nclass InflectionGroupingKey {\n /**\n * @constructor\n * @param {Inflection} infl inflection with features which are used as a grouping key\n * @param {string[]} features array of feature names which are used as the key\n * @param {Object} extras extra property name and value pairs used in the key\n */\n constructor (infl, features, extras = {}) {\n for (let feature of features) {\n this[feature] = infl[feature]\n }\n Object.assign(this, extras)\n }\n\n /**\n * checks if a feature with a specific value\n * is included in the grouping key\n * @returns {boolean} true if found, false if not\n */\n hasFeatureValue (feature, value) {\n if (this.hasOwnProperty(feature)) {\n return this[feature].values.includes(value)\n }\n return false\n }\n\n /**\n * Return this key as a string\n * @returns {string} string representation of the key\n */\n toString () {\n let values = []\n for (let prop of Object.getOwnPropertyNames(this).sort()) {\n // A prop can be either a Feature object, or a one of the extras of a string type\n let value = (this[prop] instanceof Feature) ? this[prop].values.sort().join(',') : this[prop]\n values.push(value)\n }\n return values.join(' ')\n }\n}\n\nexport default InflectionGroupingKey\n","import * as Constants from './constants.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Feature from './feature.js'\nimport FeatureType from './feature_type.js'\nimport InflectionGroupingKey from './inflection_grouping_key.js'\nimport InflectionGroup from './inflection_group.js'\n\n/**\n * @class LanguageModel is the base class for language-specific behavior\n */\nclass LanguageModel {\n constructor () {\n // This is just to avoid JavaScript Standard error on `context_backward` getter name. Don't need a constructor otherwise\n // TODO: `contextBackward` shall be used instead of `context_backward` wherever it is used\n this.context_backward = LanguageModel.contextBackward\n }\n\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n /**\n * @deprecated\n */\n get contextForward () {\n console.warn(`Please use static \"contextForward\" instead`)\n return this.constructor.contextForward\n }\n\n /**\n * @deprecated\n */\n get contextBackward () {\n console.warn(`Please use static \"contextBackward\" instead`)\n return this.constructor.contextBackward\n }\n\n /**\n * @deprecated\n */\n get direction () {\n console.warn(`Please use static \"direction\" instead`)\n return this.constructor.direction\n }\n\n /**\n * @deprecated\n */\n get baseUnit () {\n console.warn(`Please use static \"baseUnit\" instead`)\n return this.constructor.baseUnit\n }\n\n /**\n * @deprecated\n */\n get features () {\n console.warn(`Please use individual \"getFeatureType\" or static \"features\" instead`)\n return this.constructor.features\n }\n\n /**\n * Returns a list of names of feature types that are defined in a language model.\n * @return {string[]} Names of features that are defined in a model.\n */\n static get featureNames () {\n return this.featureValues.keys()\n }\n\n /**\n * Returns a feature a `featureType` name that is defined for a language. It does not create a new Feature\n * object instance. It returns the one defined in a language model. To get a new instance of a Feature\n * object, use `getFeature` instead.\n * If no feature of `featureType` is defined in a language model, throws an error.\n * @param {string} featureType - A feature type name.\n * @return {Feature} A feature object of requested type.\n */\n static typeFeature (featureType) {\n if (this.typeFeatures.has(featureType)) {\n return this.typeFeatures.get(featureType)\n } else {\n throw new Error(`Type feature \"${featureType}\" is not defined within \"${this}\"`)\n }\n }\n\n /**\n * Returns a map with Feature objects of all features defined in a language. Use this method to get all\n * Feature objects defined in a language model.\n * @return {Map} Feature objects for all features defined within a language in a Map object. The key is\n * a feature type (a string), and the value is a Feature object.\n */\n static get typeFeatures () {\n console.warn(`This getter must be defined in a descendant class`)\n }\n\n static get features () {\n let features = {}\n for (const featureName of this.featureNames) {\n features[featureName] = this.getFeature(featureName)\n }\n return features\n }\n\n static get languageID () {\n return Constants.LANG_UNDEFINED\n }\n\n static get languageCode () {\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Returns an array of language codes that represents the language.\n * @return {String[]} An array of language codes that matches the language.\n */\n static get languageCodes () {\n return []\n }\n\n static get codes () {\n console.warn(`Use static \"languageCodes\" instead`)\n return this.languageCodes\n }\n\n /**\n * @deprecated\n * @return {String[]}\n */\n get codes () {\n console.warn(`Please use a static version of \"codes\" instead`)\n return this.constructor.languageCodes\n }\n\n /**\n * @deprecated\n * @return {string}\n */\n toCode () {\n console.warn(`Please use a static \"languageCode\" instead`)\n return this.constructor.languageCode\n }\n\n /**\n * @deprecated\n * @return {string}\n */\n static toCode () {\n console.warn(`Please use a static \"languageCode\" instead`)\n return this.languageCode\n }\n\n /**\n * Return a list of feature values that are allowed for each feature type\n * @return {Map}\n */\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n [\n Feature.types.part,\n [\n Constants.POFS_ADVERB,\n Constants.POFS_ADVERBIAL,\n Constants.POFS_ADJECTIVE,\n Constants.POFS_ARTICLE,\n Constants.POFS_CONJUNCTION,\n Constants.POFS_EXCLAMATION,\n Constants.POFS_INTERJECTION,\n Constants.POFS_NOUN,\n Constants.POFS_NUMERAL,\n Constants.POFS_PARTICLE,\n Constants.POFS_PREFIX,\n Constants.POFS_PREPOSITION,\n Constants.POFS_PRONOUN,\n Constants.POFS_SUFFIX,\n Constants.POFS_SUPINE,\n Constants.POFS_VERB,\n Constants.POFS_VERB_PARTICIPLE\n ]\n ],\n [\n Feature.types.gender,\n [\n Constants.GEND_MASCULINE,\n Constants.GEND_FEMININE,\n Constants.GEND_NEUTER\n ]\n ],\n [\n Feature.types.type,\n [\n Constants.TYPE_REGULAR,\n Constants.TYPE_IRREGULAR\n ]\n ],\n [\n Feature.types.person,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.age,\n []\n ],\n [\n Feature.types.area,\n []\n ],\n [\n Feature.types.source,\n []\n ],\n [\n Feature.types.frequency,\n []\n ],\n [\n Feature.types.geo,\n []\n ],\n [\n Feature.types.pronunciation,\n []\n ],\n [\n Feature.types.kind,\n []\n ],\n [\n Feature.types.comparison,\n []\n ],\n [\n Feature.types.morph,\n []\n ],\n [\n Feature.types.stemtype,\n []\n ],\n [\n Feature.types.derivtype,\n []\n ]\n ])\n }\n\n /**\n * @deprecated\n * @return {symbol} Returns a language ID\n */\n static get sourceLanguage () {\n console.warn(`Please use languageID directly`)\n return this.languageID\n }\n\n /**\n * @deprecated\n * @return {symbol} Returns a language ID\n */\n get sourceLanguage () {\n console.warn(`Please use languageID directly`)\n return this.constructor.languageID\n }\n\n /**\n * @deprecated\n * @param name\n * @return {FeatureType}\n */\n static getFeatureType (name) {\n console.warn('Please use getFeature instead')\n let featureValues = this.featureValues\n if (featureValues.has(name)) {\n return new FeatureType(name, featureValues.get(name), this.languageID)\n } else {\n throw new Error(`Feature \"${name}\" is not defined`)\n }\n }\n\n /**\n * Returns a new instance of a feature with `featureType`. It uses a feature defined in a language model\n * as a master.\n * @param {string} featureType - A name of a feature type.\n * @return {Feature} - A newly created Feature object.\n */\n static getFeature (featureType) {\n let featureValues = this.featureValues // To cache the values\n if (featureValues.has(featureType)) {\n let allowedValues = featureValues.get(featureType)\n return new Feature(featureType, allowedValues, this.languageID, 1, allowedValues)\n } else {\n throw new Error(`Feature \"${featureType}\" is not defined`)\n }\n }\n\n _initializeFeatures () {\n let features = {}\n for (const featureName of this.constructor.featureValues.keys()) {\n features[featureName] = this.constructor.getFeature(featureName)\n }\n return features\n }\n\n /**\n * @deprecated\n */\n grammarFeatures () {\n console.warn(`Please use a static version of \"grammarFeatures\" instead`)\n return this.constructor.grammarFeatures()\n }\n\n /**\n * Identify the morphological features which should be linked to a grammar.\n * @returns {String[]} Array of Feature types\n */\n static grammarFeatures () {\n return []\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Check to see if the supplied language code is supported by this tool\n * @param {string} code the language code\n * @returns true if supported false if not\n * @type Boolean\n */\n static supportsLanguage (code) {\n return this.languageCodes.includes[code]\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {string} word the source word\n * @returns the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type String\n */\n static normalizeWord (word) {\n return word\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n return []\n }\n\n alternateWordEncodings (word, preceding, following, encoding) {\n console.warn(`Please use static \"alternateWordEncodings\" instead`)\n return this.constructor.alternateWordEncodings(word, preceding, following, encoding)\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return '.,;:!?\\'\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * @deprecated\n * @return {String}\n */\n getPunctuation () {\n console.warn(`Please use a static version of \"getPunctuation\"`)\n return this.constructor.getPunctuation()\n }\n\n toString () {\n return String(this.constructor.languageCode)\n }\n\n isEqual (model) {\n return LanguageModelFactory.compareLanguages(this.languageID, model.languageID)\n }\n\n /*\n There are two types of language identificators: language IDs and language code. Language ID is a symbol constant\n defined in constants.js, such as LANG_LATIN or LANG_GREEK. Language code is a string containing (usually)\n a three-letter language codes such as 'lat' or 'la' for latin. There can be multiple language codes that identify\n the same language, but there is only one unique language ID for each language.\n */\n\n /**\n * Checks whether a language has a particular language code in its list of codes\n * @param {String} languageCode - A language code to check\n * @return {boolean} Whether this language code exists in a language code list\n */\n static hasCode (languageCode) {\n if (this.isLanguageCode(languageCode)) {\n return this.languageCodes.includes(languageCode)\n } else {\n throw new Error(`Format of a \"${languageCode}\" is incorrect`)\n }\n }\n\n /**\n * Tests wither a provided language identificator is a language ID.\n * @param {Symbol | string} language - A language identificator, either a Symbol or a string language code.\n * @return {boolean} True if language identificator provided is a language ID.\n */\n static isLanguageID (language) {\n return (typeof language === 'symbol')\n }\n\n /**\n * Tests wither a provided language identificator is a language code.\n * @param {Symbol | string} language - A language identificator, either a Symbol or a string language code.\n * @return {boolean} - True if language identificator provided is a language code.\n */\n static isLanguageCode (language) {\n return !LanguageModel.isLanguageID(language)\n }\n\n /**\n * @deprecated\n * @param node\n */\n canInflect (node) {\n console.warn(`Please use a static version of \"canInflect\" instead`)\n return this.constructor.canInflect(node)\n }\n\n /**\n * Groups a set of inflections according to a language-specific display paradigm\n * The default groups according to the following logic:\n * 1. groups of groups with unique stem, prefix, suffix, part of speech, declension, dialect and comparison\n * 2. groups of those groups with unique\n * number, if it's an inflection with a grammatical case\n * tense, if it's an inflection with tense but no case (i.e. a verb)\n * verbs without tense or case\n * adverbs\n * everything else\n * 3. groups of those groups with unique voice and tense\n * 4. groups of inflections with unique gender, person, mood, and sort\n */\n static groupInflectionsForDisplay (inflections) {\n let grouped = new Map()\n let aggregated = this.aggregateInflectionsForDisplay(inflections)\n\n // group inflections by part of speech\n for (let infl of aggregated) {\n let groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.part, Feature.types.declension, Feature.types.dialect, Feature.types.comparison],\n {\n prefix: infl.prefix,\n suffix: infl.suffix,\n stem: infl.stem\n }\n )\n let groupingKeyStr = groupingKey.toString()\n if (grouped.has(groupingKeyStr)) {\n grouped.get(groupingKeyStr).append(infl)\n } else {\n grouped.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n\n // iterate through each group key to group the inflections in that group\n for (let kv of grouped) {\n let inflgrp = new Map()\n for (let infl of kv[1].inflections) {\n let keyprop\n let isCaseInflectionSet = false\n if (infl[Feature.types.grmCase]) {\n // grouping on number if case is defined\n keyprop = Feature.types.number\n isCaseInflectionSet = true\n } else if (infl[Feature.types.tense]) {\n // grouping on tense if tense is defined but not case\n keyprop = Feature.types.tense\n } else if (infl[Feature.types.part] === Constants.POFS_VERB) {\n // grouping on no case or tense but a verb\n keyprop = Feature.types.part\n } else if (infl[Feature.types.part] === Constants.POFS_ADVERB) {\n keyprop = Feature.types.part\n // grouping on adverbs without case or tense\n } else {\n keyprop = 'misc'\n // grouping on adverbs without case or tense\n // everything else\n }\n let groupingKey = new InflectionGroupingKey(infl, [keyprop], {isCaseInflectionSet: isCaseInflectionSet})\n let groupingKeyStr = groupingKey.toString()\n if (inflgrp.has(groupingKeyStr)) {\n inflgrp.get(groupingKeyStr).append(infl)\n } else {\n inflgrp.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n // inflgrp is now a map of groups of inflections grouped by\n // inflections with number\n // inflections without number but with tense\n // inflections of verbs without tense\n // inflections of adverbs\n // everything else\n // iterate through each inflection group key to group the inflections in that group by tense and voice\n for (let kv of inflgrp) {\n let nextGroup = new Map()\n let sortOrder = new Map()\n for (let infl of kv[1].inflections) {\n let sortkey = infl[Feature.types.grmCase] ? Math.max(infl[Feature.types.grmCase].items.map(f => f.sortOrder)) : 1\n let groupingKey = new InflectionGroupingKey(infl, [Feature.types.tense, Feature.types.voice])\n let groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl], sortkey))\n sortOrder.set(groupingKeyStr, sortkey)\n }\n }\n kv[1].inflections = []\n let sortedKeys = Array.from(nextGroup.keys()).sort(\n (a, b) => {\n let orderA = sortOrder.get(a)\n let orderB = sortOrder.get(b)\n return orderA > orderB ? -1 : orderB > orderA ? 1 : 0\n }\n )\n for (let groupkey of sortedKeys) {\n kv[1].inflections.push(nextGroup.get(groupkey))\n }\n }\n\n // inflgrp is now a Map of groups of groups of inflections\n\n for (let kv of inflgrp) {\n let groups = kv[1]\n for (let group of groups.inflections) {\n let nextGroup = new Map()\n for (let infl of group.inflections) {\n // set key is case comp gend pers mood sort\n let groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.grmCase, Feature.types.comparison, Feature.types.gender, Feature.types.number, Feature.types.person,\n Feature.types.tense, Feature.types.mood, Feature.types.voice])\n let groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n group.inflections = Array.from(nextGroup.values()) // now a group of inflection groups\n }\n }\n kv[1].inflections = Array.from(inflgrp.values())\n }\n return Array.from(grouped.values())\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n * @param {Inflection[]} inflections an array of inflections\n * @return Inflection[] the aggregated inflections\n */\n static aggregateInflectionsForDisplay (inflections) {\n // default is just to do nothing\n return inflections\n }\n\n /**\n * @deprecated\n * @param inflections\n * @return {*}\n */\n groupInflectionsForDisplay (inflections) {\n console.warn(`Please use a static version of \"groupInflectionsForDisplay\" instead`)\n return this.constructor.groupInflectionsForDisplay(inflections)\n }\n}\n\nexport default LanguageModel\n","import LanguageModel from './language_model.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport * as Constants from './constants.js'\n\nconst MODELS = new Map([\n [ Constants.STR_LANG_CODE_LA, LatinLanguageModel ],\n [ Constants.STR_LANG_CODE_LAT, LatinLanguageModel ],\n [ Constants.STR_LANG_CODE_GRC, GreekLanguageModel ],\n [ Constants.STR_LANG_CODE_ARA, ArabicLanguageModel ],\n [ Constants.STR_LANG_CODE_AR, ArabicLanguageModel ],\n [ Constants.STR_LANG_CODE_PER, PersianLanguageModel ]\n])\n\nclass LanguageModelFactory {\n /**\n * Checks whether a language is supported\n * @param {string | symbol} language - Language as a language ID (symbol) or a language code (string)\n * @return {boolean} True if language is supported, false otherwise\n */\n static supportsLanguage (language) {\n language = (typeof language === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(language) : language\n return MODELS.has(language)\n }\n\n /**\n * Returns a constructor of language model for a specific language ID.\n * @param {symbol} languageID - A language ID of a desired language model.\n * @return {LanguageModel} A language model for a given language ID.\n */\n static getLanguageModel (languageID) {\n let languageCode = LanguageModelFactory.getLanguageCodeFromId(languageID)\n if (MODELS.has(languageCode)) {\n return MODELS.get(languageCode)\n } else {\n // A default value\n return LanguageModel\n }\n }\n\n static getLanguageForCode (code = null) {\n let Model = MODELS.get(code)\n if (Model) {\n return new Model()\n }\n // for now return a default Model\n // TODO may want to throw an error\n return new LanguageModel()\n }\n\n /**\n * Converts an ISO 639-3 language code to a language ID\n * @param {string} languageCode - An ISO 639-3 language code\n * @return {symbol | undefined} A language ID or undefined if language ID is not found\n */\n static getLanguageIdFromCode (languageCode) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.hasCode(languageCode)) {\n return languageModel.languageID\n }\n }\n // Noting found, return a Symbol with an undefined value (to keep return value type the same)\n return Constants.LANG_UNDEFINED\n }\n\n /**\n * Converts a language ID to an default ISO 639-3 language code for that language\n * @param {symbol} languageID - A language ID\n * @return {string | undefined} An ISO 639-3 language code or undefined if language code is not found\n */\n static getLanguageCodeFromId (languageID) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.languageID.toString() === languageID.toString()) {\n return languageModel.languageCode\n }\n }\n // Noting found, return a string with an undefined value (to keep return value type the same)\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Takes either a language ID or a language code and returns an object with both an ID and a code.\n * @param {string | symbol} language - Either a language ID (a Symbol) or a language code (a String).\n * @return {object} An object with the following properties:\n * {symbol} languageID\n * {string} languageCode\n */\n static getLanguageAttrs (language) {\n if (typeof language === 'symbol') {\n // `language` is a language ID\n return {\n languageID: language,\n languageCode: LanguageModelFactory.getLanguageCodeFromId(language)\n }\n } else {\n // `language` is a language code\n return {\n languageID: LanguageModelFactory.getLanguageIdFromCode(language),\n languageCode: language\n }\n }\n }\n\n /**\n * Compares two languages in either a language ID or a language code format. For this, does conversion of\n * language IDs to language code. Because fo this, it will work even for language IDs defined in\n * different modules\n * @param {string | symbol} languageA - Either a language ID (a symbol) or a language code (a string).\n * @param {string | symbol} languageB - Either a language ID (a symbol) or a language code (a string).\n * @return {boolean} True if languages are the same, false otherwise.\n */\n static compareLanguages (languageA, languageB) {\n languageA = (typeof languageA === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageA) : languageA\n languageB = (typeof languageB === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageB) : languageB\n return languageA === languageB\n }\n}\nexport default LanguageModelFactory\n","import LanguageModel from './language_model.js'\nimport Feature from './feature.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class LatinLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_LATIN }\n static get languageCode () { return Constants.STR_LANG_CODE_LAT }\n static get languageCodes () { return [Constants.STR_LANG_CODE_LA, Constants.STR_LANG_CODE_LAT] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_PERSONAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_RELATIVE,\n Constants.CLASS_INTERROGATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_ABLATIVE,\n Constants.CASE_LOCATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH,\n Constants.ORD_5TH\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_ACTIVE,\n Constants.VOICE_PASSIVE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_IMPERATIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_SUPINE,\n Constants.MOOD_GERUNDIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_INFINITIVE\n ]\n ],\n [\n Feature.types.conjugation,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) {\n this.initTypeFeatures()\n }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * @override LanguageModel#grammarFeatures\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.conjugation]\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {String} word the source word\n * @returns the normalized form of the word (Latin replaces accents and special chars)\n * @type String\n */\n static normalizeWord (word) {\n if (word) {\n word = word.replace(/[\\u00c0\\u00c1\\u00c2\\u00c3\\u00c4\\u0100\\u0102]/g, 'A')\n word = word.replace(/[\\u00c8\\u00c9\\u00ca\\u00cb\\u0112\\u0114]/g, 'E')\n word = word.replace(/[\\u00cc\\u00cd\\u00ce\\u00cf\\u012a\\u012c]/g, 'I')\n word = word.replace(/[\\u00d2\\u00d3\\u00d4\\u00df\\u00d6\\u014c\\u014e]/g, 'O')\n word = word.replace(/[\\u00d9\\u00da\\u00db\\u00dc\\u016a\\u016c]/g, 'U')\n word = word.replace(/[\\u00c6\\u01e2]/g, 'AE')\n word = word.replace(/[\\u0152]/g, 'OE')\n word = word.replace(/[\\u00e0\\u00e1\\u00e2\\u00e3\\u00e4\\u0101\\u0103]/g, 'a')\n word = word.replace(/[\\u00e8\\u00e9\\u00ea\\u00eb\\u0113\\u0115]/g, 'e')\n word = word.replace(/[\\u00ec\\u00ed\\u00ee\\u00ef\\u012b\\u012d\\u0129]/g, 'i')\n word = word.replace(/[\\u00f2\\u00f3\\u00f4\\u00f5\\u00f6\\u014d\\u014f]/g, 'o')\n word = word.replace(/[\\u00f9\\u00fa\\u00fb\\u00fc\\u016b\\u016d]/g, 'u')\n word = word.replace(/[\\u00e6\\u01e3]/g, 'ae')\n word = word.replace(/[\\u0153]/g, 'oe')\n }\n return word\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // Not implemented yet\n return []\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n * @param {Inflection} inflection - An inflection object\n * @return {Object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n let grammar = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if ([Constants.POFS_VERB, Constants.POFS_VERB_PARTICIPLE].includes(inflection[Feature.types.part].value)) {\n grammar.fullFormBased = true\n grammar.suffixBased = true\n } else if (inflection[Feature.types.part].value === Constants.POFS_PRONOUN) {\n grammar.fullFormBased = true\n } else {\n grammar.suffixBased = true\n }\n } else {\n console.warn(`Unable to set grammar: part of speech data is missing or is incorrect`, inflection[Feature.types.part])\n }\n\n return grammar\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport uuidv4 from 'uuid/v4'\n\n/**\n * Lemma, a canonical form of a word.\n */\nclass Lemma {\n /**\n * Initializes a Lemma object.\n * @param {string} word - A word.\n * @param {symbol | string} languageID - A language ID (symbol, please use this) or a language code of a word.\n * @param {string[]} principalParts - the principalParts of a lemma.\n * @param {Object} features - the grammatical features of a lemma.\n\n * @param {Translation} transaltions - translations from python service\n */\n constructor (word, languageID, principalParts = [], features = {}) {\n if (!word) {\n throw new Error('Word should not be empty.')\n }\n\n if (!languageID) {\n throw new Error('Language should not be empty.')\n }\n\n // Compatibility code for something providing languageCode instead of languageID\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(languageID))\n\n this.word = word\n this.principalParts = principalParts\n this.features = {}\n\n this.ID = uuidv4()\n }\n\n get language () {\n console.warn(`Please use \"languageID\" instead of \"language\"`)\n return this.languageCode\n }\n\n static readObject (jsonObject) {\n return new Lemma(jsonObject.word, jsonObject.language, jsonObject.principalParts, jsonObject.pronunciation)\n }\n\n /**\n * @deprecated Please use `addFeature` instead.\n * Sets a grammatical feature for a lemma. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n console.warn(`Please use \"addFeature\" instead`)\n if (!data) {\n throw new Error('feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n let type = data[0].type\n this.features[type] = []\n for (let element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error('Language \"' + element.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[type].push(element)\n }\n }\n\n /**\n * Sets a grammatical feature of a lemma. Feature is stored in a `feature.type` property.\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[feature.type] = feature\n }\n\n /**\n * Sets multiple grammatical features of a lemma.\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error(`Features must be in an array`)\n }\n\n for (let feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Sets a translation from python service.\n * @param {Translation} translation - A translation object\n */\n addTranslation (translation) {\n if (!translation) {\n throw new Error('translation data cannot be empty.')\n }\n\n if (translation.constructor.name !== 'Translation') {\n throw new Error('translation data must be a Translation object.')\n }\n\n this.translation = translation\n }\n\n /**\n * Test to see if two lemmas are full homonyms\n * @param {Lemma} lemma the lemma to compare\n * @return {Boolean} true or false\n */\n isFullHomonym (lemma) {\n // returns true if the word and part of speech match\n return this.word === lemma.word &&\n this.features[Feature.types.part] &&\n lemma.features[Feature.types.part] &&\n this.features[Feature.types.part].isEqual(lemma.features[Feature.types.part])\n }\n}\n\nexport default Lemma\n","import Lemma from './lemma.js'\r\nimport Inflection from './inflection.js'\r\nimport DefinitionSet from './definition-set'\r\nimport LMF from './language_model_factory'\r\n\r\n/**\r\n * A basic unit of lexical meaning. Contains a primary Lemma object, one or more Inflection objects\r\n * and a DefinitionSet\r\n */\r\nclass Lexeme {\r\n /**\r\n * Initializes a Lexeme object.\r\n * @param {Lemma} lemma - A lemma object.\r\n * @param {Inflection[]} inflections - An array of inflections.\r\n * @param {DefinitionSet} meaning - A set of definitions.\r\n */\r\n constructor (lemma, inflections, meaning = null) {\r\n if (!lemma) {\r\n throw new Error('Lemma should not be empty.')\r\n }\r\n\r\n if (!(lemma instanceof Lemma)) {\r\n throw new Error('Lemma should be of Lemma object type.')\r\n }\r\n\r\n if (!inflections) {\r\n throw new Error('Inflections data should not be empty.')\r\n }\r\n\r\n if (!Array.isArray(inflections)) {\r\n throw new Error('Inflection data should be provided in an array.')\r\n }\r\n\r\n for (let inflection of inflections) {\r\n if (!(inflection instanceof Inflection)) {\r\n throw new Error('All inflection data should be of Inflection object type.')\r\n }\r\n }\r\n\r\n if (meaning !== null && !(meaning instanceof DefinitionSet)) {\r\n throw new Error('Meaning should be of DefinitionSet object type.')\r\n }\r\n\r\n this.lemma = lemma\r\n this.inflections = []\r\n inflections.forEach(i => { this.addInflection(i) })\r\n this.meaning = meaning || new DefinitionSet(this.lemma.word, this.lemma.languageID)\r\n this.disambiguated = false\r\n }\r\n\r\n /**\r\n * add an inflection to the lexeme\r\n * @param {Inflection} inflection\r\n */\r\n addInflection (inflection) {\r\n inflection.lemma = this.lemma\r\n this.inflections.push(inflection)\r\n }\r\n\r\n /**\r\n * test to see if a lexeme is populated with meaningful data\r\n * Returns true if any of these are true:\r\n * its lemma has morphological features defined\r\n * it has one ore more definitions supplied in the meaning\r\n * it has one ore more inflections\r\n * @return {boolean}\r\n */\r\n isPopulated () {\r\n return Object.entries(this.lemma.features).length > 0 ||\r\n !this.meaning.isEmpty() ||\r\n this.inflections.length > 0\r\n }\r\n\r\n /**\r\n * disambiguate with another supplied Lexeme\r\n * @param {Lexeme} lexeme the lexeme to be disambiguated\r\n * @param {Lexeme} disambiguator the lexeme to use to disambiguate\r\n * @return {Lexeme} a new lexeme, if disamibugation was successful disambiguated flag will be set on it\r\n */\r\n static disambiguate (lexeme, disambiguator) {\r\n let newLexeme = new Lexeme(lexeme.lemma, lexeme.inflections, lexeme.meaning)\r\n if (lexeme.lemma.isFullHomonym(disambiguator.lemma) && disambiguator.inflections.length > 0) {\r\n newLexeme.disambiguated = true\r\n let keepInflections = []\r\n // iterate through this lexemes inflections and keep only thoes that are disambiguatedBy by the supplied lexeme's inflection\r\n // we want to keep the original inflections rather than just replacing them\r\n // because the original inflections may have more information\r\n for (let inflection of newLexeme.inflections) {\r\n for (let disambiguatorInflection of disambiguator.inflections) {\r\n if (inflection.disambiguatedBy(disambiguatorInflection)) {\r\n keepInflections.push(inflection)\r\n }\r\n }\r\n }\r\n newLexeme.inflections = keepInflections\r\n // if we couldn't match any existing inflections, then add the disambiguated one\r\n if (newLexeme.inflections.length === 0) {\r\n for (let infl of disambiguator.inflections) {\r\n newLexeme.addInflection(infl)\r\n }\r\n }\r\n }\r\n return newLexeme\n }\r\n\r\n getGroupedInflections () {\r\n let lm = LMF.getLanguageModel(this.lemma.languageID)\r\n return lm.groupInflectionsForDisplay(this.inflections)\r\n }\r\n\r\n static readObject (jsonObject) {\r\n let lemma = Lemma.readObject(jsonObject.lemma)\r\n let inflections = []\r\n for (let inflection of jsonObject.inflections) {\r\n inflections.push(Inflection.readObject(inflection))\r\n }\r\n\r\n let lexeme = new Lexeme(lemma, inflections)\r\n lexeme.meaning = DefinitionSet.readObject(jsonObject.meaning)\r\n return lexeme\r\n }\r\n\r\n /**\r\n * Get a sort function for an array of lexemes which applies a primary and secondary\r\n * sort logic using the sort order specified for each feature. Sorts in descending order -\r\n * higher sort order means it should come first\r\n * @param {string} primary feature name to use as primary sort key\r\n * @param {string} secondary feature name to use as secondary sort key\r\n * @returns {Function} function which can be passed to Array.sort\r\n */\r\n static getSortByTwoLemmaFeatures (primary, secondary) {\r\n return (a, b) => {\r\n if ((a.lemma.features[primary] && b.lemma.features[primary]) ||\r\n (!a.lemma.features[primary] && !b.lemma.features[[primary]])) {\r\n let primarySort\r\n if (a.lemma.features[primary] && b.lemma.features[primary]) {\r\n // if both lemmas have the primary sort key, then sort\r\n primarySort = a.lemma.features[primary].compareTo(b.lemma.features[primary])\r\n } else {\r\n // if neither lemma has the primary sort key, then the primary sort is equal\r\n primarySort = 0\r\n }\r\n if (primarySort !== 0) {\r\n return primarySort\r\n } else if (a.lemma.features[secondary] && b.lemma.features[secondary]) {\r\n return a.lemma.features[secondary].compareTo(b.lemma.features[secondary])\r\n } else if (a.lemma.features[secondary] && !b.lemma.features[secondary]) {\r\n return -1\r\n } else if (!a.lemma.features[secondary] && b.lemma.features[secondary]) {\r\n return 1\r\n } else {\r\n // neither have the secondary sort key so they are equal\r\n return 0\r\n }\r\n } else if (a.lemma.features[primary] && !b.lemma.features[primary]) {\r\n return -1\r\n } else if (!a.lemma.features[primary] && b.lemma.features[primary]) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n }\r\n}\r\nexport default Lexeme\r\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class PersianLanguageModel is the lass for Persian specific behavior\n */\nexport default class PersianLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_PERSIAN }\n\n static get languageCode () { return Constants.STR_LANG_CODE_PER }\n\n static get languageCodes () { return [Constants.STR_LANG_CODE_PER, Constants.STR_LANG_CODE_FAS, Constants.STR_LANG_CODE_FA, Constants.STR_LANG_CODE_FA_IR] }\n\n static get contextForward () { return 0 }\n\n static get contextBackward () { return 0 }\n\n static get direction () { return Constants.LANG_DIR_RTL }\n\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // Not implemented yet\n return []\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n}\n","/**\n * An abstraction of an Alpheios resource provider\n */\nclass ResourceProvider {\n /**\n * @constructor\n * @param {string} uri - a unique resource identifier for this provider\n * @param {string} rights - rights text\n * @param {Map} rightsTranslations - optional map of translated rights text - keys should be language of text, values the text\n */\n constructor (uri = '', rights = '', rightsTranslations = new Map([['default', rights]])) {\n this.uri = uri\n this.rights = rightsTranslations\n if (!this.rights.has('default')) {\n this.rights.set('default', rights)\n }\n }\n\n /**\n * @return a string representation of the resource provider, in the default language\n */\n toString () {\n return this.rights.get('default')\n }\n\n /**\n * Produce a string representation of the resource provider, in the requested locale if available\n * @param {string} languageCode\n * @return a string representation of the resource provider, in the requested locale if available\n */\n toLocaleString (languageCode) {\n return this.rights.get(languageCode) || this.rights.get('default')\n }\n\n static getProxy (provider = null, target = {}) {\n return new Proxy(target, {\n get: function (target, name) {\n return name === 'provider' ? provider : target[name]\n }\n })\n }\n}\n\nexport default ResourceProvider\n","/**\n * stores a scope of lemma translations from python service\n * Contains a primary Lemma object\n */\nclass Translation {\n /**\n * Initializes a Translation object.\n * @param {Lemma} lemma - A lemma object.\n * @param [] meanings - A set of definitions.\n\n */\n constructor (lemma, languageCode, translations = []) {\n if (!lemma) {\n throw new Error('Lemma should not be empty.')\n }\n this.lemmaWord = lemma.word\n this.languageCode = languageCode\n this.glosses = translations\n }\n\n static readTranslationFromJSONList (lemma, languageCode, translationsList) {\n if (!translationsList || !Array.isArray(translationsList)) {\n throw new Error('Recieved not proper translation list', translationsList)\n }\n let curTranslations = translationsList.find(function (element) { return element.in === lemma.word })\n return new Translation(lemma, languageCode, curTranslations.translations)\n }\n\n static loadTranslations (lemma, languageCode, translationsList) {\n lemma.addTranslation(this.readTranslationFromJSONList(lemma, languageCode, translationsList))\n }\n}\nexport default Translation\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///../node_modules/uuid/lib/bytesToUuid.js","webpack:///../node_modules/uuid/lib/rng-browser.js","webpack:///../node_modules/uuid/v4.js","webpack:///./arabic_language_model.js","webpack:///./constants.js","webpack:///./definition-set.js","webpack:///./definition.js","webpack:///./driver.js","webpack:///./feature.js","webpack:///./feature_importer.js","webpack:///./feature_list.js","webpack:///./feature_type.js","webpack:///./greek_language_model.js","webpack:///./grm-feature.js","webpack:///./homonym.js","webpack:///./i18n.js","webpack:///./inflection.js","webpack:///./inflection_group.js","webpack:///./inflection_grouping_key.js","webpack:///./language_model.js","webpack:///./language_model_factory.js","webpack:///./latin_language_model.js","webpack:///./lemma.js","webpack:///./lexeme.js","webpack:///./persian_language_model.js","webpack:///./resource_provider.js","webpack:///./translation.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACjCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAChE;AACA,oCAAoC,KAAK,GAAG,KAAK,GAAG,KAAK,UAAU,KAAK;AACxE;AACA,qCAAqC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1E;AACA,qCAAqC,KAAK;AAC1C;AACA,mCAAmC,KAAK;AACxC;AACA,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1NA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9EA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAsBA;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gCAAgC,SAAS,gDAAgD,EAAE;AAC3F;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD,MAAM;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL,6BAA6B,MAAM;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kDAAkD,OAAO;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA,8CAA8C,SAAS,yDAAyD,EAAE;AAClH;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9bA;AAAA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5DA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;;AAEpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,+BAA+B;AACtC;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yEAAyE,8BAA8B,4BAA4B,2BAA2B;AAC9J;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,4BAA4B,4BAA4B,2BAA2B;AAC1J;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9OA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,GAAG,KAAK;AAChC;AACA,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,WAAW,KAAK,GAAG,KAAK;AACxB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnRA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;AACpE;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9KA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,gBAAgB;AAC/B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;AACpE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,8BAA8B;AACnE,wBAAwB,2BAA2B;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5PA;AAAA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACpBA;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,YAAY,2BAA2B,KAAK;AACnF;AACA;;AAEA;AACA;AACA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,KAAK;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,aAAa;AACnD;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oHAAsE,yCAAyC;AAC/G;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;ACjlBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,OAAO;AACrB,SAAS,OAAO;AAChB,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpNA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,SAAS;AACtB,aAAa,OAAO;;AAEpB,aAAa,YAAY;AACzB;AACA,mEAAmE;AACnE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;;AAEpE;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,aAAa;AAC1B,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,wBAAwB;AACtD;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC7KA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,8BAA8B;;AAE9B,+BAA+B;;AAE/B,gCAAgC;;AAEhC,iCAAiC;;AAEjC,2BAA2B;;AAE3B,0BAA0B;;AAE1B;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;AACA;;;;;;;;;;;;;AChEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;;;;;;;;;;;;AC3CA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE,mCAAmC;AACvG;AACA;;AAEA;AACA;AACA;AACA;AACA","file":"alpheios-data-models.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./driver.js\");\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class ArabicLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_ARABIC }\n static get languageCode () { return Constants.STR_LANG_CODE_ARA }\n static get languageCodes () { return [Constants.STR_LANG_CODE_ARA, Constants.STR_LANG_CODE_AR] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_RTL }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * @override LanguageModel#alternateWordEncodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // tanwin (& tatweel) - drop FATHATAN, DAMMATAN, KASRATAN, TATWEEL\n let tanwin = word.replace(/[\\u{064B}\\u{064C}\\u{064D}\\u{0640}]/ug, '')\n // hamzas - replace ALEF WITH MADDA ABOVE, ALEF WITH HAMZA ABOVE/BELOW with ALEF\n let hamza = tanwin.replace(/[\\u{0622}\\u{0623}\\u{0625}]/ug, '\\u{0627}')\n // harakat - drop FATHA, DAMMA, KASRA, SUPERSCRIPT ALEF, ALEF WASLA\n let harakat = hamza.replace(/[\\u{064E}\\u{064F}\\u{0650}\\u{0670}\\u{0671}]/ug, '')\n // shadda\n let shadda = harakat.replace(/\\u{0651}/ug, '')\n // sukun\n let sukun = shadda.replace(/\\u{0652}/ug, '')\n // alef\n let alef = sukun.replace(/\\u{0627}/ug, '')\n let alternates = new Map([\n ['tanwin', tanwin],\n ['hamza', hamza],\n ['harakat', harakat],\n ['shadda', shadda],\n ['sukun', sukun],\n ['alef', alef]\n ])\n if (encoding !== null && alternates.has(encoding)) {\n return [alternates.get(encoding)]\n } else {\n return Array.from(alternates.values())\n }\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n */\n static aggregateInflectionsForDisplay (inflections) {\n // TODO at some point we might want to be able to check the provider in here\n // because this really only applies to the specifics of the Aramorph parser\n let aggregated = []\n let aggregates = { [Constants.POFS_NOUN]: [], [Constants.POFS_ADJECTIVE]: [], [Constants.POFS_NOUN_PROPER]: [] }\n for (let infl of inflections) {\n if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/ADJ[uaiNK]/)) {\n aggregates[Constants.POFS_ADJECTIVE].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN_PROPER].push(infl)\n } else {\n // we are also going to keep the examples out of the display for now\n infl.example = null\n aggregated.push(infl)\n }\n }\n for (let type of Object.keys(aggregates)) {\n let base = aggregated.filter((i) => i[Feature.types.part].value === type)\n if (base.length !== 1) {\n // if we don't have the base form then we don't really know what to do here\n // so just put the inflection back in the ones available for display\n aggregated.push(...aggregates[type])\n }\n // we may decide we want to keep the extra suffix and morph information\n // from the alternate inflections but for now we just will drop it from\n // the inflections that are displayed\n }\n return aggregated\n }\n}\n","/* eslint-disable no-unused-vars */\nexport const LANG_UNIT_WORD = Symbol('word')\nexport const LANG_UNIT_CHAR = Symbol('char')\nexport const LANG_DIR_LTR = Symbol('ltr')\nexport const LANG_DIR_RTL = Symbol('rtl')\nexport const LANG_UNDEFINED = Symbol('undefined')\nexport const LANG_LATIN = Symbol('latin')\nexport const LANG_GREEK = Symbol('greek')\nexport const LANG_ARABIC = Symbol('arabic')\nexport const LANG_PERSIAN = Symbol('persian')\nexport const STR_LANG_CODE_UNDEFINED = 'undefined'\nexport const STR_LANG_CODE_LAT = 'lat'\nexport const STR_LANG_CODE_LA = 'la'\nexport const STR_LANG_CODE_GRC = 'grc'\nexport const STR_LANG_CODE_ARA = 'ara'\nexport const STR_LANG_CODE_AR = 'ar'\nexport const STR_LANG_CODE_FAS = 'fas'\nexport const STR_LANG_CODE_PER = 'per'\nexport const STR_LANG_CODE_FA_IR = 'fa-IR'\nexport const STR_LANG_CODE_FA = 'fa'\n// parts of speech\nexport const POFS_ADJECTIVE = 'adjective'\nexport const POFS_ADVERB = 'adverb'\nexport const POFS_ADVERBIAL = 'adverbial'\nexport const POFS_ARTICLE = 'article'\nexport const POFS_CONJUNCTION = 'conjunction'\nexport const POFS_EXCLAMATION = 'exclamation'\nexport const POFS_INTERJECTION = 'interjection'\nexport const POFS_NOUN = 'noun'\nexport const POFS_NOUN_PROPER = 'proper noun'\nexport const POFS_NUMERAL = 'numeral'\nexport const POFS_PARTICLE = 'particle'\nexport const POFS_PREFIX = 'prefix'\nexport const POFS_PREPOSITION = 'preposition'\nexport const POFS_PRONOUN = 'pronoun'\nexport const POFS_SUFFIX = 'suffix'\nexport const POFS_GERUNDIVE = 'gerundive'\nexport const POFS_SUPINE = 'supine'\nexport const POFS_VERB = 'verb'\nexport const POFS_VERB_PARTICIPLE = 'verb participle'\n// gender\nexport const GEND_MASCULINE = 'masculine'\nexport const GEND_FEMININE = 'feminine'\nexport const GEND_NEUTER = 'neuter'\nexport const GEND_COMMON = 'common'\nexport const GEND_ANIMATE = 'animate'\nexport const GEND_INANIMATE = 'inanimate'\n// Polish gender types\nexport const GEND_PERSONAL_MASCULINE = 'personal masculine'\nexport const GEND_ANIMATE_MASCULINE = 'animate masculine'\nexport const GEND_INANIMATE_MASCULINE = 'inanimate masculine'\n// comparative\nexport const COMP_POSITIVE = 'positive'\nexport const COMP_COMPARITIVE = 'comparative'\nexport const COMP_SUPERLATIVE = 'superlative'\n// case\nexport const CASE_ABESSIVE = 'abessive'\nexport const CASE_ABLATIVE = 'ablative'\nexport const CASE_ABSOLUTIVE = 'absolutive'\nexport const CASE_ACCUSATIVE = 'accusative'\nexport const CASE_ADDIRECTIVE = 'addirective'\nexport const CASE_ADELATIVE = 'adelative'\nexport const CASE_ADESSIVE = 'adessive'\nexport const CASE_ADVERBIAL = 'adverbial'\nexport const CASE_ALLATIVE = 'allative'\nexport const CASE_ANTESSIVE = 'antessive'\nexport const CASE_APUDESSIVE = 'apudessive'\nexport const CASE_AVERSIVE = 'aversive'\nexport const CASE_BENEFACTIVE = 'benefactive'\nexport const CASE_CARITIVE = 'caritive'\nexport const CASE_CAUSAL = 'causal'\nexport const CASE_CAUSAL_FINAL = 'causal-final'\nexport const CASE_COMITATIVE = 'comitative'\nexport const CASE_DATIVE = 'dative'\nexport const CASE_DELATIVE = 'delative'\nexport const CASE_DIRECT = 'direct'\nexport const CASE_DISTRIBUTIVE = 'distributive'\nexport const CASE_DISTRIBUTIVE_TEMPORAL = 'distributive-temporal'\nexport const CASE_ELATIVE = 'elative'\nexport const CASE_ERGATIVE = 'ergative'\nexport const CASE_ESSIVE = 'essive'\nexport const CASE_ESSIVE_FORMAL = 'essive-formal'\nexport const CASE_ESSIVE_MODAL = 'essive-modal'\nexport const CASE_EQUATIVE = 'equative'\nexport const CASE_EVITATIVE = 'evitative'\nexport const CASE_EXESSIVE = 'exessive'\nexport const CASE_FINAL = 'final'\nexport const CASE_FORMAL = 'formal'\nexport const CASE_GENITIVE = 'genitive'\nexport const CASE_ILLATIVE = 'illative'\nexport const CASE_INELATIVE = 'inelative'\nexport const CASE_INESSIVE = 'inessive'\nexport const CASE_INSTRUCTIVE = 'instructive'\nexport const CASE_INSTRUMENTAL = 'instrumental'\nexport const CASE_INSTRUMENTAL_COMITATIVE = 'instrumental-comitative'\nexport const CASE_INTRANSITIVE = 'intransitive'\nexport const CASE_LATIVE = 'lative'\nexport const CASE_LOCATIVE = 'locative'\nexport const CASE_MODAL = 'modal'\nexport const CASE_MULTIPLICATIVE = 'multiplicative'\nexport const CASE_NOMINATIVE = 'nominative'\nexport const CASE_PARTITIVE = 'partitive'\nexport const CASE_PEGATIVE = 'pegative'\nexport const CASE_PERLATIVE = 'perlative'\nexport const CASE_POSSESSIVE = 'possessive'\nexport const CASE_POSTELATIVE = 'postelative'\nexport const CASE_POSTDIRECTIVE = 'postdirective'\nexport const CASE_POSTESSIVE = 'postessive'\nexport const CASE_POSTPOSITIONAL = 'postpositional'\nexport const CASE_PREPOSITIONAL = 'prepositional'\nexport const CASE_PRIVATIVE = 'privative'\nexport const CASE_PROLATIVE = 'prolative'\nexport const CASE_PROSECUTIVE = 'prosecutive'\nexport const CASE_PROXIMATIVE = 'proximative'\nexport const CASE_SEPARATIVE = 'separative'\nexport const CASE_SOCIATIVE = 'sociative'\nexport const CASE_SUBDIRECTIVE = 'subdirective'\nexport const CASE_SUBESSIVE = 'subessive'\nexport const CASE_SUBELATIVE = 'subelative'\nexport const CASE_SUBLATIVE = 'sublative'\nexport const CASE_SUPERDIRECTIVE = 'superdirective'\nexport const CASE_SUPERESSIVE = 'superessive'\nexport const CASE_SUPERLATIVE = 'superlative'\nexport const CASE_SUPPRESSIVE = 'suppressive'\nexport const CASE_TEMPORAL = 'temporal'\nexport const CASE_TERMINATIVE = 'terminative'\nexport const CASE_TRANSLATIVE = 'translative'\nexport const CASE_VIALIS = 'vialis'\nexport const CASE_VOCATIVE = 'vocative'\nexport const MOOD_ADMIRATIVE = 'admirative'\nexport const MOOD_COHORTATIVE = 'cohortative'\nexport const MOOD_CONDITIONAL = 'conditional'\nexport const MOOD_DECLARATIVE = 'declarative'\nexport const MOOD_DUBITATIVE = 'dubitative'\nexport const MOOD_ENERGETIC = 'energetic'\nexport const MOOD_EVENTIVE = 'eventive'\nexport const MOOD_GENERIC = 'generic'\nexport const MOOD_GERUNDIVE = 'gerundive'\nexport const MOOD_HYPOTHETICAL = 'hypothetical'\nexport const MOOD_IMPERATIVE = 'imperative'\nexport const MOOD_INDICATIVE = 'indicative'\nexport const MOOD_INFERENTIAL = 'inferential'\nexport const MOOD_INFINITIVE = 'infinitive'\nexport const MOOD_INTERROGATIVE = 'interrogative'\nexport const MOOD_JUSSIVE = 'jussive'\nexport const MOOD_NEGATIVE = 'negative'\nexport const MOOD_OPTATIVE = 'optative'\nexport const MOOD_PARTICIPLE = 'participle'\nexport const MOOD_PRESUMPTIVE = 'presumptive'\nexport const MOOD_RENARRATIVE = 'renarrative'\nexport const MOOD_SUBJUNCTIVE = 'subjunctive'\nexport const MOOD_SUPINE = 'supine'\nexport const NUM_SINGULAR = 'singular'\nexport const NUM_PLURAL = 'plural'\nexport const NUM_DUAL = 'dual'\nexport const NUM_TRIAL = 'trial'\nexport const NUM_PAUCAL = 'paucal'\nexport const NUM_SINGULATIVE = 'singulative'\nexport const NUM_COLLECTIVE = 'collective'\nexport const NUM_DISTRIBUTIVE_PLURAL = 'distributive plural'\nexport const NRL_CARDINAL = 'cardinal'\nexport const NRL_ORDINAL = 'ordinal'\nexport const NRL_DISTRIBUTIVE = 'distributive'\nexport const NURL_NUMERAL_ADVERB = 'numeral adverb'\nexport const ORD_1ST = '1st'\nexport const ORD_2ND = '2nd'\nexport const ORD_3RD = '3rd'\nexport const ORD_4TH = '4th'\nexport const ORD_5TH = '5th'\nexport const ORD_6TH = '6th'\nexport const ORD_7TH = '7th'\nexport const ORD_8TH = '8th'\nexport const ORD_9TH = '9th'\nexport const TENSE_AORIST = 'aorist'\nexport const TENSE_FUTURE = 'future'\nexport const TENSE_FUTURE_PERFECT = 'future perfect'\nexport const TENSE_IMPERFECT = 'imperfect'\nexport const TENSE_PAST_ABSOLUTE = 'past absolute'\nexport const TENSE_PERFECT = 'perfect'\nexport const TENSE_PLUPERFECT = 'pluperfect'\nexport const TENSE_PRESENT = 'present'\nexport const VKIND_TO_BE = 'to be'\nexport const VKIND_COMPOUNDS_OF_TO_BE = 'compounds of to be'\nexport const VKIND_TAKING_ABLATIVE = 'taking ablative'\nexport const VKIND_TAKING_DATIVE = 'taking dative'\nexport const VKIND_TAKING_GENITIVE = 'taking genitive'\nexport const VKIND_TRANSITIVE = 'transitive'\nexport const VKIND_INTRANSITIVE = 'intransitive'\nexport const VKIND_IMPERSONAL = 'impersonal'\nexport const VKIND_DEPONENT = 'deponent'\nexport const VKIND_SEMIDEPONENT = 'semideponent'\nexport const VKIND_PERFECT_DEFINITE = 'perfect definite'\nexport const VOICE_ACTIVE = 'active'\nexport const VOICE_PASSIVE = 'passive'\nexport const VOICE_MEDIOPASSIVE = 'mediopassive'\nexport const VOICE_IMPERSONAL_PASSIVE = 'impersonal passive'\nexport const VOICE_MIDDLE = 'middle'\nexport const VOICE_ANTIPASSIVE = 'antipassive'\nexport const VOICE_REFLEXIVE = 'reflexive'\nexport const VOICE_RECIPROCAL = 'reciprocal'\nexport const VOICE_CAUSATIVE = 'causative'\nexport const VOICE_ADJUTATIVE = 'adjutative'\nexport const VOICE_APPLICATIVE = 'applicative'\nexport const VOICE_CIRCUMSTANTIAL = 'circumstantial'\nexport const VOICE_DEPONENT = 'deponent'\nexport const TYPE_IRREGULAR = 'irregular'\nexport const TYPE_REGULAR = 'regular'\n// Classes\nexport const CLASS_PERSONAL = 'personal'\nexport const CLASS_REFLEXIVE = 'reflexive'\nexport const CLASS_POSSESSIVE = 'possessive'\nexport const CLASS_DEMONSTRATIVE = 'demonstrative'\nexport const CLASS_RELATIVE = 'relative'\nexport const CLASS_INTERROGATIVE = 'interrogative'\nexport const CLASS_GENERAL_RELATIVE = 'general relative'\nexport const CLASS_INDEFINITE = 'indefinite'\nexport const CLASS_INTENSIVE = 'intensive'\nexport const CLASS_RECIPROCAL = 'reciprocal'\n/* eslit-enable no-unused-vars */\n","import Definition from './definition'\n\nexport default class DefinitionSet {\n constructor (lemmaWord, languageID) {\n this.lemmaWord = lemmaWord\n this.languageID = languageID\n\n this.shortDefs = []\n this.fullDefs = []\n }\n\n /**\n * A function that is used to instantiate a DefinitionSet object from a JSON object.\n * @param {Object} jsonObject - A JSON object representing DefinitionSet data.\n * @return {DefinitionSet} A DefinitionSet object populated with data from JSON object.\n */\n static readObject (jsonObject) {\n let definitionSet = new DefinitionSet(jsonObject.lemmaWord, jsonObject.languageID)\n\n for (let shortDef of jsonObject.shortDefs) {\n definitionSet.shortDefs.push(Definition.readObject(shortDef))\n }\n for (let fullDef of jsonObject.fullDefs) {\n definitionSet.fullDefs.push(Definition.readObject(fullDef))\n }\n\n return definitionSet\n }\n\n /**\n * Check to see if the DefinitionSet is empty\n * @return {boolean} true if empty false if there is at least one definition\n */\n isEmpty () {\n return this.shortDefs.length === 0 && this.fullDefs.length === 0\n }\n\n /**\n * Appends one or more definitions to a list of short definitions.\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @return {Definition[]} A list of short definitions this object has.\n */\n appendShortDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.shortDefs = this.shortDefs.concat(definitions)\n }\n return this.shortDefs\n }\n\n /**\n * clear accumulated short definitions\n */\n clearShortDefs () {\n this.shortDefs = []\n }\n\n /**\n * Appends one or more definitions to a list of full definitions.\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @return {Definition[]} A list of full definitions this object has.\n */\n appendFullDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.fullDefs = this.fullDefs.concat(definitions)\n }\n return this.fullDefs\n }\n\n /**\n * clear accumulated full definitions\n */\n clearFullDefs () {\n this.fullDefs = []\n }\n}\n","class Definition {\n constructor (text, language, format, lemmaText) {\n this.text = text\n this.language = language\n this.format = format\n this.lemmaText = lemmaText\n }\n\n static readObject (jsonObject) {\n return new Definition(jsonObject.text, jsonObject.language, jsonObject.format, jsonObject.lemmaText)\n }\n}\nexport default Definition\n","'use strict'\nimport * as Constants from './constants.js'\nimport Definition from './definition.js'\nimport DefinitionSet from './definition-set'\nimport Feature from './feature.js'\nimport GrmFeature from './grm-feature.js'\nimport FeatureType from './feature_type.js'\nimport FeatureList from './feature_list.js'\nimport FeatureImporter from './feature_importer.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Homonym from './homonym.js'\nimport Lexeme from './lexeme.js'\nimport Lemma from './lemma.js'\nimport Inflection from './inflection.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport ResourceProvider from './resource_provider.js'\n\nimport Translation from './translation.js'\n\nexport {\n Constants,\n Definition,\n DefinitionSet,\n Feature,\n GrmFeature,\n FeatureType,\n FeatureList,\n FeatureImporter,\n Inflection,\n LanguageModelFactory,\n Homonym,\n Lexeme,\n Lemma,\n LatinLanguageModel,\n GreekLanguageModel,\n ArabicLanguageModel,\n PersianLanguageModel,\n ResourceProvider,\n\n Translation }\n","import LanguageModelFactory from './language_model_factory.js'\nimport FeatureImporter from './feature_importer.js'\nimport * as i18n from './i18n.js'\n\n/**\n * A grammatical feature object, that can replace both Feature and FeatureType objects.\n */\nexport default class Feature {\n /**\n *\n * @param {string} type - A type of the feature, allowed values are specified in 'type' getter.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n *\n * If a single value with no sort order is provided, data format will be:\n * value\n * This value will be assigned a default sort order.\n *\n * If a single value with sort order is provided, data format will be:\n * [[value, sortOrder]]\n *\n * If multiple values without sort order are provided, data format will be:\n * [value1, value2, value3, ...]\n * Items will be assigned a sort order according to their order in an array, starting from one.\n *\n * If multiple values with sort order are provided, data format will be:\n * [[value1, sortOrder1], [value2, sortOrder2], [value3, sortOrder3], ...]\n * If a sort order is omitted anywhere, it will be set to a default sort order.\n *\n * Each value of a feature has its `sortOrder` property. This value is used to soft values of a feature\n * between themselves. Feature object has a `sortOrder` property of its own, too. It is used\n * to compare two Feature objects between themselves.\n *\n * @param {symbol} languageID - A language ID of a feature\n * @param {number} sortOrder - A sort order of a feature when multiple features are compared.\n * @param allowedValues - If feature has a restricted set of allowed values, here will be a list of those\n * values. An order of those values can define a sort order.\n */\n constructor (type, data, languageID, sortOrder = 1, allowedValues = []) {\n if (!Feature.isAllowedType(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!data) {\n throw new Error('Feature should have a non-empty value(s).')\n }\n if (!languageID) {\n throw new Error('No language ID is provided')\n }\n\n this.type = type\n this.languageID = languageID\n this.sortOrder = sortOrder\n this.allowedValues = allowedValues\n\n // `_data` is an array\n this._data = Feature.dataValuesFromInput(data)\n this.sort()\n }\n\n static dataValuesFromInput (data) {\n let normalized\n if (!Array.isArray(data)) {\n // Single value with no sort order\n normalized = [[data, this.defaultSortOrder]]\n } else if (!Array.isArray(data[0])) {\n // Multiple values without any sort order, default sort order will be used\n // we reverse because sortOrder is numeric descending (i.e. 2 is before 1)\n normalized = data.map((v, i) => [v, data.length - i])\n } else {\n // Value has all the data, including a sort order\n normalized = data\n }\n return normalized.map(d => { return { value: d[0], sortOrder: Number.parseInt(d[1]) } })\n }\n\n /**\n *\n * @param featureData\n */\n static newFromFtr (featureData) {\n\n }\n\n static get types () {\n return {\n /**\n * @deprecated : Use `fullForm` where appropriate instead\n */\n word: 'word',\n fullForm: 'full form',\n hdwd: 'headword',\n part: 'part of speech', // Part of speech\n number: 'number',\n 'case': 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n 'class': 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var' // variance?\n }\n }\n\n static isAllowedType (value) {\n return Object.values(this.types).includes(`${value}`)\n }\n\n static get defaultSortOrder () {\n return 1\n }\n\n static get joinSeparator () {\n return ' '\n }\n\n static get defaultImporterName () {\n return 'default'\n }\n\n /**\n * Test to see if this feature allows unrestricted values.\n * @returns {boolean} true if unrestricted false if not.\n */\n get allowsUnrestrictedValues () {\n /*\n If `allowedValues` array is empty then there are no value restrictions\n */\n return this.allowedValues.length === 0\n }\n\n /**\n * Defines a sort order of feature values. Values are sorted according to their sort order\n * (a number starting from one). If several values have the same sort order, they will be\n * sorted alphabetically according to their values.\n * Sort order is deterministic.\n */\n sort () {\n this._data.sort((a, b) => a.sortOrder !== b.sortOrder ? b.sortOrder - a.sortOrder : a.value.localeCompare(b.value))\n }\n\n /**\n * Compares a feature's values to another feature's values for sorting\n * @param {Feature} otherFeature the feature to compare this feature's values to\n * @return {integer} < 1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second\n */\n compareTo (otherFeature) {\n // the data values are sorted upon construction and insertion so we only should need to look at the first values\n // feature sortOrders are descending (i.e. 5 sorts higher than 1)\n if (otherFeature) {\n return otherFeature._data[0].sortOrder - this._data[0].sortOrder\n } else {\n // if the other feature isn't defined, this one sorts first\n return -1\n }\n }\n\n get items () {\n return this._data\n }\n\n /**\n * Returns a single value string. If feature has a single value, this value will be returned.\n * If it has multiple values, those values will be concatenated with a default separator and\n * returned in a single string. Values composing this string are sorted according\n * to each value's sort order.\n * @return {string} A single value string.\n */\n get value () {\n return this.values.join(this.constructor.joinSeparator)\n }\n\n /**\n * Returns an array of string values of a feature, sorted according to each item's sort order.\n * If a feature contains a single feature, an array with one value will be returned.\n * @return {string[]} An array of string values.\n */\n get values () {\n return this._data.map(v => v.value)\n }\n\n /**\n * Retrieves a value object by name. Can be used to update a value object directly.\n * @param {string} featureVale - A feature value of an object to retrieve.\n */\n getValue (featureVale) {\n return this._data.find(v => v.value === featureVale)\n }\n\n /**\n * Returns a number of feature values.\n * @retrun {number] A quantity of feature values\n */\n get valQty () {\n return this._data.length\n }\n\n get isEmpty () {\n return this.valQty === 0\n }\n\n get isSingle () {\n return this.valQty === 1\n }\n\n get isMultiple () {\n return this.valQty > 1\n }\n\n /**\n * A string representation of a feature.\n * @return {string}\n */\n toString () {\n return this.value\n }\n\n /**\n * Examines the feature for a specific value.\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValue (value) {\n return this.values.includes(value)\n }\n\n /**\n * Checks if this feature has all value from an array.\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValues (values) {\n let hasValues = true\n for (let value of values) {\n hasValues = hasValues && this.hasValue(value)\n }\n return hasValues\n }\n\n /**\n * Checks if this feature has some value from an array.\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasSomeValues (values) {\n let hasValues = false\n for (let value of values) {\n hasValues = hasValues || this.hasValue(value)\n }\n return hasValues\n }\n\n get valuesUnrestricted () {\n return this.allowedValues.length === 0\n }\n\n /**\n * Two features are considered fully equal if they are of the same type, have the same language,\n * and the same set of feature values in the same order.\n * @param {Feature} feature - A GrmFtr object this feature should be compared with.\n * @return {boolean} True if features are equal, false otherwise.\n */\n isEqual (feature) {\n return this.type === feature.type &&\n LanguageModelFactory.compareLanguages(this.languageID, feature.languageID) &&\n this.value === feature.value\n }\n\n /**\n * Adds a single new value to the existing feature object.\n * This function is chainable.\n * @param {string} value - A feature value.\n * @param {number} sortOrder - A sort order.\n * @return {Feature} - Self reference for chaining.\n */\n addValue (value, sortOrder = this.constructor.defaultSortOrder) {\n if (!this.hasValue(value)) {\n this._data.push({\n value: value,\n sortOrder: sortOrder\n })\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n console.warn(`Value \"${value}\" already exists. If you want to change it, use \"getValue\" to access it directly.`)\n }\n return this\n }\n\n /**\n * Adds multiple new values to the existing feature object.\n * This function is chainable.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n * @return {Feature} - Self reference for chaining.\n */\n addValues (data) {\n let normalizedData = this.constructor.dataValuesFromInput(data)\n let values = normalizedData.map(v => v.value)\n if (!this.hasSomeValues(values)) {\n this._data = this._data.concat(normalizedData)\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n console.warn(`One or several values from \"${values}\" already exist. If you want to change it, use \"getValue\" to access a value directly.`)\n }\n return this\n }\n\n /**\n * Removes a single value from the existing feature object.\n * @param value\n */\n removeValue (value) {\n // TODO: Do we need it?\n console.warn(`This feature is not implemented yet`)\n }\n\n /**\n * Creates a new single value Feature object of the same type and same language,\n * but with a different feature value.\n * This can be used when one feature defines a type and it is necessary\n * to create other items of the same type.\n * @param {string} value - A value of a feature.\n * @param {number} sortOrder.\n * @return {Feature} A new Ftr object.\n */\n createFeature (value, sortOrder = this.constructor.defaultSortOrder) {\n // TODO: Add a check of if the value exists in a source Feature object\n return new Feature(this.type, [[value, sortOrder]], this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates a multiple value Feature object of the same type and same language,\n * but with a different feature values.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations,\n * formatted according to rules described in a Ftr constructor.\n * @return {Feature} A new Ftr object.\n */\n createFeatures (data) {\n return new Feature(this.type, data, this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates an array of Feature objects where each Feature object is matching one feature value\n * form the values of this object.\n * Useful when the current objects is a type feature and it is necessary to create an array\n * of Feature objects for the type from it.\n * @return {Feature[]} - An array of Feature objects. Each object represents one feature value\n * from the current object.\n */\n get ownFeatures () {\n return this.values.map(v => new Feature(this.type, v, this.languageID, 1, this.allowedValues))\n }\n\n /**\n * Create a copy of the feature object.\n */\n getCopy () {\n let values = this._data.map(item => [item.value, item.sortOrder])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues.slice())\n }\n\n /**\n * A locale-specific abbreviation for a feature's values.\n * @return {string[]}\n */\n toLocaleStringAbbr (lang = 'en') {\n return this.values.map(v => i18n.i18n[lang][v] ? i18n.i18n[lang][v].abbr : v).join(this.constructor.joinSeparator)\n }\n\n /**\n * Adds an importer to the internal list.\n * @param {string} name - A name of an importer.\n * @param {FeatureImporter} importer - A `FeatureImporter` object.\n */\n addImporter (importer = new FeatureImporter(), name = this.constructor.defaultImporterName) {\n if (!this.importers) {\n this.importers = new Map()\n }\n this.importers.set(name, importer)\n return importer\n }\n\n getImporter (name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n return this.importers.get(name)\n }\n\n /**\n * Adds feature values from the imported values.\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @return {Feature} - A new Ftr object.\n */\n addFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n foreignData = this.constructor.dataValuesFromInput(foreignData)\n this._data.push(...foreignData.map(fv => { return { value: importer.get(fv.value), sortOrder: fv.sortOrder } }))\n this.sort()\n return this\n }\n\n /**\n * Creates a new feature of the same type and with the same language from the imported values.\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @return {Feature} - A new Ftr object.\n */\n createFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n if (!Array.isArray(foreignData)) {\n foreignData = [foreignData]\n }\n let values = foreignData.map(fv => importer.get(fv))\n /*\n Some values may be mapped into multiple values. For them an importer will return an array of values instead of a single value.\n The values will be a multidimensional array that will require flattening.\n */\n values = values.reduce((acc, cv) => acc.concat(cv), [])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues)\n }\n}\n","class FeatureImporter {\n /**\n * @param defaults\n * @param {boolean} returnUnknown - If true, and a source value is not found in the importer,\n * a source value will be returned without any change (a passthrough). If false, an Error\n * will be thrown for unknown source values.\n * @return {FeatureImporter}\n */\n constructor (defaults = [], returnUnknown = false) {\n this.hash = {}\n for (let value of defaults) {\n this.map(value, value)\n }\n this.returnUnknown = returnUnknown\n return this\n }\n\n /**\n * Sets mapping between external imported value and one or more library standard values. If an importedValue\n * is already in a hash table, old libraryValue will be overwritten with the new one.\n * @param {string} importedValue - External value\n * @param {Object | Object[] | string | string[]} libraryValue - Library standard value\n */\n map (importedValue, libraryValue) {\n if (!importedValue) {\n throw new Error('Imported value should not be empty.')\n }\n\n if (!libraryValue) {\n throw new Error('Library value should not be empty.')\n }\n\n this.hash[importedValue] = libraryValue\n return this\n }\n\n /**\n * Checks if value is in a map.\n * @param {string} importedValue - A value to test.\n * @returns {boolean} - Tru if value is in a map, false otherwise.\n */\n has (importedValue) {\n return this.hash.hasOwnProperty(importedValue)\n }\n\n /**\n * Returns one or more library standard values that match an external value\n * @param {string} sourceValue - External value\n * @returns {Object | string} One or more of library standard values\n */\n get (sourceValue) {\n if (this.has(sourceValue)) {\n return this.hash[sourceValue]\n } else if (this.returnUnknown) {\n return sourceValue\n } else {\n throw new Error('A value \"' + sourceValue + '\" is not found in the importer.')\n }\n }\n}\nexport default FeatureImporter\n","/**\n * A list of grammatical features that characterizes a language unit. Has some additional service methods,\n * compared with standard storage objects.\n */\nclass FeatureList {\n /**\n * Initializes a feature list.\n * @param {Feature[]} features - Features that build the list (optional, can be set later).\n */\n constructor (features = []) {\n this._features = []\n this._types = {}\n this.add(features)\n }\n\n add (features) {\n if (!features || !Array.isArray(features)) {\n throw new Error('Features must be defined and must come in an array.')\n }\n\n for (let feature of features) {\n this._features.push(feature)\n this._types[feature.type] = feature\n }\n }\n\n /**\n * Returns an array of grouping features.\n * @returns {FeatureType[]} - An array of grouping features.\n */\n get items () {\n return this._features\n }\n\n forEach (callback) {\n this._features.forEach(callback)\n }\n\n /**\n * Returns a feature of a particular type. If such feature does not exist in a list, returns undefined.\n * @param {string} type - Feature type as defined in `types` object.\n * @return {FeatureType | undefined} A feature if a particular type if contains it. Undefined otherwise.\n */\n ofType (type) {\n if (this.hasType(type)) {\n return this._types[type]\n }\n }\n\n /**\n * Checks whether a feature list has a feature of a specific type.\n * @param {string} type - Feature type as defined in `types` object.\n * @return {boolean} Whether a feature list has a feature of a particular type.\n */\n hasType (type) {\n return this._types.hasOwnProperty(type)\n }\n}\nexport default FeatureList\n","import Feature from './feature.js'\nimport FeatureImporter from './feature_importer.js'\nimport LMF from './language_model_factory'\n\n/**\n * @deprecated Use Feature instead\n * Definition class for a (grammatical) feature. Stores type information and (optionally) all possible values of the feature.\n * It serves as a feature generator. If list of possible values is provided, it can generate a Feature object\n * each time a property that corresponds to a feature value is accessed. If no list of possible values provided,\n * a Feature object can be generated with get(value) method.\n *\n * An order of values determines a default sort and grouping order. If two values should have the same order,\n * they should be grouped within an array: value1, [value2, value3], value4. Here 'value2' and 'value3' have\n * the same priority for sorting and grouping.\n */\nclass FeatureType {\n // TODO: value checking\n /**\n * Creates and initializes a Feature Type object.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string[] | string[][]} values - A list of allowed values for this feature type.\n * If an empty array is provided, there will be no\n * allowed values as well as no ordering (can be used for items that do not need or have a simple order,\n * such as footnotes).\n * @param {String | Symbol} language - A language of a feature type.\n */\n constructor (type, values, language) {\n if (!values || !Array.isArray(values)) {\n throw new Error('Values should be an array (or an empty array) of values.')\n }\n if (!language) {\n throw new Error('FeatureType constructor requires a language')\n }\n\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n\n /*\n This is a sort order index for a grammatical feature values. It is determined by the order of values in\n a 'values' array.\n */\n this._orderIndex = []\n this._orderLookup = {}\n\n for (const [index, value] of values.entries()) {\n this._orderIndex.push(value)\n if (Array.isArray(value)) {\n for (let element of value) {\n this[element] = new Feature(this.type, element, this.languageID)\n this._orderLookup[element] = index\n }\n } else {\n this[value] = new Feature(this.type, value, this.languageID)\n this._orderLookup[value] = index\n }\n }\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n /**\n * test to see if this FeatureType allows unrestricted values\n * @returns {boolean} true if unrestricted false if not\n */\n hasUnrestrictedValue () {\n return this.orderedValues.length === 1 && this.orderedValues[0] === FeatureType.UNRESTRICTED_VALUE\n }\n\n /**\n * Return a Feature with an arbitrary value. This value would not be necessarily present among FeatureType values.\n * This can be especially useful for features that do not set: a list of predefined values, such as footnotes.\n * @param value\n * @param {int} sortOrder\n * @returns {Feature}\n */\n get (value, sortOrder = 1) {\n if (value) {\n return new Feature(this.type, [[value, sortOrder]], this.languageID)\n } else {\n throw new Error('A non-empty value should be provided.')\n }\n }\n\n /**\n *\n * @param {string[][]} data - An array of value arrays as: [[value1, sortOrder1], [value2, sortOrder2]]\n * @return {Feature}\n */\n getValues (data) {\n return new Feature(this.type, data, this.languageID)\n }\n\n getFromImporter (importerName, value) {\n let mapped\n try {\n mapped = this.importer[importerName].get(value)\n } catch (e) {\n // quietly catch not found and replace with default\n mapped = this.get(value)\n }\n return mapped\n }\n\n /**\n * Creates and returns a new importer with a specific name. If an importer with this name already exists,\n * an existing Importer object will be returned.\n * @param {string} name - A name of an importer object\n * @returns {Importer} A new or existing Importer object that matches a name provided\n */\n addImporter (name) {\n if (!name) {\n throw new Error('Importer should have a non-empty name.')\n }\n this.importer = this.importer || {}\n this.importer[name] = this.importer[name] || new FeatureImporter()\n return this.importer[name]\n }\n\n /**\n * Return copies of all feature values as Feature objects in a sorted array, according to feature type's sort order.\n * For a similar function that returns strings instead of Feature objects see orderedValues().\n * @returns {Feature[] | Feature[][]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of Feature objects will be returned instead of a single Feature object, as for single feature values.\n */\n get orderedFeatures () {\n return this.orderedValues.map((value) => new Feature(this.type, value, this.languageID))\n }\n\n /**\n * Return all feature values as strings in a sorted array, according to feature type's sort order.\n * This is a main method that specifies a sort order of the feature type. orderedFeatures() relies\n * on this method in providing a sorted array of feature values. If you want to create\n * a custom sort order for a particular feature type that will depend on some options that are not type-related,\n * create a wrapper around this function providing it with options arguments so it will be able to decide\n * in what order those features will be based on those arguments.\n * For a similar function that returns Feature objects instead of strings see orderedValues().\n * @returns {string[]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of strings will be returned instead of a single strings, as for single feature values.\n */\n get orderedValues () {\n return this._orderIndex\n }\n\n /**\n * Returns a lookup table for type values as:\n * {value1: order1, value2: order2}, where order is a sort order of an item. If two items have the same sort order,\n * their order value will be the same.\n * @returns {object}\n */\n get orderLookup () {\n return this._orderLookup\n }\n\n /**\n * Sets an order of grammatical feature values for a grammatical feature. Used mostly for sorting, filtering,\n * and displaying.\n *\n * @param {Feature[] | Feature[][]} values - a list of grammatical features that specify their order for\n * sorting and filtering. Some features can be grouped as [[genders.masculine, genders.feminine], LibLatin.genders.neuter].\n * It means that genders.masculine and genders.feminine belong to the same group. They will have the same index\n * and will be stored inside an _orderIndex as an array. genders.masculine and genders.feminine will be grouped together\n * during filtering and will be in the same bin during sorting.\n *\n */\n set order (values) {\n if (!values || (Array.isArray(values) && values.length === 0)) {\n throw new Error('A non-empty list of values should be provided.')\n }\n\n // If a single value is provided, convert it into an array\n if (!Array.isArray(values)) {\n values = [values]\n }\n\n for (let value of values) {\n if (Array.isArray(value)) {\n for (let element of value) {\n if (!this.hasOwnProperty(element.value)) {\n throw new Error('Trying to order an element with \"' + element.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (element.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + element.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${element.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n } else {\n if (!this.hasOwnProperty(value.value)) {\n throw new Error('Trying to order an element with \"' + value.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (value.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + value.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(value.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${value.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n }\n\n // Erase whatever sort order was set previously\n this._orderLookup = {}\n this._orderIndex = []\n\n // Define a new sort order\n for (const [index, element] of values.entries()) {\n if (Array.isArray(element)) {\n // If it is an array, all values should have the same order\n let elements = []\n for (const subElement of element) {\n this._orderLookup[subElement.value] = index\n elements.push(subElement.value)\n }\n this._orderIndex[index] = elements\n } else {\n // If is a single value\n this._orderLookup[element.value] = index\n this._orderIndex[index] = element.value\n }\n }\n }\n}\nFeatureType.UNRESTRICTED_VALUE = Symbol('unrestricted')\nexport default FeatureType\n","import LanguageModel from './language_model.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class GreekLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_GREEK }\n static get languageCode () { return Constants.STR_LANG_CODE_GRC }\n static get languageCodes () { return [Constants.STR_LANG_CODE_GRC] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_GENERAL_RELATIVE,\n Constants.CLASS_INDEFINITE,\n Constants.CLASS_INTENSIVE,\n Constants.CLASS_INTERROGATIVE,\n Constants.CLASS_PERSONAL,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_RECIPROCAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_RELATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL,\n Constants.NUM_DUAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT,\n Constants.TENSE_AORIST\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_PASSIVE,\n Constants.VOICE_ACTIVE,\n Constants.VOICE_MEDIOPASSIVE,\n Constants.VOICE_MIDDLE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_OPTATIVE,\n Constants.MOOD_IMPERATIVE\n ]\n ],\n [\n // TODO full list of greek dialects\n Feature.types.dialect,\n [\n 'attic',\n 'epic',\n 'doric'\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * @override LanguageModel#grammarFeatures\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.voice]\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {string} word the source word\n * @returns {string} the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type string\n */\n static normalizeWord (word) {\n // we normalize greek to NFC - Normalization Form Canonical Composition\n if (word) {\n return word.normalize('NFC')\n } else {\n return word\n }\n }\n\n /**\n * @override LanguageModel#alternateWordEncodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // the original alpheios code used the following normalizations\n // 1. When looking up a lemma\n // stripped vowel length\n // stripped caps\n // then if failed, tried again with out these\n // 2. when adding to a word list\n // precombined unicode (vowel length/diacritics preserved)\n // 2. When looking up a verb in the verb paradigm tables\n // it set e_normalize to false, otherwise it was true...\n // make sure it's normalized to NFC and in lower case\n let normalized = GreekLanguageModel.normalizeWord(word).toLocaleLowerCase()\n let strippedVowelLength = normalized.replace(\n /[\\u{1FB0}\\u{1FB1}]/ug, '\\u{03B1}').replace(\n /[\\u{1FB8}\\u{1FB9}]/ug, '\\u{0391}').replace(\n /[\\u{1FD0}\\u{1FD1}]/ug, '\\u{03B9}').replace(\n /[\\u{1FD8}\\u{1FD9}]/ug, '\\u{0399}').replace(\n /[\\u{1FE0}\\u{1FE1}]/ug, '\\u{03C5}').replace(\n /[\\u{1FE8}\\u{1FE9}]/ug, '\\u{03A5}').replace(\n /[\\u{00AF}\\u{0304}\\u{0306}]/ug, '')\n let strippedDiaeresis = normalized.replace(\n /\\u{0390}/ug, '\\u{03AF}').replace(\n /\\u{03AA}/ug, '\\u{0399}').replace(\n /\\u{03AB}/ug, '\\u{03A5}').replace(\n /\\u{03B0}/ug, '\\u{03CD}').replace(\n /\\u{03CA}/ug, '\\u{03B9}').replace(\n /\\u{03CB}/ug, '\\u{03C5}').replace(\n /\\u{1FD2}/ug, '\\u{1F76}').replace(\n /\\u{1FD3}/ug, '\\u{1F77}').replace(\n /\\u{1FD7}/ug, '\\u{1FD6}').replace(\n /\\u{1FE2}/ug, '\\u{1F7A}').replace(\n /\\u{1FE3}/ug, '\\u{1F7B}').replace(\n /\\u{1FE7}/ug, '\\u{1FE6}').replace(\n /\\u{1FC1}/ug, '\\u{1FC0}').replace(\n /\\u{1FED}/ug, '\\u{1FEF}').replace(\n /\\u{1FEE}/ug, '\\u{1FFD}').replace(\n /[\\u{00A8}\\u{0308}]/ug, '')\n if (encoding === 'strippedDiaeresis') {\n return [strippedDiaeresis]\n } else {\n return [strippedVowelLength]\n }\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return '.,;:!?\\'\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n * @param {Inflection} inflection - An inflection object\n * @return {Object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n let constraints = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n let formBasedList = [Constants.POFS_PRONOUN, Constants.POFS_NUMERAL, Constants.POFS_ARTICLE]\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if (formBasedList.includes(inflection[Feature.types.part].value)) {\n constraints.fullFormBased = true\n } else {\n constraints.suffixBased = true\n }\n } else {\n console.warn(`Unable to set grammar: part of speech data is missing or is incorrect`, inflection[Feature.types.part])\n }\n\n constraints.pronounClassRequired =\n LanguageModelFactory.compareLanguages(GreekLanguageModel.languageID, inflection.languageID) &&\n inflection.hasOwnProperty(Feature.types.part) &&\n inflection[Feature.types.part].value === Constants.POFS_PRONOUN\n\n return constraints\n }\n\n /**\n * Determines a class of a given word (pronoun) by finding a matching word entry(ies)\n * in a pronoun source info (`forms`) and getting a single or multiple classes of those entries.\n * Some morphological analyzers provide class information that is unreliable or do not\n * provide class information at all. However, class information is essential in\n * deciding in what table should pronouns be grouped. For this, we have to\n * determine pronoun classes using this method.\n * @param {Form[]} forms - An array of known forms of pronouns.\n * @param {string} word - A word we need to find a matching class for.\n * @param {boolean} normalize - Whether normalized forms of words shall be used for comparison.\n * @return {Feature} Matching classes found within a Feature objects. If no matching classes found,\n * returns undefined.\n */\n static getPronounClasses (forms, word, normalize = true) {\n let matchingValues = new Set() // Will eliminate duplicated values\n let matchingForms = forms.filter(\n form => {\n let match = false\n if (form.value) {\n match = normalize\n ? GreekLanguageModel.normalizeWord(form.value) === GreekLanguageModel.normalizeWord(word)\n : form.value === word\n }\n return match\n }\n )\n for (const matchingForm of matchingForms) {\n if (matchingForm.features.hasOwnProperty(Feature.types.grmClass)) {\n for (const value of matchingForm.features[Feature.types.grmClass].values) {\n matchingValues.add(value)\n }\n }\n }\n if (matchingValues.size > 0) {\n return new Feature(Feature.types.grmClass, Array.from(matchingValues), GreekLanguageModel.languageID)\n }\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport * as i18n from './i18n.js'\n\n/**\n * Wrapper class for a (grammatical, usually) feature, such as part of speech or declension. Keeps both value and type information.\n */\nclass GrmFeature {\n /**\n * @deprecated Use Feature instead\n * Initializes a Feature object\n * @param {string | string[]} value - A single feature value or, if this feature could have multiple\n * values, an array of values.\n * Multiple values do not allow to use a sort order. Because of this, it's better to use\n * array of multiple Feature objects with single value each instead of a single Feature object\n * with multiple values.\n * Multiple values are left for backward compatibility only. Please do not use them as they\n * will be removed in the future.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string | symbol} language - A language of a feature, allowed values are specified in 'languages' object.\n * @param {int} sortOrder - an integer used for sorting\n */\n constructor (value, type, language, sortOrder = 1) {\n if (!GrmFeature.types.isAllowed(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!value) {\n throw new Error('Feature should have a non-empty value.')\n }\n if (!type) {\n throw new Error('Feature should have a non-empty type.')\n }\n if (!language) {\n throw new Error('Feature constructor requires a language')\n }\n this.value = value\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n this.sortOrder = sortOrder\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n isEqual (feature) {\n if (Array.isArray(feature.value)) {\n // `feature` is a single object with multiple `value` properties. This feature will be sunset\n // as it does not allow to use sort order on Feature objects.\n if (!Array.isArray(this.value) || this.value.length !== feature.value.length) {\n return false\n }\n let equal = this.type === feature.type && LMF.compareLanguages(this.languageID, feature.languageID)\n equal = equal && this.value.every(function (element, index) {\n return element === feature.value[index]\n })\n return equal\n } else {\n return LMF.compareLanguages(this.languageID, feature.languageID) && this.type === feature.type && this.value === feature.value\n }\n }\n\n isSubsetof (features) {\n if (!Array.isArray(features)) {\n features = [features] // If `features` is a single value, convert it to an array (a more general case)\n }\n // `feature` is an array of feature objects with (possibly) each having a single feature value.\n let languageID = features[0].languageID // Assume all Feature objects have the same language ID\n let type = features[0].type // Assume all Feature objects have the same type\n let values = features.map(f => f.value)\n if (LMF.compareLanguages(this.languageID, languageID) && this.type === type && values.includes(this.value)) {\n return true\n }\n return false\n }\n\n /**\n * examine the feature for a specific value\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values\n */\n hasValue (value) {\n if (Array.isArray(this.value)) {\n return this.value.includes(value)\n } else {\n return this.value === value\n }\n }\n\n /**\n * string representation of a feature\n * @return {string}\n */\n toString () {\n if (Array.isArray(this.value)) {\n return this.value.join(',')\n } else {\n return this.value\n }\n }\n\n /**\n * a locale-specific abbreviation for a feature's values\n * @return {string}\n */\n toLocaleStringAbbr (lang = 'en') {\n if (Array.isArray(this.value)) {\n return this.value.map((v) => this.toLocaleStringAbbr(v, lang))\n } else {\n return i18n.i18n[lang][this.value].abbr\n }\n }\n\n static toFeature (sourceFeature) {\n if (Array.isArray(sourceFeature)) {\n if (!(sourceFeature[0] instanceof Feature)) {\n const type = sourceFeature[0].type\n const languageID = sourceFeature[0].languageID\n const values = sourceFeature.map(v => v.value)\n return new Feature(type, values, languageID)\n }\n } else {\n if (!(sourceFeature instanceof Feature)) {\n return new Feature(sourceFeature.type, sourceFeature.value, sourceFeature.languageID)\n }\n }\n return sourceFeature\n }\n}\n// Should have no spaces in values in order to be used in HTML templates\nGrmFeature.types = {\n word: 'word',\n part: 'part of speech', // Part of speech\n number: 'number',\n 'case': 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n 'class': 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var', // variance?\n isAllowed (value) {\n let v = `${value}`\n return Object.values(this).includes(v)\n }\n}\nexport default GrmFeature\n","import LMF from './language_model_factory'\r\nimport Lexeme from './lexeme.js'\r\nimport Lemma from './lemma.js'\r\n\r\nclass Homonym {\r\n /**\r\n * Initializes a Homonym object.\r\n * @param {Lexeme[]} lexemes - An array of Lexeme objects.\r\n * @param {string} form - the form which produces the homonyms\r\n */\r\n constructor (lexemes, form) {\r\n if (!lexemes || (Array.isArray(lexemes) && lexemes.length === 0)) {\r\n throw new Error('Lexemes data should not be empty.')\r\n }\r\n\r\n if (!Array.isArray(lexemes)) {\r\n throw new Error('Lexeme data should be provided in an array.')\r\n }\r\n\r\n for (let lexeme of lexemes) {\r\n if (!(lexeme instanceof Lexeme)) {\r\n throw new Error('All lexeme data should be of Lexeme object type.')\r\n }\r\n }\r\n\r\n this.lexemes = lexemes\r\n this.targetWord = form\r\n }\r\n\r\n /**\r\n * Creates a simple form of inflection with one lexeme and zero or more inflections\r\n * attached to it. The lexeme will have lemma whose `word` will be set to\r\n * a homonym's target word.\r\n * @param {string} word - A word that will populate homonym's `targetWord` prop and lemma `word` one.\r\n * @param {symbol} languageID - A language identificator as defined in Constants.LANG_XXX.\r\n * @param {Inflection[]} inflections - Zero or more inflection objects that will be attached to the lexeme\r\n * @return {Homonym} A newly created homonym object.\r\n */\r\n static createSimpleForm (word, languageID, inflections = []) {\r\n let lemma = new Lemma(word, languageID)\r\n let lexeme = new Lexeme(lemma, inflections)\r\n return new Homonym([lexeme], word)\r\n }\r\n\r\n static readObject (jsonObject) {\r\n let lexemes = []\r\n if (jsonObject.lexemes) {\r\n for (let lexeme of jsonObject.lexemes) {\r\n lexemes.push(Lexeme.readObject(lexeme))\r\n }\r\n }\r\n let homonym = new Homonym(lexemes)\r\n if (jsonObject.targetWord) {\r\n homonym.targetWord = jsonObject.targetWord\r\n }\r\n return homonym\r\n }\r\n\r\n /**\r\n * Returns a language code of a homonym (ISO 639-3).\r\n * Homonym does not have a language property, only lemmas and inflections do. We assume that all lemmas\r\n * and inflections within the same homonym will have the same language, and we can determine a language\r\n * by using language property of the first lemma. We chan change this logic in the future if we'll need to.\r\n * @returns {string} A language code, as defined in the `languages` object.\r\n */\r\n get language () {\r\n console.warn(`Please use languageID instead`)\r\n return LMF.getLanguageCodeFromId(this.languageID)\r\n }\r\n\r\n /**\r\n * Returns a language ID of a homonym.\r\n * Homonym does not have a languageID property, only lemmas and inflections do. We assume that all lemmas\r\n * and inflections within the same homonym will have the same language, and we can determine a language\r\n * by using languageID property of the first lemma. We chan change this logic in the future if we'll need to.\r\n * @returns {Symbol} A language ID, as defined in the `LANG_` constants.\r\n */\r\n get languageID () {\r\n if (this.lexemes && this.lexemes[0] && this.lexemes[0].lemma && this.lexemes[0].lemma.languageID) {\r\n return this.lexemes[0].lemma.languageID\r\n } else {\r\n throw new Error('Homonym has not been initialized properly. Unable to obtain language ID information.')\r\n }\r\n }\r\n\r\n /**\r\n * Returns a list of all inflections within all lexemes of a homonym\r\n * @return {Inflection[]} An array of inflections\r\n */\r\n get inflections () {\r\n let inflections = []\r\n for (const lexeme of this.lexemes) {\r\n inflections = inflections.concat(lexeme.inflections)\r\n }\r\n return inflections\r\n }\r\n\r\n isDisambiguated () {\r\n return this.lexemes.filter(l => l.disambiguated).length > 0\r\n }\r\n\r\n /**\r\n * Disambiguate homymyn objects with another\r\n * @param {Homonym} base the homonym to use to disambiguate\r\n * @param {Homonym[]} disambiguators the homonyms to use to disambiguate\r\n */\r\n static disambiguate (base, disambiguators) {\r\n if (disambiguators.length === 0) {\r\n // nothing left to disamibugate with\r\n return base\r\n }\r\n let disambiguator = disambiguators.shift()\r\n let lexemes = []\r\n let missedLexemes = []\r\n // iterate through the lexemes in the disambiguator and try\r\n // to disambiguate the existing lexemes with each\r\n for (let otherLexeme of disambiguator.lexemes) {\r\n let lexemeMatched = false\r\n for (let lexeme of base.lexemes) {\r\n let newLex = Lexeme.disambiguate(lexeme, otherLexeme)\r\n lexemes.push(newLex)\r\n if (newLex.disambiguated) {\r\n lexemeMatched = true\r\n }\r\n }\r\n // if we couldn't find a matching lexeme, add the disambigutor's lexemes\r\n // to the list of lexemes for the new Homonym\r\n if (!lexemeMatched) {\r\n otherLexeme.disambiguated = true\r\n missedLexemes.push(otherLexeme)\r\n }\r\n }\r\n // create a new homonym with the disamibugated lexemes\r\n let newHom = new Homonym([...lexemes, ...missedLexemes], base.targetWord)\r\n return Homonym.disambiguate(newHom, disambiguators)\r\n }\r\n}\r\nexport default Homonym\r\n","/**\n * This is a temporary placeholder for an i18n library\n */\nexport const i18n = {\n en: {\n feminine: {\n full: 'feminine',\n abbr: 'f.'\n },\n masculine: {\n full: 'masculine',\n abbr: 'm.'\n },\n neuter: {\n full: 'neuter',\n abbr: 'n.'\n },\n nominative: {\n full: 'nominative',\n abbr: 'nom.'\n },\n accusative: {\n full: 'accusative',\n abbr: 'acc.'\n },\n genitive: {\n full: 'genitive',\n abbr: 'gen.'\n },\n vocative: {\n full: 'vocative',\n abbr: 'voc.'\n },\n ablative: {\n full: 'ablative',\n abbr: 'abl.'\n },\n locative: {\n full: 'locative',\n abbr: 'loc.'\n },\n dative: {\n full: 'dative',\n abbr: 'dat.'\n },\n positive: {\n full: 'positive',\n abbr: 'pos.'\n },\n comparative: {\n full: 'comparative',\n abbr: 'comp.'\n },\n superlative: {\n full: 'superlative',\n abbr: 'super.'\n },\n singular: {\n full: 'singular',\n abbr: 's.'\n },\n plural: {\n full: 'plural',\n abbr: 'p.'\n },\n dual: {\n full: 'dual',\n abbr: 'dl.'\n },\n present: {\n full: 'present',\n abbr: 'pr.'\n },\n imperfect: {\n full: 'imperfect',\n abbr: 'imp.'\n },\n perfect: {\n full: 'perfect',\n abbr: 'perf.'\n },\n pluperfect: {\n full: 'pluperfect',\n abbr: 'pluperf.'\n },\n plusquamperfect: {\n full: 'plusquamperfect',\n abbr: 'pqpf.'\n },\n 'future perfect': {\n full: 'future perfect',\n abbr: 'fut. perf.'\n },\n future: {\n full: 'future',\n abbr: 'fut.'\n },\n aorist: {\n full: 'aorist',\n abbr: 'aor.'\n },\n indicative: {\n full: 'indicative',\n abbr: 'ind.'\n },\n subjunctive: {\n full: 'subjunctive',\n abbr: 'sub.'\n },\n infinitive: {\n full: 'infinitive',\n abbr: 'inf.'\n },\n imperative: {\n full: 'imperative',\n abbr: 'imp.'\n },\n supine: {\n full: 'supine',\n abbr: 'sup.'\n },\n participle: {\n full: 'participle',\n abbr: 'par.'\n },\n optative: {\n full: 'optative',\n abbr: 'opt.'\n },\n active: {\n full: 'active',\n abbr: 'act.'\n },\n passive: {\n full: 'passive',\n abbr: 'pass.'\n },\n middle: {\n full: 'middle',\n abbr: 'mid.'\n },\n mediopassive: {\n full: 'mediopassive',\n abbr: 'mp.'\n },\n deponens: {\n full: 'deponens',\n abbr: 'dep.'\n }\n }\n}\n","import Feature from './feature.js'\nimport LMF from './language_model_factory.js'\nimport * as Constants from './constants.js'\n/*\n Hierarchical structure of return value of a morphological analyzer:\n\n Homonym (a group of words that are written the same way, https://en.wikipedia.org/wiki/Homonym)\n Lexeme 1 (a unit of lexical meaning, https://en.wikipedia.org/wiki/Lexeme)\n Have a lemma and one or more inflections\n Lemma (also called a headword, a canonical form of a group of words https://en.wikipedia.org/wiki/Lemma_(morphology) )\n Inflection 1\n Stem\n Suffix (also called ending)\n Inflection 2\n Stem\n Suffix\n Lexeme 2\n Lemma\n Inflection 1\n Stem\n Suffix\n */\n\n/**\n * Represents an inflection of a word\n */\nclass Inflection {\n /**\n * Initializes an Inflection object.\n * @param {string} stem - A stem of a word.\n * @param {string | symbol} language - A word's language.\n * @param {string} suffix - a suffix of a word\n * @param {prefix} prefix - a prefix of a word\n * @param {example} example - example\n */\n constructor (stem = null, language, suffix = null, prefix = null, example = null) {\n if (!stem && !suffix) {\n throw new Error('At least stem or suffix must be defined')\n }\n if (!language) {\n throw new Error('Language should not be empty.')\n }\n\n if (!LMF.supportsLanguage(language)) {\n throw new Error(`language ${language} not supported.`)\n }\n\n this.stem = stem\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n this.model = LMF.getLanguageModel(this.languageID)\n this.features = new Set() // Names of features of this inflection\n\n // A grammar constraints object\n this.constraints = {\n fullFormBased: false, // True this inflection stores and requires to use a full form of a word\n suffixBased: false, // True if only suffix is enough to identify this inflection\n obligatoryMatches: [], // Names of features that should be matched in order to include a form or suffix to an inflection table\n optionalMatches: [] // Names of features that will be recorded but are not important for inclusion of a form or suffix to an inflection table\n }\n\n // Suffix may not be present in every word. If missing, it will be set to null.\n this.suffix = suffix\n\n // Prefix may not be present in every word. If missing, it will be set to null.\n this.prefix = prefix\n\n // Example may not be provided\n this.example = example\n }\n\n get form () {\n let form, prefix, suffix, divider, stem\n\n stem = this.stem ? this.stem : ''\n divider = this.stem ? ' - ' : ''\n\n if (this.model.direction === Constants.LANG_DIR_RTL) {\n prefix = this.prefix ? divider + this.prefix : ''\n suffix = this.suffix ? this.suffix + divider : ''\n\n form = suffix + stem + prefix\n } else {\n prefix = this.prefix ? this.prefix + divider : ''\n suffix = this.suffix ? divider + this.suffix : ''\n\n form = prefix + stem + suffix\n }\n\n return form\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n /**\n * Sets grammar properties based on inflection info\n */\n setConstraints () {\n if (this.model.hasOwnProperty('getInflectionConstraints')) {\n let constraintData = this.model.getInflectionConstraints(this)\n this.constraints = Object.assign(this.constraints, constraintData)\n }\n }\n\n compareWithWordDependsOnType (word, className, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n let value\n\n if (!this.constraints.irregularVerb) {\n value = this.constraints.suffixBased ? this.suffix : this.form\n } else {\n if (className === 'Suffix') {\n value = this.suffix\n } else {\n value = this[Feature.types.fullForm] ? this[Feature.types.fullForm].value : this.form\n }\n }\n\n return normalize\n ? model.normalizeWord(value) === model.normalizeWord(word)\n : value === word\n }\n\n compareWithWord (word, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n const value = this.constraints.suffixBased ? this.suffix : this.form\n return normalize\n ? model.normalizeWord(value) === model.normalizeWord(word)\n : value === word\n }\n\n /**\n * Check to see if the supplied inflection can disambiguate this one\n * @param {Inflection} infl Inflection object to be used for disambiguation\n */\n disambiguatedBy (infl) {\n let matched = true\n // an inflection can only be disambiguated by its features\n if (this.features.length === 0 || infl.features.length === 0) {\n matched = false\n }\n // the supplied inflection can be less specific but not more\n if (infl.features.length > this.features.length) {\n matched = false\n }\n for (let feature of infl.features) {\n if (!this[feature] || !this[feature].isEqual(infl[feature])) {\n matched = false\n break\n }\n }\n return matched\n }\n\n static readObject (jsonObject) {\n let inflection =\n new Inflection(\n jsonObject.stem, jsonObject.languageCode, jsonObject.suffix, jsonObject.prefix, jsonObject.example)\n inflection.languageID = LMF.getLanguageIdFromCode(inflection.languageCode)\n return inflection\n }\n\n /**\n * @deprecated Use `addFeature` instead\n * Sets a grammatical feature in an inflection. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n console.warn(`Please use \"addFeature\" instead.`)\n if (!data) {\n throw new Error('Inflection feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n let type = data[0].type\n this[type] = []\n for (let element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('Inflection feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Language \"${element.languageID.toString()}\" of a feature does not match\n a language \"${this.languageID.toString()}\" of an Inflection object.`)\n }\n\n this[type].push(element)\n this.features.add(type)\n }\n }\n\n /**\n * Sets a grammatical feature of an inflection. Feature is stored in a `feature.type` property.\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this[feature.type] = feature\n this.features.add(feature.type)\n }\n\n /**\n * Sets multiple grammatical features of an inflection.\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error(`Features must be in an array`)\n }\n\n for (let feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Checks whether an inflection has a feature with `featureName` name and `featureValue` value\n * @param {string} featureName - A name of a feature\n * @param {string} featureValue - A value of a feature\n * @return {boolean} True if an inflection contains a feature, false otherwise\n */\n hasFeatureValue (featureName, featureValue) {\n if (this.hasOwnProperty(featureName)) {\n return this[featureName].values.includes(featureValue)\n }\n return false\n }\n}\nexport default Inflection\n","class InflectionGroup {\n /**\n * A group of inflections or groups of inflections\n *\n * @param {InflectionGroupingKey} groupingKey features of the inflections in the group\n * @param {Inflection[]|InflectionGroup[]} inflections array of Inflections or InflectionGroups in this group\n */\n constructor (groupingKey, inflections = [], sortKey = null) {\n this.groupingKey = groupingKey\n this.inflections = inflections\n }\n\n /**\n * Add an Inflection or InflectionGroup to the group\n * @param {Inflection|InflectionGroup} inflection\n */\n append (inflection) {\n this.inflections.push(inflection)\n }\n}\nexport default InflectionGroup\n","import Feature from './feature.js'\n\nclass InflectionGroupingKey {\n /**\n * @constructor\n * @param {Inflection} infl inflection with features which are used as a grouping key\n * @param {string[]} features array of feature names which are used as the key\n * @param {Object} extras extra property name and value pairs used in the key\n */\n constructor (infl, features, extras = {}) {\n for (let feature of features) {\n this[feature] = infl[feature]\n }\n Object.assign(this, extras)\n }\n\n /**\n * checks if a feature with a specific value\n * is included in the grouping key\n * @returns {boolean} true if found, false if not\n */\n hasFeatureValue (feature, value) {\n if (this.hasOwnProperty(feature)) {\n return this[feature].values.includes(value)\n }\n return false\n }\n\n /**\n * Return this key as a string\n * @returns {string} string representation of the key\n */\n toString () {\n let values = []\n for (let prop of Object.getOwnPropertyNames(this).sort()) {\n // A prop can be either a Feature object, or a one of the extras of a string type\n let value = (this[prop] instanceof Feature) ? this[prop].values.sort().join(',') : this[prop]\n values.push(value)\n }\n return values.join(' ')\n }\n}\n\nexport default InflectionGroupingKey\n","import * as Constants from './constants.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Feature from './feature.js'\nimport FeatureType from './feature_type.js'\nimport InflectionGroupingKey from './inflection_grouping_key.js'\nimport InflectionGroup from './inflection_group.js'\n\n/**\n * @class LanguageModel is the base class for language-specific behavior\n */\nclass LanguageModel {\n constructor () {\n // This is just to avoid JavaScript Standard error on `context_backward` getter name. Don't need a constructor otherwise\n // TODO: `contextBackward` shall be used instead of `context_backward` wherever it is used\n this.context_backward = LanguageModel.contextBackward\n }\n\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n /**\n * @deprecated\n */\n get contextForward () {\n console.warn(`Please use static \"contextForward\" instead`)\n return this.constructor.contextForward\n }\n\n /**\n * @deprecated\n */\n get contextBackward () {\n console.warn(`Please use static \"contextBackward\" instead`)\n return this.constructor.contextBackward\n }\n\n /**\n * @deprecated\n */\n get direction () {\n console.warn(`Please use static \"direction\" instead`)\n return this.constructor.direction\n }\n\n /**\n * @deprecated\n */\n get baseUnit () {\n console.warn(`Please use static \"baseUnit\" instead`)\n return this.constructor.baseUnit\n }\n\n /**\n * @deprecated\n */\n get features () {\n console.warn(`Please use individual \"getFeatureType\" or static \"features\" instead`)\n return this.constructor.features\n }\n\n /**\n * Returns a list of names of feature types that are defined in a language model.\n * @return {string[]} Names of features that are defined in a model.\n */\n static get featureNames () {\n return this.featureValues.keys()\n }\n\n /**\n * Returns a feature a `featureType` name that is defined for a language. It does not create a new Feature\n * object instance. It returns the one defined in a language model. To get a new instance of a Feature\n * object, use `getFeature` instead.\n * If no feature of `featureType` is defined in a language model, throws an error.\n * @param {string} featureType - A feature type name.\n * @return {Feature} A feature object of requested type.\n */\n static typeFeature (featureType) {\n if (this.typeFeatures.has(featureType)) {\n return this.typeFeatures.get(featureType)\n } else {\n throw new Error(`Type feature \"${featureType}\" is not defined within \"${this}\"`)\n }\n }\n\n /**\n * Returns a map with Feature objects of all features defined in a language. Use this method to get all\n * Feature objects defined in a language model.\n * @return {Map} Feature objects for all features defined within a language in a Map object. The key is\n * a feature type (a string), and the value is a Feature object.\n */\n static get typeFeatures () {\n console.warn(`This getter must be defined in a descendant class`)\n }\n\n static get features () {\n let features = {}\n for (const featureName of this.featureNames) {\n features[featureName] = this.getFeature(featureName)\n }\n return features\n }\n\n static get languageID () {\n return Constants.LANG_UNDEFINED\n }\n\n static get languageCode () {\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Returns an array of language codes that represents the language.\n * @return {String[]} An array of language codes that matches the language.\n */\n static get languageCodes () {\n return []\n }\n\n static get codes () {\n console.warn(`Use static \"languageCodes\" instead`)\n return this.languageCodes\n }\n\n /**\n * @deprecated\n * @return {String[]}\n */\n get codes () {\n console.warn(`Please use a static version of \"codes\" instead`)\n return this.constructor.languageCodes\n }\n\n /**\n * @deprecated\n * @return {string}\n */\n toCode () {\n console.warn(`Please use a static \"languageCode\" instead`)\n return this.constructor.languageCode\n }\n\n /**\n * @deprecated\n * @return {string}\n */\n static toCode () {\n console.warn(`Please use a static \"languageCode\" instead`)\n return this.languageCode\n }\n\n /**\n * Return a list of feature values that are allowed for each feature type\n * @return {Map}\n */\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n [\n Feature.types.part,\n [\n Constants.POFS_ADVERB,\n Constants.POFS_ADVERBIAL,\n Constants.POFS_ADJECTIVE,\n Constants.POFS_ARTICLE,\n Constants.POFS_CONJUNCTION,\n Constants.POFS_EXCLAMATION,\n Constants.POFS_INTERJECTION,\n Constants.POFS_NOUN,\n Constants.POFS_NUMERAL,\n Constants.POFS_PARTICLE,\n Constants.POFS_PREFIX,\n Constants.POFS_PREPOSITION,\n Constants.POFS_PRONOUN,\n Constants.POFS_SUFFIX,\n Constants.POFS_SUPINE,\n Constants.POFS_VERB,\n Constants.POFS_VERB_PARTICIPLE\n ]\n ],\n [\n Feature.types.gender,\n [\n Constants.GEND_MASCULINE,\n Constants.GEND_FEMININE,\n Constants.GEND_NEUTER\n ]\n ],\n [\n Feature.types.type,\n [\n Constants.TYPE_REGULAR,\n Constants.TYPE_IRREGULAR\n ]\n ],\n [\n Feature.types.person,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.age,\n []\n ],\n [\n Feature.types.area,\n []\n ],\n [\n Feature.types.source,\n []\n ],\n [\n Feature.types.frequency,\n []\n ],\n [\n Feature.types.geo,\n []\n ],\n [\n Feature.types.pronunciation,\n []\n ],\n [\n Feature.types.kind,\n []\n ],\n [\n Feature.types.comparison,\n []\n ],\n [\n Feature.types.morph,\n []\n ],\n [\n Feature.types.stemtype,\n []\n ],\n [\n Feature.types.derivtype,\n []\n ]\n ])\n }\n\n /**\n * @deprecated\n * @return {symbol} Returns a language ID\n */\n static get sourceLanguage () {\n console.warn(`Please use languageID directly`)\n return this.languageID\n }\n\n /**\n * @deprecated\n * @return {symbol} Returns a language ID\n */\n get sourceLanguage () {\n console.warn(`Please use languageID directly`)\n return this.constructor.languageID\n }\n\n /**\n * @deprecated\n * @param name\n * @return {FeatureType}\n */\n static getFeatureType (name) {\n console.warn('Please use getFeature instead')\n let featureValues = this.featureValues\n if (featureValues.has(name)) {\n return new FeatureType(name, featureValues.get(name), this.languageID)\n } else {\n throw new Error(`Feature \"${name}\" is not defined`)\n }\n }\n\n /**\n * Returns a new instance of a feature with `featureType`. It uses a feature defined in a language model\n * as a master.\n * @param {string} featureType - A name of a feature type.\n * @return {Feature} - A newly created Feature object.\n */\n static getFeature (featureType) {\n let featureValues = this.featureValues // To cache the values\n if (featureValues.has(featureType)) {\n let allowedValues = featureValues.get(featureType)\n return new Feature(featureType, allowedValues, this.languageID, 1, allowedValues)\n } else {\n throw new Error(`Feature \"${featureType}\" is not defined`)\n }\n }\n\n _initializeFeatures () {\n let features = {}\n for (const featureName of this.constructor.featureValues.keys()) {\n features[featureName] = this.constructor.getFeature(featureName)\n }\n return features\n }\n\n /**\n * @deprecated\n */\n grammarFeatures () {\n console.warn(`Please use a static version of \"grammarFeatures\" instead`)\n return this.constructor.grammarFeatures()\n }\n\n /**\n * Identify the morphological features which should be linked to a grammar.\n * @returns {String[]} Array of Feature types\n */\n static grammarFeatures () {\n return []\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Check to see if the supplied language code is supported by this tool\n * @param {string} code the language code\n * @returns true if supported false if not\n * @type Boolean\n */\n static supportsLanguage (code) {\n return this.languageCodes.includes[code]\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {string} word the source word\n * @returns the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type String\n */\n static normalizeWord (word) {\n return word\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n return []\n }\n\n alternateWordEncodings (word, preceding, following, encoding) {\n console.warn(`Please use static \"alternateWordEncodings\" instead`)\n return this.constructor.alternateWordEncodings(word, preceding, following, encoding)\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return '.,;:!?\\'\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * @deprecated\n * @return {String}\n */\n getPunctuation () {\n console.warn(`Please use a static version of \"getPunctuation\"`)\n return this.constructor.getPunctuation()\n }\n\n toString () {\n return String(this.constructor.languageCode)\n }\n\n isEqual (model) {\n return LanguageModelFactory.compareLanguages(this.languageID, model.languageID)\n }\n\n /*\n There are two types of language identificators: language IDs and language code. Language ID is a symbol constant\n defined in constants.js, such as LANG_LATIN or LANG_GREEK. Language code is a string containing (usually)\n a three-letter language codes such as 'lat' or 'la' for latin. There can be multiple language codes that identify\n the same language, but there is only one unique language ID for each language.\n */\n\n /**\n * Checks whether a language has a particular language code in its list of codes\n * @param {String} languageCode - A language code to check\n * @return {boolean} Whether this language code exists in a language code list\n */\n static hasCode (languageCode) {\n if (this.isLanguageCode(languageCode)) {\n return this.languageCodes.includes(languageCode)\n } else {\n throw new Error(`Format of a \"${languageCode}\" is incorrect`)\n }\n }\n\n /**\n * Tests wither a provided language identificator is a language ID.\n * @param {Symbol | string} language - A language identificator, either a Symbol or a string language code.\n * @return {boolean} True if language identificator provided is a language ID.\n */\n static isLanguageID (language) {\n return (typeof language === 'symbol')\n }\n\n /**\n * Tests wither a provided language identificator is a language code.\n * @param {Symbol | string} language - A language identificator, either a Symbol or a string language code.\n * @return {boolean} - True if language identificator provided is a language code.\n */\n static isLanguageCode (language) {\n return !LanguageModel.isLanguageID(language)\n }\n\n /**\n * @deprecated\n * @param node\n */\n canInflect (node) {\n console.warn(`Please use a static version of \"canInflect\" instead`)\n return this.constructor.canInflect(node)\n }\n\n /**\n * Groups a set of inflections according to a language-specific display paradigm\n * The default groups according to the following logic:\n * 1. groups of groups with unique stem, prefix, suffix, part of speech, declension, dialect and comparison\n * 2. groups of those groups with unique\n * number, if it's an inflection with a grammatical case\n * tense, if it's an inflection with tense but no case (i.e. a verb)\n * verbs without tense or case\n * adverbs\n * everything else\n * 3. groups of those groups with unique voice and tense\n * 4. groups of inflections with unique gender, person, mood, and sort\n */\n static groupInflectionsForDisplay (inflections) {\n let grouped = new Map()\n let aggregated = this.aggregateInflectionsForDisplay(inflections)\n\n // group inflections by part of speech\n for (let infl of aggregated) {\n let groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.part, Feature.types.declension, Feature.types.dialect, Feature.types.comparison],\n {\n prefix: infl.prefix,\n suffix: infl.suffix,\n stem: infl.stem\n }\n )\n let groupingKeyStr = groupingKey.toString()\n if (grouped.has(groupingKeyStr)) {\n grouped.get(groupingKeyStr).append(infl)\n } else {\n grouped.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n\n // iterate through each group key to group the inflections in that group\n for (let kv of grouped) {\n let inflgrp = new Map()\n for (let infl of kv[1].inflections) {\n let keyprop\n let isCaseInflectionSet = false\n if (infl[Feature.types.grmCase]) {\n // grouping on number if case is defined\n keyprop = Feature.types.number\n isCaseInflectionSet = true\n } else if (infl[Feature.types.tense]) {\n // grouping on tense if tense is defined but not case\n keyprop = Feature.types.tense\n } else if (infl[Feature.types.part] === Constants.POFS_VERB) {\n // grouping on no case or tense but a verb\n keyprop = Feature.types.part\n } else if (infl[Feature.types.part] === Constants.POFS_ADVERB) {\n keyprop = Feature.types.part\n // grouping on adverbs without case or tense\n } else {\n keyprop = 'misc'\n // grouping on adverbs without case or tense\n // everything else\n }\n let groupingKey = new InflectionGroupingKey(infl, [keyprop], {isCaseInflectionSet: isCaseInflectionSet})\n let groupingKeyStr = groupingKey.toString()\n if (inflgrp.has(groupingKeyStr)) {\n inflgrp.get(groupingKeyStr).append(infl)\n } else {\n inflgrp.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n // inflgrp is now a map of groups of inflections grouped by\n // inflections with number\n // inflections without number but with tense\n // inflections of verbs without tense\n // inflections of adverbs\n // everything else\n // iterate through each inflection group key to group the inflections in that group by tense and voice\n for (let kv of inflgrp) {\n let nextGroup = new Map()\n let sortOrder = new Map()\n for (let infl of kv[1].inflections) {\n let sortkey = infl[Feature.types.grmCase] ? Math.max(infl[Feature.types.grmCase].items.map(f => f.sortOrder)) : 1\n let groupingKey = new InflectionGroupingKey(infl, [Feature.types.tense, Feature.types.voice])\n let groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl], sortkey))\n sortOrder.set(groupingKeyStr, sortkey)\n }\n }\n kv[1].inflections = []\n let sortedKeys = Array.from(nextGroup.keys()).sort(\n (a, b) => {\n let orderA = sortOrder.get(a)\n let orderB = sortOrder.get(b)\n return orderA > orderB ? -1 : orderB > orderA ? 1 : 0\n }\n )\n for (let groupkey of sortedKeys) {\n kv[1].inflections.push(nextGroup.get(groupkey))\n }\n }\n\n // inflgrp is now a Map of groups of groups of inflections\n\n for (let kv of inflgrp) {\n let groups = kv[1]\n for (let group of groups.inflections) {\n let nextGroup = new Map()\n for (let infl of group.inflections) {\n // set key is case comp gend pers mood sort\n let groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.grmCase, Feature.types.comparison, Feature.types.gender, Feature.types.number, Feature.types.person,\n Feature.types.tense, Feature.types.mood, Feature.types.voice])\n let groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n group.inflections = Array.from(nextGroup.values()) // now a group of inflection groups\n }\n }\n kv[1].inflections = Array.from(inflgrp.values())\n }\n return Array.from(grouped.values())\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n * @param {Inflection[]} inflections an array of inflections\n * @return Inflection[] the aggregated inflections\n */\n static aggregateInflectionsForDisplay (inflections) {\n // default is just to do nothing\n return inflections\n }\n\n /**\n * @deprecated\n * @param inflections\n * @return {*}\n */\n groupInflectionsForDisplay (inflections) {\n console.warn(`Please use a static version of \"groupInflectionsForDisplay\" instead`)\n return this.constructor.groupInflectionsForDisplay(inflections)\n }\n}\n\nexport default LanguageModel\n","import LanguageModel from './language_model.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport * as Constants from './constants.js'\n\nconst MODELS = new Map([\n [ Constants.STR_LANG_CODE_LA, LatinLanguageModel ],\n [ Constants.STR_LANG_CODE_LAT, LatinLanguageModel ],\n [ Constants.STR_LANG_CODE_GRC, GreekLanguageModel ],\n [ Constants.STR_LANG_CODE_ARA, ArabicLanguageModel ],\n [ Constants.STR_LANG_CODE_AR, ArabicLanguageModel ],\n [ Constants.STR_LANG_CODE_PER, PersianLanguageModel ]\n])\n\nclass LanguageModelFactory {\n /**\n * Checks whether a language is supported\n * @param {string | symbol} language - Language as a language ID (symbol) or a language code (string)\n * @return {boolean} True if language is supported, false otherwise\n */\n static supportsLanguage (language) {\n language = (typeof language === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(language) : language\n return MODELS.has(language)\n }\n\n /**\n * Returns a constructor of language model for a specific language ID.\n * @param {symbol} languageID - A language ID of a desired language model.\n * @return {LanguageModel} A language model for a given language ID.\n */\n static getLanguageModel (languageID) {\n let languageCode = LanguageModelFactory.getLanguageCodeFromId(languageID)\n if (MODELS.has(languageCode)) {\n return MODELS.get(languageCode)\n } else {\n // A default value\n return LanguageModel\n }\n }\n\n static getLanguageForCode (code = null) {\n let Model = MODELS.get(code)\n if (Model) {\n return new Model()\n }\n // for now return a default Model\n // TODO may want to throw an error\n return new LanguageModel()\n }\n\n /**\n * Converts an ISO 639-3 language code to a language ID\n * @param {string} languageCode - An ISO 639-3 language code\n * @return {symbol | undefined} A language ID or undefined if language ID is not found\n */\n static getLanguageIdFromCode (languageCode) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.hasCode(languageCode)) {\n return languageModel.languageID\n }\n }\n // Noting found, return a Symbol with an undefined value (to keep return value type the same)\n return Constants.LANG_UNDEFINED\n }\n\n /**\n * Converts a language ID to an default ISO 639-3 language code for that language\n * @param {symbol} languageID - A language ID\n * @return {string | undefined} An ISO 639-3 language code or undefined if language code is not found\n */\n static getLanguageCodeFromId (languageID) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.languageID.toString() === languageID.toString()) {\n return languageModel.languageCode\n }\n }\n // Noting found, return a string with an undefined value (to keep return value type the same)\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Takes either a language ID or a language code and returns an object with both an ID and a code.\n * @param {string | symbol} language - Either a language ID (a Symbol) or a language code (a String).\n * @return {object} An object with the following properties:\n * {symbol} languageID\n * {string} languageCode\n */\n static getLanguageAttrs (language) {\n if (typeof language === 'symbol') {\n // `language` is a language ID\n return {\n languageID: language,\n languageCode: LanguageModelFactory.getLanguageCodeFromId(language)\n }\n } else {\n // `language` is a language code\n return {\n languageID: LanguageModelFactory.getLanguageIdFromCode(language),\n languageCode: language\n }\n }\n }\n\n /**\n * Compares two languages in either a language ID or a language code format. For this, does conversion of\n * language IDs to language code. Because fo this, it will work even for language IDs defined in\n * different modules\n * @param {string | symbol} languageA - Either a language ID (a symbol) or a language code (a string).\n * @param {string | symbol} languageB - Either a language ID (a symbol) or a language code (a string).\n * @return {boolean} True if languages are the same, false otherwise.\n */\n static compareLanguages (languageA, languageB) {\n languageA = (typeof languageA === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageA) : languageA\n languageB = (typeof languageB === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageB) : languageB\n return languageA === languageB\n }\n}\nexport default LanguageModelFactory\n","import LanguageModel from './language_model.js'\nimport Feature from './feature.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class LatinLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_LATIN }\n static get languageCode () { return Constants.STR_LANG_CODE_LAT }\n static get languageCodes () { return [Constants.STR_LANG_CODE_LA, Constants.STR_LANG_CODE_LAT] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_PERSONAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_RELATIVE,\n Constants.CLASS_INTERROGATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_ABLATIVE,\n Constants.CASE_LOCATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH,\n Constants.ORD_5TH\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_ACTIVE,\n Constants.VOICE_PASSIVE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_IMPERATIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_SUPINE,\n Constants.MOOD_GERUNDIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_INFINITIVE\n ]\n ],\n [\n Feature.types.conjugation,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) {\n this.initTypeFeatures()\n }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * @override LanguageModel#grammarFeatures\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.conjugation]\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {String} word the source word\n * @returns the normalized form of the word (Latin replaces accents and special chars)\n * @type String\n */\n static normalizeWord (word) {\n if (word) {\n word = word.replace(/[\\u00c0\\u00c1\\u00c2\\u00c3\\u00c4\\u0100\\u0102]/g, 'A')\n word = word.replace(/[\\u00c8\\u00c9\\u00ca\\u00cb\\u0112\\u0114]/g, 'E')\n word = word.replace(/[\\u00cc\\u00cd\\u00ce\\u00cf\\u012a\\u012c]/g, 'I')\n word = word.replace(/[\\u00d2\\u00d3\\u00d4\\u00df\\u00d6\\u014c\\u014e]/g, 'O')\n word = word.replace(/[\\u00d9\\u00da\\u00db\\u00dc\\u016a\\u016c]/g, 'U')\n word = word.replace(/[\\u00c6\\u01e2]/g, 'AE')\n word = word.replace(/[\\u0152]/g, 'OE')\n word = word.replace(/[\\u00e0\\u00e1\\u00e2\\u00e3\\u00e4\\u0101\\u0103]/g, 'a')\n word = word.replace(/[\\u00e8\\u00e9\\u00ea\\u00eb\\u0113\\u0115]/g, 'e')\n word = word.replace(/[\\u00ec\\u00ed\\u00ee\\u00ef\\u012b\\u012d\\u0129]/g, 'i')\n word = word.replace(/[\\u00f2\\u00f3\\u00f4\\u00f5\\u00f6\\u014d\\u014f]/g, 'o')\n word = word.replace(/[\\u00f9\\u00fa\\u00fb\\u00fc\\u016b\\u016d]/g, 'u')\n word = word.replace(/[\\u00e6\\u01e3]/g, 'ae')\n word = word.replace(/[\\u0153]/g, 'oe')\n }\n return word\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // Not implemented yet\n return []\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n * @param {Inflection} inflection - An inflection object\n * @return {Object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n let grammar = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if ([Constants.POFS_VERB, Constants.POFS_VERB_PARTICIPLE].includes(inflection[Feature.types.part].value)) {\n grammar.fullFormBased = true\n grammar.suffixBased = true\n } else if (inflection[Feature.types.part].value === Constants.POFS_PRONOUN) {\n grammar.fullFormBased = true\n } else {\n grammar.suffixBased = true\n }\n } else {\n console.warn(`Unable to set grammar: part of speech data is missing or is incorrect`, inflection[Feature.types.part])\n }\n\n return grammar\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport uuidv4 from 'uuid/v4'\n\n/**\n * Lemma, a canonical form of a word.\n */\nclass Lemma {\n /**\n * Initializes a Lemma object.\n * @param {string} word - A word.\n * @param {symbol | string} languageID - A language ID (symbol, please use this) or a language code of a word.\n * @param {string[]} principalParts - the principalParts of a lemma.\n * @param {Object} features - the grammatical features of a lemma.\n\n * @param {Translation} transaltions - translations from python service\n */\n constructor (word, languageID, principalParts = [], features = {}) {\n if (!word) {\n throw new Error('Word should not be empty.')\n }\n\n if (!languageID) {\n throw new Error('Language should not be empty.')\n }\n\n // Compatibility code for something providing languageCode instead of languageID\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(languageID))\n\n this.word = word\n this.principalParts = principalParts\n this.features = {}\n\n this.ID = uuidv4()\n }\n\n get language () {\n console.warn(`Please use \"languageID\" instead of \"language\"`)\n return this.languageCode\n }\n\n static readObject (jsonObject) {\n return new Lemma(jsonObject.word, jsonObject.language, jsonObject.principalParts, jsonObject.pronunciation)\n }\n\n /**\n * @deprecated Please use `addFeature` instead.\n * Sets a grammatical feature for a lemma. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n console.warn(`Please use \"addFeature\" instead`)\n if (!data) {\n throw new Error('feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n let type = data[0].type\n this.features[type] = []\n for (let element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error('Language \"' + element.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[type].push(element)\n }\n }\n\n /**\n * Sets a grammatical feature of a lemma. Feature is stored in a `feature.type` property.\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[feature.type] = feature\n }\n\n /**\n * Sets multiple grammatical features of a lemma.\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error(`Features must be in an array`)\n }\n\n for (let feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Sets a translation from python service.\n * @param {Translation} translation - A translation object\n */\n addTranslation (translation) {\n if (!translation) {\n throw new Error('translation data cannot be empty.')\n }\n\n if (translation.constructor.name !== 'Translation') {\n throw new Error('translation data must be a Translation object.')\n }\n\n this.translation = translation\n }\n\n /**\n * Test to see if two lemmas are full homonyms\n * @param {Lemma} lemma the lemma to compare\n * @return {Boolean} true or false\n */\n isFullHomonym (lemma) {\n // returns true if the word and part of speech match\n return this.word === lemma.word &&\n this.features[Feature.types.part] &&\n lemma.features[Feature.types.part] &&\n this.features[Feature.types.part].isEqual(lemma.features[Feature.types.part])\n }\n}\n\nexport default Lemma\n","import Lemma from './lemma.js'\r\nimport Inflection from './inflection.js'\r\nimport DefinitionSet from './definition-set'\r\nimport LMF from './language_model_factory'\r\n\r\n/**\r\n * A basic unit of lexical meaning. Contains a primary Lemma object, one or more Inflection objects\r\n * and a DefinitionSet\r\n */\r\nclass Lexeme {\r\n /**\r\n * Initializes a Lexeme object.\r\n * @param {Lemma} lemma - A lemma object.\r\n * @param {Inflection[]} inflections - An array of inflections.\r\n * @param {DefinitionSet} meaning - A set of definitions.\r\n */\r\n constructor (lemma, inflections, meaning = null) {\r\n if (!lemma) {\r\n throw new Error('Lemma should not be empty.')\r\n }\r\n\r\n if (!(lemma instanceof Lemma)) {\r\n throw new Error('Lemma should be of Lemma object type.')\r\n }\r\n\r\n if (!inflections) {\r\n throw new Error('Inflections data should not be empty.')\r\n }\r\n\r\n if (!Array.isArray(inflections)) {\r\n throw new Error('Inflection data should be provided in an array.')\r\n }\r\n\r\n for (let inflection of inflections) {\r\n if (!(inflection instanceof Inflection)) {\r\n throw new Error('All inflection data should be of Inflection object type.')\r\n }\r\n }\r\n\r\n if (meaning !== null && !(meaning instanceof DefinitionSet)) {\r\n throw new Error('Meaning should be of DefinitionSet object type.')\r\n }\r\n\r\n this.lemma = lemma\r\n this.altLemmas = []\r\n this.inflections = []\r\n inflections.forEach(i => { this.addInflection(i) })\r\n this.meaning = meaning || new DefinitionSet(this.lemma.word, this.lemma.languageID)\r\n this.disambiguated = false\r\n }\r\n\r\n /**\r\n * add an inflection to the lexeme\r\n * @param {Inflection} inflection\r\n */\r\n addInflection (inflection) {\r\n inflection.lemma = this.lemma\r\n this.inflections.push(inflection)\r\n }\r\n\r\n /**\r\n * add an alternative lemma to the lexeme\r\n * @param {Lemma} lemma\r\n */\r\n addAltLemma (lemma) {\r\n this.altLemmas.push(lemma)\r\n }\r\n\r\n /**\r\n * test to see if a lexeme is populated with meaningful data\r\n * Returns true if any of these are true:\r\n * its lemma has morphological features defined\r\n * it has one ore more definitions supplied in the meaning\r\n * it has one ore more inflections\r\n * @return {boolean}\r\n */\r\n isPopulated () {\r\n return Object.entries(this.lemma.features).length > 0 ||\r\n !this.meaning.isEmpty() ||\r\n this.inflections.length > 0\r\n }\r\n\r\n /**\r\n * disambiguate with another supplied Lexeme\r\n * @param {Lexeme} lexeme the lexeme to be disambiguated\r\n * @param {Lexeme} disambiguator the lexeme to use to disambiguate\r\n * @return {Lexeme} a new lexeme, if disamibugation was successful disambiguated flag will be set on it\r\n */\r\n static disambiguate (lexeme, disambiguator) {\r\n let newLexeme = new Lexeme(lexeme.lemma, lexeme.inflections, lexeme.meaning)\r\n if (lexeme.lemma.isFullHomonym(disambiguator.lemma) && disambiguator.inflections.length > 0) {\r\n newLexeme.disambiguated = true\r\n let keepInflections = []\r\n // iterate through this lexemes inflections and keep only thoes that are disambiguatedBy by the supplied lexeme's inflection\r\n // we want to keep the original inflections rather than just replacing them\r\n // because the original inflections may have more information\r\n for (let inflection of newLexeme.inflections) {\r\n for (let disambiguatorInflection of disambiguator.inflections) {\r\n if (inflection.disambiguatedBy(disambiguatorInflection)) {\r\n keepInflections.push(inflection)\r\n }\r\n }\r\n }\r\n newLexeme.inflections = keepInflections\r\n // if we couldn't match any existing inflections, then add the disambiguated one\r\n if (newLexeme.inflections.length === 0) {\r\n for (let infl of disambiguator.inflections) {\r\n newLexeme.addInflection(infl)\r\n }\r\n }\r\n }\r\n return newLexeme\n }\r\n\r\n getGroupedInflections () {\r\n let lm = LMF.getLanguageModel(this.lemma.languageID)\r\n return lm.groupInflectionsForDisplay(this.inflections)\r\n }\r\n\r\n static readObject (jsonObject) {\r\n let lemma = Lemma.readObject(jsonObject.lemma)\r\n let inflections = []\r\n for (let inflection of jsonObject.inflections) {\r\n inflections.push(Inflection.readObject(inflection))\r\n }\r\n\r\n let lexeme = new Lexeme(lemma, inflections)\r\n lexeme.meaning = DefinitionSet.readObject(jsonObject.meaning)\r\n return lexeme\r\n }\r\n\r\n /**\r\n * Get a sort function for an array of lexemes which applies a primary and secondary\r\n * sort logic using the sort order specified for each feature. Sorts in descending order -\r\n * higher sort order means it should come first\r\n * @param {string} primary feature name to use as primary sort key\r\n * @param {string} secondary feature name to use as secondary sort key\r\n * @returns {Function} function which can be passed to Array.sort\r\n */\r\n static getSortByTwoLemmaFeatures (primary, secondary) {\r\n return (a, b) => {\r\n if ((a.lemma.features[primary] && b.lemma.features[primary]) ||\r\n (!a.lemma.features[primary] && !b.lemma.features[[primary]])) {\r\n let primarySort\r\n if (a.lemma.features[primary] && b.lemma.features[primary]) {\r\n // if both lemmas have the primary sort key, then sort\r\n primarySort = a.lemma.features[primary].compareTo(b.lemma.features[primary])\r\n } else {\r\n // if neither lemma has the primary sort key, then the primary sort is equal\r\n primarySort = 0\r\n }\r\n if (primarySort !== 0) {\r\n return primarySort\r\n } else if (a.lemma.features[secondary] && b.lemma.features[secondary]) {\r\n return a.lemma.features[secondary].compareTo(b.lemma.features[secondary])\r\n } else if (a.lemma.features[secondary] && !b.lemma.features[secondary]) {\r\n return -1\r\n } else if (!a.lemma.features[secondary] && b.lemma.features[secondary]) {\r\n return 1\r\n } else {\r\n // neither have the secondary sort key so they are equal\r\n return 0\r\n }\r\n } else if (a.lemma.features[primary] && !b.lemma.features[primary]) {\r\n return -1\r\n } else if (!a.lemma.features[primary] && b.lemma.features[primary]) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n }\r\n}\r\nexport default Lexeme\r\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class PersianLanguageModel is the lass for Persian specific behavior\n */\nexport default class PersianLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_PERSIAN }\n\n static get languageCode () { return Constants.STR_LANG_CODE_PER }\n\n static get languageCodes () { return [Constants.STR_LANG_CODE_PER, Constants.STR_LANG_CODE_FAS, Constants.STR_LANG_CODE_FA, Constants.STR_LANG_CODE_FA_IR] }\n\n static get contextForward () { return 0 }\n\n static get contextBackward () { return 0 }\n\n static get direction () { return Constants.LANG_DIR_RTL }\n\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // Not implemented yet\n return []\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n}\n","/**\n * An abstraction of an Alpheios resource provider\n */\nclass ResourceProvider {\n /**\n * @constructor\n * @param {string} uri - a unique resource identifier for this provider\n * @param {string} rights - rights text\n * @param {Map} rightsTranslations - optional map of translated rights text - keys should be language of text, values the text\n */\n constructor (uri = '', rights = '', rightsTranslations = new Map([['default', rights]])) {\n this.uri = uri\n this.rights = rightsTranslations\n if (!this.rights.has('default')) {\n this.rights.set('default', rights)\n }\n }\n\n /**\n * @return a string representation of the resource provider, in the default language\n */\n toString () {\n return this.rights.get('default')\n }\n\n /**\n * Produce a string representation of the resource provider, in the requested locale if available\n * @param {string} languageCode\n * @return a string representation of the resource provider, in the requested locale if available\n */\n toLocaleString (languageCode) {\n return this.rights.get(languageCode) || this.rights.get('default')\n }\n\n static getProxy (provider = null, target = {}) {\n return new Proxy(target, {\n get: function (target, name) {\n return name === 'provider' ? provider : target[name]\n }\n })\n }\n}\n\nexport default ResourceProvider\n","/**\n * stores a scope of lemma translations from python service\n * Contains a primary Lemma object\n */\nclass Translation {\n /**\n * Initializes a Translation object.\n * @param {Lemma} lemma - A lemma object.\n * @param [] meanings - A set of definitions.\n\n */\n constructor (lemma, languageCode, translations = []) {\n if (!lemma) {\n throw new Error('Lemma should not be empty.')\n }\n this.lemmaWord = lemma.word\n this.languageCode = languageCode\n this.glosses = translations\n }\n\n static readTranslationFromJSONList (lemma, languageCode, translationsList) {\n if (!translationsList || !Array.isArray(translationsList)) {\n throw new Error('Recieved not proper translation list', translationsList)\n }\n let curTranslations = translationsList.find(function (element) { return element.in === lemma.word })\n return new Translation(lemma, languageCode, curTranslations.translations)\n }\n\n static loadTranslations (lemma, languageCode, translationsList) {\n lemma.addTranslation(this.readTranslationFromJSONList(lemma, languageCode, translationsList))\n }\n}\nexport default Translation\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/alpheios-data-models.min.js b/dist/alpheios-data-models.min.js index e694065..2d28507 100644 --- a/dist/alpheios-data-models.min.js +++ b/dist/alpheios-data-models.min.js @@ -1 +1 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(window,function(){return function(e){var t={};function r(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,a){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(a,n,function(t){return e[t]}.bind(null,n));return a},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t,r){var a=r(1),n=r(2);e.exports=function(e,t,r){var u=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var i=(e=e||{}).random||(e.rng||a)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t)for(var o=0;o<16;++o)t[u+o]=i[o];return t||n(i)}},function(e,t){var r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(r){var a=new Uint8Array(16);e.exports=function(){return r(a),a}}else{var n=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n}}},function(e,t){for(var r=[],a=0;a<256;++a)r[a]=(a+256).toString(16).substr(1);e.exports=function(e,t){var a=t||0,n=r;return[n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]]].join("")}},function(e,t,r){"use strict";r.r(t);var a={};r.r(a),r.d(a,"LANG_UNIT_WORD",function(){return n}),r.d(a,"LANG_UNIT_CHAR",function(){return u}),r.d(a,"LANG_DIR_LTR",function(){return i}),r.d(a,"LANG_DIR_RTL",function(){return o}),r.d(a,"LANG_UNDEFINED",function(){return s}),r.d(a,"LANG_LATIN",function(){return l}),r.d(a,"LANG_GREEK",function(){return c}),r.d(a,"LANG_ARABIC",function(){return f}),r.d(a,"LANG_PERSIAN",function(){return d}),r.d(a,"STR_LANG_CODE_UNDEFINED",function(){return g}),r.d(a,"STR_LANG_CODE_LAT",function(){return p}),r.d(a,"STR_LANG_CODE_LA",function(){return h}),r.d(a,"STR_LANG_CODE_GRC",function(){return m}),r.d(a,"STR_LANG_CODE_ARA",function(){return _}),r.d(a,"STR_LANG_CODE_AR",function(){return E}),r.d(a,"STR_LANG_CODE_FAS",function(){return I}),r.d(a,"STR_LANG_CODE_PER",function(){return y}),r.d(a,"STR_LANG_CODE_FA_IR",function(){return A}),r.d(a,"STR_LANG_CODE_FA",function(){return v}),r.d(a,"POFS_ADJECTIVE",function(){return F}),r.d(a,"POFS_ADVERB",function(){return S}),r.d(a,"POFS_ADVERBIAL",function(){return w}),r.d(a,"POFS_ARTICLE",function(){return C}),r.d(a,"POFS_CONJUNCTION",function(){return D}),r.d(a,"POFS_EXCLAMATION",function(){return b}),r.d(a,"POFS_INTERJECTION",function(){return L}),r.d(a,"POFS_NOUN",function(){return T}),r.d(a,"POFS_NOUN_PROPER",function(){return O}),r.d(a,"POFS_NUMERAL",function(){return V}),r.d(a,"POFS_PARTICLE",function(){return N}),r.d(a,"POFS_PREFIX",function(){return R}),r.d(a,"POFS_PREPOSITION",function(){return P}),r.d(a,"POFS_PRONOUN",function(){return M}),r.d(a,"POFS_SUFFIX",function(){return x}),r.d(a,"POFS_GERUNDIVE",function(){return U}),r.d(a,"POFS_SUPINE",function(){return j}),r.d(a,"POFS_VERB",function(){return G}),r.d(a,"POFS_VERB_PARTICIPLE",function(){return B}),r.d(a,"GEND_MASCULINE",function(){return k}),r.d(a,"GEND_FEMININE",function(){return W}),r.d(a,"GEND_NEUTER",function(){return H}),r.d(a,"GEND_COMMON",function(){return q}),r.d(a,"GEND_ANIMATE",function(){return K}),r.d(a,"GEND_INANIMATE",function(){return $}),r.d(a,"GEND_PERSONAL_MASCULINE",function(){return z}),r.d(a,"GEND_ANIMATE_MASCULINE",function(){return J}),r.d(a,"GEND_INANIMATE_MASCULINE",function(){return X}),r.d(a,"COMP_POSITIVE",function(){return Q}),r.d(a,"COMP_COMPARITIVE",function(){return Y}),r.d(a,"COMP_SUPERLATIVE",function(){return Z}),r.d(a,"CASE_ABESSIVE",function(){return ee}),r.d(a,"CASE_ABLATIVE",function(){return te}),r.d(a,"CASE_ABSOLUTIVE",function(){return re}),r.d(a,"CASE_ACCUSATIVE",function(){return ae}),r.d(a,"CASE_ADDIRECTIVE",function(){return ne}),r.d(a,"CASE_ADELATIVE",function(){return ue}),r.d(a,"CASE_ADESSIVE",function(){return ie}),r.d(a,"CASE_ADVERBIAL",function(){return oe}),r.d(a,"CASE_ALLATIVE",function(){return se}),r.d(a,"CASE_ANTESSIVE",function(){return le}),r.d(a,"CASE_APUDESSIVE",function(){return ce}),r.d(a,"CASE_AVERSIVE",function(){return fe}),r.d(a,"CASE_BENEFACTIVE",function(){return de}),r.d(a,"CASE_CARITIVE",function(){return ge}),r.d(a,"CASE_CAUSAL",function(){return pe}),r.d(a,"CASE_CAUSAL_FINAL",function(){return he}),r.d(a,"CASE_COMITATIVE",function(){return me}),r.d(a,"CASE_DATIVE",function(){return _e}),r.d(a,"CASE_DELATIVE",function(){return Ee}),r.d(a,"CASE_DIRECT",function(){return Ie}),r.d(a,"CASE_DISTRIBUTIVE",function(){return ye}),r.d(a,"CASE_DISTRIBUTIVE_TEMPORAL",function(){return Ae}),r.d(a,"CASE_ELATIVE",function(){return ve}),r.d(a,"CASE_ERGATIVE",function(){return Fe}),r.d(a,"CASE_ESSIVE",function(){return Se}),r.d(a,"CASE_ESSIVE_FORMAL",function(){return we}),r.d(a,"CASE_ESSIVE_MODAL",function(){return Ce}),r.d(a,"CASE_EQUATIVE",function(){return De}),r.d(a,"CASE_EVITATIVE",function(){return be}),r.d(a,"CASE_EXESSIVE",function(){return Le}),r.d(a,"CASE_FINAL",function(){return Te}),r.d(a,"CASE_FORMAL",function(){return Oe}),r.d(a,"CASE_GENITIVE",function(){return Ve}),r.d(a,"CASE_ILLATIVE",function(){return Ne}),r.d(a,"CASE_INELATIVE",function(){return Re}),r.d(a,"CASE_INESSIVE",function(){return Pe}),r.d(a,"CASE_INSTRUCTIVE",function(){return Me}),r.d(a,"CASE_INSTRUMENTAL",function(){return xe}),r.d(a,"CASE_INSTRUMENTAL_COMITATIVE",function(){return Ue}),r.d(a,"CASE_INTRANSITIVE",function(){return je}),r.d(a,"CASE_LATIVE",function(){return Ge}),r.d(a,"CASE_LOCATIVE",function(){return Be}),r.d(a,"CASE_MODAL",function(){return ke}),r.d(a,"CASE_MULTIPLICATIVE",function(){return We}),r.d(a,"CASE_NOMINATIVE",function(){return He}),r.d(a,"CASE_PARTITIVE",function(){return qe}),r.d(a,"CASE_PEGATIVE",function(){return Ke}),r.d(a,"CASE_PERLATIVE",function(){return $e}),r.d(a,"CASE_POSSESSIVE",function(){return ze}),r.d(a,"CASE_POSTELATIVE",function(){return Je}),r.d(a,"CASE_POSTDIRECTIVE",function(){return Xe}),r.d(a,"CASE_POSTESSIVE",function(){return Qe}),r.d(a,"CASE_POSTPOSITIONAL",function(){return Ye}),r.d(a,"CASE_PREPOSITIONAL",function(){return Ze}),r.d(a,"CASE_PRIVATIVE",function(){return et}),r.d(a,"CASE_PROLATIVE",function(){return tt}),r.d(a,"CASE_PROSECUTIVE",function(){return rt}),r.d(a,"CASE_PROXIMATIVE",function(){return at}),r.d(a,"CASE_SEPARATIVE",function(){return nt}),r.d(a,"CASE_SOCIATIVE",function(){return ut}),r.d(a,"CASE_SUBDIRECTIVE",function(){return it}),r.d(a,"CASE_SUBESSIVE",function(){return ot}),r.d(a,"CASE_SUBELATIVE",function(){return st}),r.d(a,"CASE_SUBLATIVE",function(){return lt}),r.d(a,"CASE_SUPERDIRECTIVE",function(){return ct}),r.d(a,"CASE_SUPERESSIVE",function(){return ft}),r.d(a,"CASE_SUPERLATIVE",function(){return dt}),r.d(a,"CASE_SUPPRESSIVE",function(){return gt}),r.d(a,"CASE_TEMPORAL",function(){return pt}),r.d(a,"CASE_TERMINATIVE",function(){return ht}),r.d(a,"CASE_TRANSLATIVE",function(){return mt}),r.d(a,"CASE_VIALIS",function(){return _t}),r.d(a,"CASE_VOCATIVE",function(){return Et}),r.d(a,"MOOD_ADMIRATIVE",function(){return It}),r.d(a,"MOOD_COHORTATIVE",function(){return yt}),r.d(a,"MOOD_CONDITIONAL",function(){return At}),r.d(a,"MOOD_DECLARATIVE",function(){return vt}),r.d(a,"MOOD_DUBITATIVE",function(){return Ft}),r.d(a,"MOOD_ENERGETIC",function(){return St}),r.d(a,"MOOD_EVENTIVE",function(){return wt}),r.d(a,"MOOD_GENERIC",function(){return Ct}),r.d(a,"MOOD_GERUNDIVE",function(){return Dt}),r.d(a,"MOOD_HYPOTHETICAL",function(){return bt}),r.d(a,"MOOD_IMPERATIVE",function(){return Lt}),r.d(a,"MOOD_INDICATIVE",function(){return Tt}),r.d(a,"MOOD_INFERENTIAL",function(){return Ot}),r.d(a,"MOOD_INFINITIVE",function(){return Vt}),r.d(a,"MOOD_INTERROGATIVE",function(){return Nt}),r.d(a,"MOOD_JUSSIVE",function(){return Rt}),r.d(a,"MOOD_NEGATIVE",function(){return Pt}),r.d(a,"MOOD_OPTATIVE",function(){return Mt}),r.d(a,"MOOD_PARTICIPLE",function(){return xt}),r.d(a,"MOOD_PRESUMPTIVE",function(){return Ut}),r.d(a,"MOOD_RENARRATIVE",function(){return jt}),r.d(a,"MOOD_SUBJUNCTIVE",function(){return Gt}),r.d(a,"MOOD_SUPINE",function(){return Bt}),r.d(a,"NUM_SINGULAR",function(){return kt}),r.d(a,"NUM_PLURAL",function(){return Wt}),r.d(a,"NUM_DUAL",function(){return Ht}),r.d(a,"NUM_TRIAL",function(){return qt}),r.d(a,"NUM_PAUCAL",function(){return Kt}),r.d(a,"NUM_SINGULATIVE",function(){return $t}),r.d(a,"NUM_COLLECTIVE",function(){return zt}),r.d(a,"NUM_DISTRIBUTIVE_PLURAL",function(){return Jt}),r.d(a,"NRL_CARDINAL",function(){return Xt}),r.d(a,"NRL_ORDINAL",function(){return Qt}),r.d(a,"NRL_DISTRIBUTIVE",function(){return Yt}),r.d(a,"NURL_NUMERAL_ADVERB",function(){return Zt}),r.d(a,"ORD_1ST",function(){return er}),r.d(a,"ORD_2ND",function(){return tr}),r.d(a,"ORD_3RD",function(){return rr}),r.d(a,"ORD_4TH",function(){return ar}),r.d(a,"ORD_5TH",function(){return nr}),r.d(a,"ORD_6TH",function(){return ur}),r.d(a,"ORD_7TH",function(){return ir}),r.d(a,"ORD_8TH",function(){return or}),r.d(a,"ORD_9TH",function(){return sr}),r.d(a,"TENSE_AORIST",function(){return lr}),r.d(a,"TENSE_FUTURE",function(){return cr}),r.d(a,"TENSE_FUTURE_PERFECT",function(){return fr}),r.d(a,"TENSE_IMPERFECT",function(){return dr}),r.d(a,"TENSE_PAST_ABSOLUTE",function(){return gr}),r.d(a,"TENSE_PERFECT",function(){return pr}),r.d(a,"TENSE_PLUPERFECT",function(){return hr}),r.d(a,"TENSE_PRESENT",function(){return mr}),r.d(a,"VKIND_TO_BE",function(){return _r}),r.d(a,"VKIND_COMPOUNDS_OF_TO_BE",function(){return Er}),r.d(a,"VKIND_TAKING_ABLATIVE",function(){return Ir}),r.d(a,"VKIND_TAKING_DATIVE",function(){return yr}),r.d(a,"VKIND_TAKING_GENITIVE",function(){return Ar}),r.d(a,"VKIND_TRANSITIVE",function(){return vr}),r.d(a,"VKIND_INTRANSITIVE",function(){return Fr}),r.d(a,"VKIND_IMPERSONAL",function(){return Sr}),r.d(a,"VKIND_DEPONENT",function(){return wr}),r.d(a,"VKIND_SEMIDEPONENT",function(){return Cr}),r.d(a,"VKIND_PERFECT_DEFINITE",function(){return Dr}),r.d(a,"VOICE_ACTIVE",function(){return br}),r.d(a,"VOICE_PASSIVE",function(){return Lr}),r.d(a,"VOICE_MEDIOPASSIVE",function(){return Tr}),r.d(a,"VOICE_IMPERSONAL_PASSIVE",function(){return Or}),r.d(a,"VOICE_MIDDLE",function(){return Vr}),r.d(a,"VOICE_ANTIPASSIVE",function(){return Nr}),r.d(a,"VOICE_REFLEXIVE",function(){return Rr}),r.d(a,"VOICE_RECIPROCAL",function(){return Pr}),r.d(a,"VOICE_CAUSATIVE",function(){return Mr}),r.d(a,"VOICE_ADJUTATIVE",function(){return xr}),r.d(a,"VOICE_APPLICATIVE",function(){return Ur}),r.d(a,"VOICE_CIRCUMSTANTIAL",function(){return jr}),r.d(a,"VOICE_DEPONENT",function(){return Gr}),r.d(a,"TYPE_IRREGULAR",function(){return Br}),r.d(a,"TYPE_REGULAR",function(){return kr}),r.d(a,"CLASS_PERSONAL",function(){return Wr}),r.d(a,"CLASS_REFLEXIVE",function(){return Hr}),r.d(a,"CLASS_POSSESSIVE",function(){return qr}),r.d(a,"CLASS_DEMONSTRATIVE",function(){return Kr}),r.d(a,"CLASS_RELATIVE",function(){return $r}),r.d(a,"CLASS_INTERROGATIVE",function(){return zr}),r.d(a,"CLASS_GENERAL_RELATIVE",function(){return Jr}),r.d(a,"CLASS_INDEFINITE",function(){return Xr}),r.d(a,"CLASS_INTENSIVE",function(){return Qr}),r.d(a,"CLASS_RECIPROCAL",function(){return Yr});const n=Symbol("word"),u=Symbol("char"),i=Symbol("ltr"),o=Symbol("rtl"),s=Symbol("undefined"),l=Symbol("latin"),c=Symbol("greek"),f=Symbol("arabic"),d=Symbol("persian"),g="undefined",p="lat",h="la",m="grc",_="ara",E="ar",I="fas",y="per",A="fa-IR",v="fa",F="adjective",S="adverb",w="adverbial",C="article",D="conjunction",b="exclamation",L="interjection",T="noun",O="proper noun",V="numeral",N="particle",R="prefix",P="preposition",M="pronoun",x="suffix",U="gerundive",j="supine",G="verb",B="verb participle",k="masculine",W="feminine",H="neuter",q="common",K="animate",$="inanimate",z="personal masculine",J="animate masculine",X="inanimate masculine",Q="positive",Y="comparative",Z="superlative",ee="abessive",te="ablative",re="absolutive",ae="accusative",ne="addirective",ue="adelative",ie="adessive",oe="adverbial",se="allative",le="antessive",ce="apudessive",fe="aversive",de="benefactive",ge="caritive",pe="causal",he="causal-final",me="comitative",_e="dative",Ee="delative",Ie="direct",ye="distributive",Ae="distributive-temporal",ve="elative",Fe="ergative",Se="essive",we="essive-formal",Ce="essive-modal",De="equative",be="evitative",Le="exessive",Te="final",Oe="formal",Ve="genitive",Ne="illative",Re="inelative",Pe="inessive",Me="instructive",xe="instrumental",Ue="instrumental-comitative",je="intransitive",Ge="lative",Be="locative",ke="modal",We="multiplicative",He="nominative",qe="partitive",Ke="pegative",$e="perlative",ze="possessive",Je="postelative",Xe="postdirective",Qe="postessive",Ye="postpositional",Ze="prepositional",et="privative",tt="prolative",rt="prosecutive",at="proximative",nt="separative",ut="sociative",it="subdirective",ot="subessive",st="subelative",lt="sublative",ct="superdirective",ft="superessive",dt="superlative",gt="suppressive",pt="temporal",ht="terminative",mt="translative",_t="vialis",Et="vocative",It="admirative",yt="cohortative",At="conditional",vt="declarative",Ft="dubitative",St="energetic",wt="eventive",Ct="generic",Dt="gerundive",bt="hypothetical",Lt="imperative",Tt="indicative",Ot="inferential",Vt="infinitive",Nt="interrogative",Rt="jussive",Pt="negative",Mt="optative",xt="participle",Ut="presumptive",jt="renarrative",Gt="subjunctive",Bt="supine",kt="singular",Wt="plural",Ht="dual",qt="trial",Kt="paucal",$t="singulative",zt="collective",Jt="distributive plural",Xt="cardinal",Qt="ordinal",Yt="distributive",Zt="numeral adverb",er="1st",tr="2nd",rr="3rd",ar="4th",nr="5th",ur="6th",ir="7th",or="8th",sr="9th",lr="aorist",cr="future",fr="future perfect",dr="imperfect",gr="past absolute",pr="perfect",hr="pluperfect",mr="present",_r="to be",Er="compounds of to be",Ir="taking ablative",yr="taking dative",Ar="taking genitive",vr="transitive",Fr="intransitive",Sr="impersonal",wr="deponent",Cr="semideponent",Dr="perfect definite",br="active",Lr="passive",Tr="mediopassive",Or="impersonal passive",Vr="middle",Nr="antipassive",Rr="reflexive",Pr="reciprocal",Mr="causative",xr="adjutative",Ur="applicative",jr="circumstantial",Gr="deponent",Br="irregular",kr="regular",Wr="personal",Hr="reflexive",qr="possessive",Kr="demonstrative",$r="relative",zr="interrogative",Jr="general relative",Xr="indefinite",Qr="intensive",Yr="reciprocal";class Definition{constructor(e,t,r,a){this.text=e,this.language=t,this.format=r,this.lemmaText=a}static readObject(e){return new Definition(e.text,e.language,e.format,e.lemmaText)}}var Zr=Definition;class definition_set_DefinitionSet{constructor(e,t){this.lemmaWord=e,this.languageID=t,this.shortDefs=[],this.fullDefs=[]}static readObject(e){let t=new definition_set_DefinitionSet(e.lemmaWord,e.languageID);for(let r of e.shortDefs)t.shortDefs.push(Zr.readObject(r));for(let r of e.fullDefs)t.fullDefs.push(Zr.readObject(r));return t}isEmpty(){return 0===this.shortDefs.length&&0===this.fullDefs.length}appendShortDefs(e){return e&&(Array.isArray(e)||(e=[e]),this.shortDefs=this.shortDefs.concat(e)),this.shortDefs}clearShortDefs(){this.shortDefs=[]}appendFullDefs(e){return e&&(Array.isArray(e)||(e=[e]),this.fullDefs=this.fullDefs.concat(e)),this.fullDefs}clearFullDefs(){this.fullDefs=[]}}var ea=class{constructor(e=[],t=!1){this.hash={};for(let t of e)this.map(t,t);return this.returnUnknown=t,this}map(e,t){if(!e)throw new Error("Imported value should not be empty.");if(!t)throw new Error("Library value should not be empty.");return this.hash[e]=t,this}has(e){return this.hash.hasOwnProperty(e)}get(e){if(this.has(e))return this.hash[e];if(this.returnUnknown)return e;throw new Error('A value "'+e+'" is not found in the importer.')}};class feature_type_FeatureType{constructor(e,t,r){if(!t||!Array.isArray(t))throw new Error("Values should be an array (or an empty array) of values.");if(!r)throw new Error("FeatureType constructor requires a language");this.type=e,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(r)),this._orderIndex=[],this._orderLookup={};for(const[e,r]of t.entries())if(this._orderIndex.push(r),Array.isArray(r))for(let t of r)this[t]=new feature_Feature(this.type,t,this.languageID),this._orderLookup[t]=e;else this[r]=new feature_Feature(this.type,r,this.languageID),this._orderLookup[r]=e}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}hasUnrestrictedValue(){return 1===this.orderedValues.length&&this.orderedValues[0]===feature_type_FeatureType.UNRESTRICTED_VALUE}get(e,t=1){if(e)return new feature_Feature(this.type,[[e,t]],this.languageID);throw new Error("A non-empty value should be provided.")}getValues(e){return new feature_Feature(this.type,e,this.languageID)}getFromImporter(e,t){let r;try{r=this.importer[e].get(t)}catch(e){r=this.get(t)}return r}addImporter(e){if(!e)throw new Error("Importer should have a non-empty name.");return this.importer=this.importer||{},this.importer[e]=this.importer[e]||new ea,this.importer[e]}get orderedFeatures(){return this.orderedValues.map(e=>new feature_Feature(this.type,e,this.languageID))}get orderedValues(){return this._orderIndex}get orderLookup(){return this._orderLookup}set order(e){if(!e||Array.isArray(e)&&0===e.length)throw new Error("A non-empty list of values should be provided.");Array.isArray(e)||(e=[e]);for(let t of e)if(Array.isArray(t))for(let e of t){if(!this.hasOwnProperty(e.value))throw new Error('Trying to order an element with "'+e.value+'" value that is not stored in a "'+this.type+'" type.');if(e.type!==this.type)throw new Error('Trying to order an element with type "'+e.type+'" that is different from "'+this.type+'".');if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error(`Trying to order an element with language "${e.languageID.toString()}" that is different from "${this.languageID.toString()}"`)}else{if(!this.hasOwnProperty(t.value))throw new Error('Trying to order an element with "'+t.value+'" value that is not stored in a "'+this.type+'" type.');if(t.type!==this.type)throw new Error('Trying to order an element with type "'+t.type+'" that is different from "'+this.type+'".');if(!pa.compareLanguages(t.languageID,this.languageID))throw new Error(`Trying to order an element with language "${t.languageID.toString()}" that is different from "${this.languageID.toString()}"`)}this._orderLookup={},this._orderIndex=[];for(const[t,r]of e.entries())if(Array.isArray(r)){let e=[];for(const a of r)this._orderLookup[a.value]=t,e.push(a.value);this._orderIndex[t]=e}else this._orderLookup[r.value]=t,this._orderIndex[t]=r.value}}feature_type_FeatureType.UNRESTRICTED_VALUE=Symbol("unrestricted");var ta=feature_type_FeatureType;var ra=class{constructor(e,t,r={}){for(let r of t)this[r]=e[r];Object.assign(this,r)}hasFeatureValue(e,t){return!!this.hasOwnProperty(e)&&this[e].values.includes(t)}toString(){let e=[];for(let t of Object.getOwnPropertyNames(this).sort()){let r=this[t]instanceof feature_Feature?this[t].values.sort().join(","):this[t];e.push(r)}return e.join(" ")}};var aa=class{constructor(e,t=[],r=null){this.groupingKey=e,this.inflections=t}append(e){this.inflections.push(e)}};class language_model_LanguageModel{constructor(){this.context_backward=language_model_LanguageModel.contextBackward}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}get contextForward(){return console.warn('Please use static "contextForward" instead'),this.constructor.contextForward}get contextBackward(){return console.warn('Please use static "contextBackward" instead'),this.constructor.contextBackward}get direction(){return console.warn('Please use static "direction" instead'),this.constructor.direction}get baseUnit(){return console.warn('Please use static "baseUnit" instead'),this.constructor.baseUnit}get features(){return console.warn('Please use individual "getFeatureType" or static "features" instead'),this.constructor.features}static get featureNames(){return this.featureValues.keys()}static typeFeature(e){if(this.typeFeatures.has(e))return this.typeFeatures.get(e);throw new Error(`Type feature "${e}" is not defined within "${this}"`)}static get typeFeatures(){console.warn("This getter must be defined in a descendant class")}static get features(){let e={};for(const t of this.featureNames)e[t]=this.getFeature(t);return e}static get languageID(){return s}static get languageCode(){return g}static get languageCodes(){return[]}static get codes(){return console.warn('Use static "languageCodes" instead'),this.languageCodes}get codes(){return console.warn('Please use a static version of "codes" instead'),this.constructor.languageCodes}toCode(){return console.warn('Please use a static "languageCode" instead'),this.constructor.languageCode}static toCode(){return console.warn('Please use a static "languageCode" instead'),this.languageCode}static get featureValues(){return new Map([[feature_Feature.types.part,[S,w,F,C,D,b,L,T,V,N,R,P,M,x,j,G,B]],[feature_Feature.types.gender,[k,W,H]],[feature_Feature.types.type,[kr,Br]],[feature_Feature.types.person,[er,tr,rr]],[feature_Feature.types.age,[]],[feature_Feature.types.area,[]],[feature_Feature.types.source,[]],[feature_Feature.types.frequency,[]],[feature_Feature.types.geo,[]],[feature_Feature.types.pronunciation,[]],[feature_Feature.types.kind,[]],[feature_Feature.types.comparison,[]],[feature_Feature.types.morph,[]],[feature_Feature.types.stemtype,[]],[feature_Feature.types.derivtype,[]]])}static get sourceLanguage(){return console.warn("Please use languageID directly"),this.languageID}get sourceLanguage(){return console.warn("Please use languageID directly"),this.constructor.languageID}static getFeatureType(e){console.warn("Please use getFeature instead");let t=this.featureValues;if(t.has(e))return new ta(e,t.get(e),this.languageID);throw new Error(`Feature "${e}" is not defined`)}static getFeature(e){let t=this.featureValues;if(t.has(e)){let r=t.get(e);return new feature_Feature(e,r,this.languageID,1,r)}throw new Error(`Feature "${e}" is not defined`)}_initializeFeatures(){let e={};for(const t of this.constructor.featureValues.keys())e[t]=this.constructor.getFeature(t);return e}grammarFeatures(){return console.warn('Please use a static version of "grammarFeatures" instead'),this.constructor.grammarFeatures()}static grammarFeatures(){return[]}static canInflect(e){return!1}static supportsLanguage(e){return this.languageCodes.includes[e]}static normalizeWord(e){return e}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}alternateWordEncodings(e,t,r,a){return console.warn('Please use static "alternateWordEncodings" instead'),this.constructor.alternateWordEncodings(e,t,r,a)}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}getPunctuation(){return console.warn('Please use a static version of "getPunctuation"'),this.constructor.getPunctuation()}toString(){return String(this.constructor.languageCode)}isEqual(e){return pa.compareLanguages(this.languageID,e.languageID)}static hasCode(e){if(this.isLanguageCode(e))return this.languageCodes.includes(e);throw new Error(`Format of a "${e}" is incorrect`)}static isLanguageID(e){return"symbol"==typeof e}static isLanguageCode(e){return!language_model_LanguageModel.isLanguageID(e)}canInflect(e){return console.warn('Please use a static version of "canInflect" instead'),this.constructor.canInflect(e)}static groupInflectionsForDisplay(e){let t=new Map,r=this.aggregateInflectionsForDisplay(e);for(let e of r){let r=new ra(e,[feature_Feature.types.part,feature_Feature.types.declension,feature_Feature.types.dialect,feature_Feature.types.comparison],{prefix:e.prefix,suffix:e.suffix,stem:e.stem}),a=r.toString();t.has(a)?t.get(a).append(e):t.set(a,new aa(r,[e]))}for(let e of t){let t=new Map;for(let r of e[1].inflections){let e,a=!1;r[feature_Feature.types.grmCase]?(e=feature_Feature.types.number,a=!0):e=r[feature_Feature.types.tense]?feature_Feature.types.tense:r[feature_Feature.types.part]===G?feature_Feature.types.part:r[feature_Feature.types.part]===S?feature_Feature.types.part:"misc";let n=new ra(r,[e],{isCaseInflectionSet:a}),u=n.toString();t.has(u)?t.get(u).append(r):t.set(u,new aa(n,[r]))}for(let e of t){let t=new Map,r=new Map;for(let a of e[1].inflections){let e=a[feature_Feature.types.grmCase]?Math.max(a[feature_Feature.types.grmCase].items.map(e=>e.sortOrder)):1,n=new ra(a,[feature_Feature.types.tense,feature_Feature.types.voice]),u=n.toString();t.has(u)?t.get(u).append(a):(t.set(u,new aa(n,[a],e)),r.set(u,e))}e[1].inflections=[];let a=Array.from(t.keys()).sort((e,t)=>{let a=r.get(e),n=r.get(t);return a>n?-1:n>a?1:0});for(let r of a)e[1].inflections.push(t.get(r))}for(let e of t){let t=e[1];for(let e of t.inflections){let t=new Map;for(let r of e.inflections){let e=new ra(r,[feature_Feature.types.grmCase,feature_Feature.types.comparison,feature_Feature.types.gender,feature_Feature.types.number,feature_Feature.types.person,feature_Feature.types.tense,feature_Feature.types.mood,feature_Feature.types.voice]),a=e.toString();t.has(a)?t.get(a).append(r):t.set(a,new aa(e,[r]))}e.inflections=Array.from(t.values())}}e[1].inflections=Array.from(t.values())}return Array.from(t.values())}static aggregateInflectionsForDisplay(e){return e}groupInflectionsForDisplay(e){return console.warn('Please use a static version of "groupInflectionsForDisplay" instead'),this.constructor.groupInflectionsForDisplay(e)}}var na=language_model_LanguageModel;let ua=new Map,ia=!1;class latin_language_model_LatinLanguageModel extends na{static get languageID(){return l}static get languageCode(){return p}static get languageCodes(){return[h,p]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}static get featureValues(){return new Map([...na.featureValues,[feature_Feature.types.grmClass,[Wr,Hr,qr,Kr,$r,zr]],[feature_Feature.types.number,[kt,Wt]],[feature_Feature.types.grmCase,[He,Ve,_e,ae,te,Be,Et]],[feature_Feature.types.declension,[er,tr,rr,ar,nr]],[feature_Feature.types.tense,[mr,dr,cr,pr,hr,fr]],[feature_Feature.types.voice,[br,Lr]],[feature_Feature.types.mood,[Tt,Gt,Lt,xt,Bt,Dt,xt,Vt]],[feature_Feature.types.conjugation,[er,tr,rr,ar]]])}static get typeFeatures(){return ia||this.initTypeFeatures(),ua}static initTypeFeatures(){for(const e of this.featureNames)ua.set(e,this.getFeature(e));ia=!0}static grammarFeatures(){return[feature_Feature.types.part,feature_Feature.types.grmCase,feature_Feature.types.mood,feature_Feature.types.declension,feature_Feature.types.tense,feature_Feature.types.conjugation]}static canInflect(e){return!0}static normalizeWord(e){return e&&(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/[\u00c0\u00c1\u00c2\u00c3\u00c4\u0100\u0102]/g,"A")).replace(/[\u00c8\u00c9\u00ca\u00cb\u0112\u0114]/g,"E")).replace(/[\u00cc\u00cd\u00ce\u00cf\u012a\u012c]/g,"I")).replace(/[\u00d2\u00d3\u00d4\u00df\u00d6\u014c\u014e]/g,"O")).replace(/[\u00d9\u00da\u00db\u00dc\u016a\u016c]/g,"U")).replace(/[\u00c6\u01e2]/g,"AE")).replace(/[\u0152]/g,"OE")).replace(/[\u00e0\u00e1\u00e2\u00e3\u00e4\u0101\u0103]/g,"a")).replace(/[\u00e8\u00e9\u00ea\u00eb\u0113\u0115]/g,"e")).replace(/[\u00ec\u00ed\u00ee\u00ef\u012b\u012d\u0129]/g,"i")).replace(/[\u00f2\u00f3\u00f4\u00f5\u00f6\u014d\u014f]/g,"o")).replace(/[\u00f9\u00fa\u00fb\u00fc\u016b\u016d]/g,"u")).replace(/[\u00e6\u01e3]/g,"ae")).replace(/[\u0153]/g,"oe")),e}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static getInflectionConstraints(e){let t={fullFormBased:!1,suffixBased:!1,pronounClassRequired:!1};return e.hasOwnProperty(feature_Feature.types.part)?[G,B].includes(e[feature_Feature.types.part].value)?(t.fullFormBased=!0,t.suffixBased=!0):e[feature_Feature.types.part].value===M?t.fullFormBased=!0:t.suffixBased=!0:console.warn("Unable to set grammar: part of speech data is missing or is incorrect",e[feature_Feature.types.part]),t}}let oa=new Map,sa=!1;class greek_language_model_GreekLanguageModel extends na{static get languageID(){return c}static get languageCode(){return m}static get languageCodes(){return[m]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}static get featureValues(){return new Map([...na.featureValues,[feature_Feature.types.grmClass,[Kr,Jr,Xr,Qr,zr,Wr,qr,Yr,Hr,$r]],[feature_Feature.types.number,[kt,Wt,Ht]],[feature_Feature.types.grmCase,[He,Ve,_e,ae,Et]],[feature_Feature.types.declension,[er,tr,rr]],[feature_Feature.types.tense,[mr,dr,cr,pr,hr,fr,lr]],[feature_Feature.types.voice,[Lr,br,Tr,Vr]],[feature_Feature.types.mood,[Tt,Gt,Mt,Lt]],[feature_Feature.types.dialect,["attic","epic","doric"]]])}static get typeFeatures(){return sa||this.initTypeFeatures(),oa}static initTypeFeatures(){for(const e of this.featureNames)oa.set(e,this.getFeature(e));sa=!0}static canInflect(e){return!0}static grammarFeatures(){return[feature_Feature.types.part,feature_Feature.types.grmCase,feature_Feature.types.mood,feature_Feature.types.declension,feature_Feature.types.tense,feature_Feature.types.voice]}static normalizeWord(e){return e?e.normalize("NFC"):e}static alternateWordEncodings(e,t=null,r=null,a=null){let n=greek_language_model_GreekLanguageModel.normalizeWord(e).toLocaleLowerCase(),u=n.replace(/[\u{1FB0}\u{1FB1}]/gu,"α").replace(/[\u{1FB8}\u{1FB9}]/gu,"Α").replace(/[\u{1FD0}\u{1FD1}]/gu,"ι").replace(/[\u{1FD8}\u{1FD9}]/gu,"Ι").replace(/[\u{1FE0}\u{1FE1}]/gu,"υ").replace(/[\u{1FE8}\u{1FE9}]/gu,"Υ").replace(/[\u{00AF}\u{0304}\u{0306}]/gu,""),i=n.replace(/\u{0390}/gu,"ί").replace(/\u{03AA}/gu,"Ι").replace(/\u{03AB}/gu,"Υ").replace(/\u{03B0}/gu,"ύ").replace(/\u{03CA}/gu,"ι").replace(/\u{03CB}/gu,"υ").replace(/\u{1FD2}/gu,"ὶ").replace(/\u{1FD3}/gu,"ί").replace(/\u{1FD7}/gu,"ῖ").replace(/\u{1FE2}/gu,"ὺ").replace(/\u{1FE3}/gu,"ύ").replace(/\u{1FE7}/gu,"ῦ").replace(/\u{1FC1}/gu,"῀").replace(/\u{1FED}/gu,"`").replace(/\u{1FEE}/gu,"´").replace(/[\u{00A8}\u{0308}]/gu,"");return"strippedDiaeresis"===a?[i]:[u]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static getInflectionConstraints(e){let t={fullFormBased:!1,suffixBased:!1,pronounClassRequired:!1},r=[M,V,C];return e.hasOwnProperty(feature_Feature.types.part)?r.includes(e[feature_Feature.types.part].value)?t.fullFormBased=!0:t.suffixBased=!0:console.warn("Unable to set grammar: part of speech data is missing or is incorrect",e[feature_Feature.types.part]),t.pronounClassRequired=pa.compareLanguages(greek_language_model_GreekLanguageModel.languageID,e.languageID)&&e.hasOwnProperty(feature_Feature.types.part)&&e[feature_Feature.types.part].value===M,t}static getPronounClasses(e,t,r=!0){let a=new Set,n=e.filter(e=>{let a=!1;return e.value&&(a=r?greek_language_model_GreekLanguageModel.normalizeWord(e.value)===greek_language_model_GreekLanguageModel.normalizeWord(t):e.value===t),a});for(const e of n)if(e.features.hasOwnProperty(feature_Feature.types.grmClass))for(const t of e.features[feature_Feature.types.grmClass].values)a.add(t);if(a.size>0)return new feature_Feature(feature_Feature.types.grmClass,Array.from(a),greek_language_model_GreekLanguageModel.languageID)}}let la=new Map,ca=!1;class arabic_language_model_ArabicLanguageModel extends na{static get languageID(){return f}static get languageCode(){return _}static get languageCodes(){return[_,E]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return o}static get baseUnit(){return n}static get typeFeatures(){return ca||this.initTypeFeatures(),la}static initTypeFeatures(){for(const e of this.featureNames)la.set(e,this.getFeature(e));ca=!0}static canInflect(e){return!1}static alternateWordEncodings(e,t=null,r=null,a=null){let n=e.replace(/[\u{064B}\u{064C}\u{064D}\u{0640}]/gu,""),u=n.replace(/[\u{0622}\u{0623}\u{0625}]/gu,"ا"),i=u.replace(/[\u{064E}\u{064F}\u{0650}\u{0670}\u{0671}]/gu,""),o=i.replace(/\u{0651}/gu,""),s=o.replace(/\u{0652}/gu,""),l=s.replace(/\u{0627}/gu,""),c=new Map([["tanwin",n],["hamza",u],["harakat",i],["shadda",o],["sukun",s],["alef",l]]);return null!==a&&c.has(a)?[c.get(a)]:Array.from(c.values())}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static aggregateInflectionsForDisplay(e){let t=[],r={[T]:[],[F]:[],[O]:[]};for(let a of e)a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/ADJ[uaiNK]/)?r[F].push(a):a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/NOUN[uaiNK]/)?r[T].push(a):a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)?r[O].push(a):(a.example=null,t.push(a));for(let e of Object.keys(r)){1!==t.filter(t=>t[feature_Feature.types.part].value===e).length&&t.push(...r[e])}return t}}let fa=new Map,da=!1;class persian_language_model_PersianLanguageModel extends na{static get languageID(){return d}static get languageCode(){return y}static get languageCodes(){return[y,I,v,A]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return o}static get baseUnit(){return n}static get typeFeatures(){return da||this.initTypeFeatures(),fa}static initTypeFeatures(){for(const e of this.featureNames)fa.set(e,this.getFeature(e));da=!0}static canInflect(e){return!1}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}}const ga=new Map([[h,latin_language_model_LatinLanguageModel],[p,latin_language_model_LatinLanguageModel],[m,greek_language_model_GreekLanguageModel],[_,arabic_language_model_ArabicLanguageModel],[E,arabic_language_model_ArabicLanguageModel],[y,persian_language_model_PersianLanguageModel]]);class language_model_factory_LanguageModelFactory{static supportsLanguage(e){return e="symbol"==typeof e?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e):e,ga.has(e)}static getLanguageModel(e){let t=language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e);return ga.has(t)?ga.get(t):na}static getLanguageForCode(e=null){let t=ga.get(e);return t?new t:new na}static getLanguageIdFromCode(e){for(const t of ga.values())if(t.hasCode(e))return t.languageID;return s}static getLanguageCodeFromId(e){for(const t of ga.values())if(t.languageID.toString()===e.toString())return t.languageCode;return g}static getLanguageAttrs(e){return"symbol"==typeof e?{languageID:e,languageCode:language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e)}:{languageID:language_model_factory_LanguageModelFactory.getLanguageIdFromCode(e),languageCode:e}}static compareLanguages(e,t){return(e="symbol"==typeof e?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e):e)===(t="symbol"==typeof t?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(t):t)}}var pa=language_model_factory_LanguageModelFactory;const ha={en:{feminine:{full:"feminine",abbr:"f."},masculine:{full:"masculine",abbr:"m."},neuter:{full:"neuter",abbr:"n."},nominative:{full:"nominative",abbr:"nom."},accusative:{full:"accusative",abbr:"acc."},genitive:{full:"genitive",abbr:"gen."},vocative:{full:"vocative",abbr:"voc."},ablative:{full:"ablative",abbr:"abl."},locative:{full:"locative",abbr:"loc."},dative:{full:"dative",abbr:"dat."},positive:{full:"positive",abbr:"pos."},comparative:{full:"comparative",abbr:"comp."},superlative:{full:"superlative",abbr:"super."},singular:{full:"singular",abbr:"s."},plural:{full:"plural",abbr:"p."},dual:{full:"dual",abbr:"dl."},present:{full:"present",abbr:"pr."},imperfect:{full:"imperfect",abbr:"imp."},perfect:{full:"perfect",abbr:"perf."},pluperfect:{full:"pluperfect",abbr:"pluperf."},plusquamperfect:{full:"plusquamperfect",abbr:"pqpf."},"future perfect":{full:"future perfect",abbr:"fut. perf."},future:{full:"future",abbr:"fut."},aorist:{full:"aorist",abbr:"aor."},indicative:{full:"indicative",abbr:"ind."},subjunctive:{full:"subjunctive",abbr:"sub."},infinitive:{full:"infinitive",abbr:"inf."},imperative:{full:"imperative",abbr:"imp."},supine:{full:"supine",abbr:"sup."},participle:{full:"participle",abbr:"par."},optative:{full:"optative",abbr:"opt."},active:{full:"active",abbr:"act."},passive:{full:"passive",abbr:"pass."},middle:{full:"middle",abbr:"mid."},mediopassive:{full:"mediopassive",abbr:"mp."},deponens:{full:"deponens",abbr:"dep."}}};class feature_Feature{constructor(e,t,r,a=1,n=[]){if(!feature_Feature.isAllowedType(e))throw new Error('Features of "'+e+'" type are not supported.');if(!t)throw new Error("Feature should have a non-empty value(s).");if(!r)throw new Error("No language ID is provided");this.type=e,this.languageID=r,this.sortOrder=a,this.allowedValues=n,this._data=feature_Feature.dataValuesFromInput(t),this.sort()}static dataValuesFromInput(e){let t;return(t=Array.isArray(e)?Array.isArray(e[0])?e:e.map((t,r)=>[t,e.length-r]):[[e,this.defaultSortOrder]]).map(e=>({value:e[0],sortOrder:Number.parseInt(e[1])}))}static newFromFtr(e){}static get types(){return{word:"word",fullForm:"full form",hdwd:"headword",part:"part of speech",number:"number",case:"case",grmCase:"case",declension:"declension",gender:"gender",type:"type",class:"class",grmClass:"class",conjugation:"conjugation",comparison:"comparison",tense:"tense",voice:"voice",mood:"mood",person:"person",frequency:"frequency",meaning:"meaning",source:"source",footnote:"footnote",dialect:"dialect",note:"note",pronunciation:"pronunciation",age:"age",area:"area",geo:"geo",kind:"kind",derivtype:"derivtype",stemtype:"stemtype",morph:"morph",var:"var"}}static isAllowedType(e){return Object.values(this.types).includes(`${e}`)}static get defaultSortOrder(){return 1}static get joinSeparator(){return" "}static get defaultImporterName(){return"default"}get allowsUnrestrictedValues(){return 0===this.allowedValues.length}sort(){this._data.sort((e,t)=>e.sortOrder!==t.sortOrder?t.sortOrder-e.sortOrder:e.value.localeCompare(t.value))}compareTo(e){return e._data[0].sortOrder-this._data[0].sortOrder}get items(){return this._data}get value(){return this.values.join(this.constructor.joinSeparator)}get values(){return this._data.map(e=>e.value)}getValue(e){return this._data.find(t=>t.value===e)}get valQty(){return this._data.length}get isEmpty(){return 0===this.valQty}get isSingle(){return 1===this.valQty}get isMultiple(){return this.valQty>1}toString(){return this.value}hasValue(e){return this.values.includes(e)}hasValues(e){let t=!0;for(let r of e)t=t&&this.hasValue(r);return t}hasSomeValues(e){let t=!1;for(let r of e)t=t||this.hasValue(r);return t}get valuesUnrestricted(){return 0===this.allowedValues.length}isEqual(e){return this.type===e.type&&pa.compareLanguages(this.languageID,e.languageID)&&this.value===e.value}addValue(e,t=this.constructor.defaultSortOrder){return this.hasValue(e)?console.warn(`Value "${e}" already exists. If you want to change it, use "getValue" to access it directly.`):(this._data.push({value:e,sortOrder:t}),this.sort()),this}addValues(e){let t=this.constructor.dataValuesFromInput(e),r=t.map(e=>e.value);return this.hasSomeValues(r)?console.warn(`One or several values from "${r}" already exist. If you want to change it, use "getValue" to access a value directly.`):(this._data=this._data.concat(t),this.sort()),this}removeValue(e){console.warn("This feature is not implemented yet")}createFeature(e,t=this.constructor.defaultSortOrder){return new feature_Feature(this.type,[[e,t]],this.languageID,this.sortOrder,this.allowedValues)}createFeatures(e){return new feature_Feature(this.type,e,this.languageID,this.sortOrder,this.allowedValues)}get ownFeatures(){return this.values.map(e=>new feature_Feature(this.type,e,this.languageID,1,this.allowedValues))}getCopy(){let e=this._data.map(e=>[e.value,e.sortOrder]);return new feature_Feature(this.type,e,this.languageID,this.sortOrder,this.allowedValues.slice())}toLocaleStringAbbr(e="en"){return this.values.map(t=>ha[e][t]?ha[e][t].abbr:t).join(this.constructor.joinSeparator)}addImporter(e=new ea,t=this.constructor.defaultImporterName){return this.importers||(this.importers=new Map),this.importers.set(t,e),e}getImporter(e=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(e))throw new Error(`Importer "${e}" does not exist`);return this.importers.get(e)}addFromImporter(e,t=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(t))throw new Error(`Importer "${t}" does not exist`);const r=this.importers.get(t);return e=this.constructor.dataValuesFromInput(e),this._data.push(...e.map(e=>({value:r.get(e.value),sortOrder:e.sortOrder}))),this.sort(),this}createFromImporter(e,t=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(t))throw new Error(`Importer "${t}" does not exist`);const r=this.importers.get(t);Array.isArray(e)||(e=[e]);let a=e.map(e=>r.get(e));return a=a.reduce((e,t)=>e.concat(t),[]),new feature_Feature(this.type,a,this.languageID,this.sortOrder,this.allowedValues)}}class grm_feature_GrmFeature{constructor(e,t,r,a=1){if(!grm_feature_GrmFeature.types.isAllowed(t))throw new Error('Features of "'+t+'" type are not supported.');if(!e)throw new Error("Feature should have a non-empty value.");if(!t)throw new Error("Feature should have a non-empty type.");if(!r)throw new Error("Feature constructor requires a language");this.value=e,this.type=t,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(r)),this.sortOrder=a}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}isEqual(e){if(Array.isArray(e.value)){if(!Array.isArray(this.value)||this.value.length!==e.value.length)return!1;let t=this.type===e.type&&pa.compareLanguages(this.languageID,e.languageID);return t=t&&this.value.every(function(t,r){return t===e.value[r]})}return pa.compareLanguages(this.languageID,e.languageID)&&this.type===e.type&&this.value===e.value}isSubsetof(e){Array.isArray(e)||(e=[e]);let t=e[0].languageID,r=e[0].type,a=e.map(e=>e.value);return!(!pa.compareLanguages(this.languageID,t)||this.type!==r||!a.includes(this.value))}hasValue(e){return Array.isArray(this.value)?this.value.includes(e):this.value===e}toString(){return Array.isArray(this.value)?this.value.join(","):this.value}toLocaleStringAbbr(e="en"){return Array.isArray(this.value)?this.value.map(t=>this.toLocaleStringAbbr(t,e)):ha[e][this.value].abbr}static toFeature(e){if(Array.isArray(e)){if(!(e[0]instanceof feature_Feature)){const t=e[0].type,r=e[0].languageID,a=e.map(e=>e.value);return new feature_Feature(t,a,r)}}else if(!(e instanceof feature_Feature))return new feature_Feature(e.type,e.value,e.languageID);return e}}grm_feature_GrmFeature.types={word:"word",part:"part of speech",number:"number",case:"case",grmCase:"case",declension:"declension",gender:"gender",type:"type",class:"class",grmClass:"class",conjugation:"conjugation",comparison:"comparison",tense:"tense",voice:"voice",mood:"mood",person:"person",frequency:"frequency",meaning:"meaning",source:"source",footnote:"footnote",dialect:"dialect",note:"note",pronunciation:"pronunciation",age:"age",area:"area",geo:"geo",kind:"kind",derivtype:"derivtype",stemtype:"stemtype",morph:"morph",var:"var",isAllowed(e){let t=`${e}`;return Object.values(this).includes(t)}};var ma=grm_feature_GrmFeature;var _a=class{constructor(e=[]){this._features=[],this._types={},this.add(e)}add(e){if(!e||!Array.isArray(e))throw new Error("Features must be defined and must come in an array.");for(let t of e)this._features.push(t),this._types[t.type]=t}get items(){return this._features}forEach(e){this._features.forEach(e)}ofType(e){if(this.hasType(e))return this._types[e]}hasType(e){return this._types.hasOwnProperty(e)}},Ea=r(0),Ia=r.n(Ea);class lemma_Lemma{constructor(e,t,r=[],a={}){if(!e)throw new Error("Word should not be empty.");if(!t)throw new Error("Language should not be empty.");this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(t)),this.word=e,this.principalParts=r,this.features={},this.ID=Ia()()}get language(){return console.warn('Please use "languageID" instead of "language"'),this.languageCode}static readObject(e){return new lemma_Lemma(e.word,e.language,e.principalParts,e.pronunciation)}set feature(e){if(console.warn('Please use "addFeature" instead'),!e)throw new Error("feature data cannot be empty.");Array.isArray(e)||(e=[e]);let t=e[0].type;this.features[t]=[];for(let r of e){if(!(r instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(r.languageID,this.languageID))throw new Error('Language "'+r.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this.features[t].push(r)}}addFeature(e){if(!e)throw new Error("feature data cannot be empty.");if(!(e instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error('Language "'+e.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this.features[e.type]=e}addFeatures(e){if(!Array.isArray(e))throw new Error("Features must be in an array");for(let t of e)this.addFeature(t)}addTranslation(e){if(!e)throw new Error("translation data cannot be empty.");if("Translation"!==e.constructor.name)throw new Error("translation data must be a Translation object.");this.translation=e}isFullHomonym(e){return this.word===e.word&&this.features[feature_Feature.types.part]&&e.features[feature_Feature.types.part]&&this.features[feature_Feature.types.part].isEqual(e.features[feature_Feature.types.part])}}var ya=lemma_Lemma;class inflection_Inflection{constructor(e=null,t,r=null,a=null,n=null){if(!e&&!r)throw new Error("At least stem or suffix must be defined");if(!t)throw new Error("Language should not be empty.");if(!pa.supportsLanguage(t))throw new Error(`language ${t} not supported.`);this.stem=e,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(t)),this.model=pa.getLanguageModel(this.languageID),this.features=new Set,this.constraints={fullFormBased:!1,suffixBased:!1,obligatoryMatches:[],optionalMatches:[]},this.suffix=r,this.prefix=a,this.example=n}get form(){let e,t,r,a,n;return n=this.stem?this.stem:"",a=this.stem?" - ":"",this.model.direction===o?(t=this.prefix?a+this.prefix:"",e=(r=this.suffix?this.suffix+a:"")+n+t):e=(t=this.prefix?this.prefix+a:"")+n+(r=this.suffix?a+this.suffix:""),e}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}setConstraints(){if(this.model.hasOwnProperty("getInflectionConstraints")){let e=this.model.getInflectionConstraints(this);this.constraints=Object.assign(this.constraints,e)}}compareWithWordDependsOnType(e,t,r=!0){const a=pa.getLanguageModel(this.languageID);let n;return n=this.constraints.irregularVerb?"Suffix"===t?this.suffix:this[feature_Feature.types.fullForm]?this[feature_Feature.types.fullForm].value:this.form:this.constraints.suffixBased?this.suffix:this.form,r?a.normalizeWord(n)===a.normalizeWord(e):n===e}compareWithWord(e,t=!0){const r=pa.getLanguageModel(this.languageID),a=this.constraints.suffixBased?this.suffix:this.form;return t?r.normalizeWord(a)===r.normalizeWord(e):a===e}disambiguatedBy(e){let t=!0;0!==this.features.length&&0!==e.features.length||(t=!1),e.features.length>this.features.length&&(t=!1);for(let r of e.features)if(!this[r]||!this[r].isEqual(e[r])){t=!1;break}return t}static readObject(e){let t=new inflection_Inflection(e.stem,e.languageCode,e.suffix,e.prefix,e.example);return t.languageID=pa.getLanguageIdFromCode(t.languageCode),t}set feature(e){if(console.warn('Please use "addFeature" instead.'),!e)throw new Error("Inflection feature data cannot be empty.");Array.isArray(e)||(e=[e]);let t=e[0].type;this[t]=[];for(let r of e){if(!(r instanceof feature_Feature))throw new Error("Inflection feature data must be a Feature object.");if(!pa.compareLanguages(r.languageID,this.languageID))throw new Error(`Language "${r.languageID.toString()}" of a feature does not match\n a language "${this.languageID.toString()}" of an Inflection object.`);this[t].push(r),this.features.add(t)}}addFeature(e){if(!e)throw new Error("feature data cannot be empty.");if(!(e instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error('Language "'+e.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this[e.type]=e,this.features.add(e.type)}addFeatures(e){if(!Array.isArray(e))throw new Error("Features must be in an array");for(let t of e)this.addFeature(t)}hasFeatureValue(e,t){return!!this.hasOwnProperty(e)&&this[e].values.includes(t)}}var Aa=inflection_Inflection;class lexeme_Lexeme{constructor(e,t,r=null){if(!e)throw new Error("Lemma should not be empty.");if(!(e instanceof ya))throw new Error("Lemma should be of Lemma object type.");if(!t)throw new Error("Inflections data should not be empty.");if(!Array.isArray(t))throw new Error("Inflection data should be provided in an array.");for(let e of t)if(!(e instanceof Aa))throw new Error("All inflection data should be of Inflection object type.");if(null!==r&&!(r instanceof definition_set_DefinitionSet))throw new Error("Meaning should be of DefinitionSet object type.");this.lemma=e,this.inflections=[],t.forEach(e=>{this.addInflection(e)}),this.meaning=r||new definition_set_DefinitionSet(this.lemma.word,this.lemma.languageID),this.disambiguated=!1}addInflection(e){e.lemma=this.lemma,this.inflections.push(e)}isPopulated(){return Object.entries(this.lemma.features).length>0||!this.meaning.isEmpty()||this.inflections.length>0}static disambiguate(e,t){let r=new lexeme_Lexeme(e.lemma,e.inflections,e.meaning);if(e.lemma.isFullHomonym(t.lemma)&&t.inflections.length>0){r.disambiguated=!0;let e=[];for(let a of r.inflections)for(let r of t.inflections)a.disambiguatedBy(r)&&e.push(a);if(r.inflections=e,0===r.inflections.length)for(let e of t.inflections)r.addInflection(e)}return r}getGroupedInflections(){return pa.getLanguageModel(this.lemma.languageID).groupInflectionsForDisplay(this.inflections)}static readObject(e){let t=ya.readObject(e.lemma),r=[];for(let t of e.inflections)r.push(Aa.readObject(t));let a=new lexeme_Lexeme(t,r);return a.meaning=definition_set_DefinitionSet.readObject(e.meaning),a}static getSortByTwoLemmaFeatures(e,t){return(r,a)=>{if(r.lemma.features[e]&&a.lemma.features[e]||!r.lemma.features[e]&&!a.lemma.features[[e]]){let n;return 0!==(n=r.lemma.features[e]&&a.lemma.features[e]?r.lemma.features[e].compareTo(a.lemma.features[e]):0)?n:r.lemma.features[t]&&a.lemma.features[t]?r.lemma.features[t].compareTo(a.lemma.features[t]):r.lemma.features[t]&&!a.lemma.features[t]?-1:!r.lemma.features[t]&&a.lemma.features[t]?1:0}return r.lemma.features[e]&&!a.lemma.features[e]?-1:!r.lemma.features[e]&&a.lemma.features[e]?1:0}}}var va=lexeme_Lexeme;class homonym_Homonym{constructor(e,t){if(!e||Array.isArray(e)&&0===e.length)throw new Error("Lexemes data should not be empty.");if(!Array.isArray(e))throw new Error("Lexeme data should be provided in an array.");for(let t of e)if(!(t instanceof va))throw new Error("All lexeme data should be of Lexeme object type.");this.lexemes=e,this.targetWord=t}static createSimpleForm(e,t,r=[]){let a=new ya(e,t),n=new va(a,r);return new homonym_Homonym([n],e)}static readObject(e){let t=[];if(e.lexemes)for(let r of e.lexemes)t.push(va.readObject(r));let r=new homonym_Homonym(t);return e.targetWord&&(r.targetWord=e.targetWord),r}get language(){return console.warn("Please use languageID instead"),pa.getLanguageCodeFromId(this.languageID)}get languageID(){if(this.lexemes&&this.lexemes[0]&&this.lexemes[0].lemma&&this.lexemes[0].lemma.languageID)return this.lexemes[0].lemma.languageID;throw new Error("Homonym has not been initialized properly. Unable to obtain language ID information.")}get inflections(){let e=[];for(const t of this.lexemes)e=e.concat(t.inflections);return e}isDisambiguated(){return this.lexemes.filter(e=>e.disambiguated).length>0}static disambiguate(e,t){if(0===t.length)return e;let r=t.shift(),a=[],n=[];for(let t of r.lexemes){let r=!1;for(let n of e.lexemes){let e=va.disambiguate(n,t);a.push(e),e.disambiguated&&(r=!0)}r||(t.disambiguated=!0,n.push(t))}let u=new homonym_Homonym([...a,...n],e.targetWord);return homonym_Homonym.disambiguate(u,t)}}var Fa=homonym_Homonym;var Sa=class{constructor(e="",t="",r=new Map([["default",t]])){this.uri=e,this.rights=r,this.rights.has("default")||this.rights.set("default",t)}toString(){return this.rights.get("default")}toLocaleString(e){return this.rights.get(e)||this.rights.get("default")}static getProxy(e=null,t={}){return new Proxy(t,{get:function(t,r){return"provider"===r?e:t[r]}})}};class Translation{constructor(e,t,r=[]){if(!e)throw new Error("Lemma should not be empty.");this.lemmaWord=e.word,this.languageCode=t,this.glosses=r}static readTranslationFromJSONList(e,t,r){if(!r||!Array.isArray(r))throw new Error("Recieved not proper translation list",r);let a=r.find(function(t){return t.in===e.word});return new Translation(e,t,a.translations)}static loadTranslations(e,t,r){e.addTranslation(this.readTranslationFromJSONList(e,t,r))}}var wa=Translation;r.d(t,"Constants",function(){return a}),r.d(t,"Definition",function(){return Zr}),r.d(t,"DefinitionSet",function(){return definition_set_DefinitionSet}),r.d(t,"Feature",function(){return feature_Feature}),r.d(t,"GrmFeature",function(){return ma}),r.d(t,"FeatureType",function(){return ta}),r.d(t,"FeatureList",function(){return _a}),r.d(t,"FeatureImporter",function(){return ea}),r.d(t,"Inflection",function(){return Aa}),r.d(t,"LanguageModelFactory",function(){return pa}),r.d(t,"Homonym",function(){return Fa}),r.d(t,"Lexeme",function(){return va}),r.d(t,"Lemma",function(){return ya}),r.d(t,"LatinLanguageModel",function(){return latin_language_model_LatinLanguageModel}),r.d(t,"GreekLanguageModel",function(){return greek_language_model_GreekLanguageModel}),r.d(t,"ArabicLanguageModel",function(){return arabic_language_model_ArabicLanguageModel}),r.d(t,"PersianLanguageModel",function(){return persian_language_model_PersianLanguageModel}),r.d(t,"ResourceProvider",function(){return Sa}),r.d(t,"Translation",function(){return wa})}])}); \ No newline at end of file +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(window,function(){return function(e){var t={};function r(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,a){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(a,n,function(t){return e[t]}.bind(null,n));return a},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t,r){var a=r(1),n=r(2);e.exports=function(e,t,r){var u=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var i=(e=e||{}).random||(e.rng||a)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t)for(var o=0;o<16;++o)t[u+o]=i[o];return t||n(i)}},function(e,t){var r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(r){var a=new Uint8Array(16);e.exports=function(){return r(a),a}}else{var n=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n}}},function(e,t){for(var r=[],a=0;a<256;++a)r[a]=(a+256).toString(16).substr(1);e.exports=function(e,t){var a=t||0,n=r;return[n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]]].join("")}},function(e,t,r){"use strict";r.r(t);var a={};r.r(a),r.d(a,"LANG_UNIT_WORD",function(){return n}),r.d(a,"LANG_UNIT_CHAR",function(){return u}),r.d(a,"LANG_DIR_LTR",function(){return i}),r.d(a,"LANG_DIR_RTL",function(){return o}),r.d(a,"LANG_UNDEFINED",function(){return s}),r.d(a,"LANG_LATIN",function(){return l}),r.d(a,"LANG_GREEK",function(){return c}),r.d(a,"LANG_ARABIC",function(){return f}),r.d(a,"LANG_PERSIAN",function(){return d}),r.d(a,"STR_LANG_CODE_UNDEFINED",function(){return g}),r.d(a,"STR_LANG_CODE_LAT",function(){return p}),r.d(a,"STR_LANG_CODE_LA",function(){return h}),r.d(a,"STR_LANG_CODE_GRC",function(){return m}),r.d(a,"STR_LANG_CODE_ARA",function(){return _}),r.d(a,"STR_LANG_CODE_AR",function(){return E}),r.d(a,"STR_LANG_CODE_FAS",function(){return I}),r.d(a,"STR_LANG_CODE_PER",function(){return y}),r.d(a,"STR_LANG_CODE_FA_IR",function(){return A}),r.d(a,"STR_LANG_CODE_FA",function(){return v}),r.d(a,"POFS_ADJECTIVE",function(){return F}),r.d(a,"POFS_ADVERB",function(){return S}),r.d(a,"POFS_ADVERBIAL",function(){return w}),r.d(a,"POFS_ARTICLE",function(){return C}),r.d(a,"POFS_CONJUNCTION",function(){return D}),r.d(a,"POFS_EXCLAMATION",function(){return b}),r.d(a,"POFS_INTERJECTION",function(){return L}),r.d(a,"POFS_NOUN",function(){return T}),r.d(a,"POFS_NOUN_PROPER",function(){return O}),r.d(a,"POFS_NUMERAL",function(){return V}),r.d(a,"POFS_PARTICLE",function(){return N}),r.d(a,"POFS_PREFIX",function(){return R}),r.d(a,"POFS_PREPOSITION",function(){return P}),r.d(a,"POFS_PRONOUN",function(){return M}),r.d(a,"POFS_SUFFIX",function(){return x}),r.d(a,"POFS_GERUNDIVE",function(){return U}),r.d(a,"POFS_SUPINE",function(){return j}),r.d(a,"POFS_VERB",function(){return G}),r.d(a,"POFS_VERB_PARTICIPLE",function(){return B}),r.d(a,"GEND_MASCULINE",function(){return k}),r.d(a,"GEND_FEMININE",function(){return W}),r.d(a,"GEND_NEUTER",function(){return H}),r.d(a,"GEND_COMMON",function(){return q}),r.d(a,"GEND_ANIMATE",function(){return K}),r.d(a,"GEND_INANIMATE",function(){return $}),r.d(a,"GEND_PERSONAL_MASCULINE",function(){return z}),r.d(a,"GEND_ANIMATE_MASCULINE",function(){return J}),r.d(a,"GEND_INANIMATE_MASCULINE",function(){return X}),r.d(a,"COMP_POSITIVE",function(){return Q}),r.d(a,"COMP_COMPARITIVE",function(){return Y}),r.d(a,"COMP_SUPERLATIVE",function(){return Z}),r.d(a,"CASE_ABESSIVE",function(){return ee}),r.d(a,"CASE_ABLATIVE",function(){return te}),r.d(a,"CASE_ABSOLUTIVE",function(){return re}),r.d(a,"CASE_ACCUSATIVE",function(){return ae}),r.d(a,"CASE_ADDIRECTIVE",function(){return ne}),r.d(a,"CASE_ADELATIVE",function(){return ue}),r.d(a,"CASE_ADESSIVE",function(){return ie}),r.d(a,"CASE_ADVERBIAL",function(){return oe}),r.d(a,"CASE_ALLATIVE",function(){return se}),r.d(a,"CASE_ANTESSIVE",function(){return le}),r.d(a,"CASE_APUDESSIVE",function(){return ce}),r.d(a,"CASE_AVERSIVE",function(){return fe}),r.d(a,"CASE_BENEFACTIVE",function(){return de}),r.d(a,"CASE_CARITIVE",function(){return ge}),r.d(a,"CASE_CAUSAL",function(){return pe}),r.d(a,"CASE_CAUSAL_FINAL",function(){return he}),r.d(a,"CASE_COMITATIVE",function(){return me}),r.d(a,"CASE_DATIVE",function(){return _e}),r.d(a,"CASE_DELATIVE",function(){return Ee}),r.d(a,"CASE_DIRECT",function(){return Ie}),r.d(a,"CASE_DISTRIBUTIVE",function(){return ye}),r.d(a,"CASE_DISTRIBUTIVE_TEMPORAL",function(){return Ae}),r.d(a,"CASE_ELATIVE",function(){return ve}),r.d(a,"CASE_ERGATIVE",function(){return Fe}),r.d(a,"CASE_ESSIVE",function(){return Se}),r.d(a,"CASE_ESSIVE_FORMAL",function(){return we}),r.d(a,"CASE_ESSIVE_MODAL",function(){return Ce}),r.d(a,"CASE_EQUATIVE",function(){return De}),r.d(a,"CASE_EVITATIVE",function(){return be}),r.d(a,"CASE_EXESSIVE",function(){return Le}),r.d(a,"CASE_FINAL",function(){return Te}),r.d(a,"CASE_FORMAL",function(){return Oe}),r.d(a,"CASE_GENITIVE",function(){return Ve}),r.d(a,"CASE_ILLATIVE",function(){return Ne}),r.d(a,"CASE_INELATIVE",function(){return Re}),r.d(a,"CASE_INESSIVE",function(){return Pe}),r.d(a,"CASE_INSTRUCTIVE",function(){return Me}),r.d(a,"CASE_INSTRUMENTAL",function(){return xe}),r.d(a,"CASE_INSTRUMENTAL_COMITATIVE",function(){return Ue}),r.d(a,"CASE_INTRANSITIVE",function(){return je}),r.d(a,"CASE_LATIVE",function(){return Ge}),r.d(a,"CASE_LOCATIVE",function(){return Be}),r.d(a,"CASE_MODAL",function(){return ke}),r.d(a,"CASE_MULTIPLICATIVE",function(){return We}),r.d(a,"CASE_NOMINATIVE",function(){return He}),r.d(a,"CASE_PARTITIVE",function(){return qe}),r.d(a,"CASE_PEGATIVE",function(){return Ke}),r.d(a,"CASE_PERLATIVE",function(){return $e}),r.d(a,"CASE_POSSESSIVE",function(){return ze}),r.d(a,"CASE_POSTELATIVE",function(){return Je}),r.d(a,"CASE_POSTDIRECTIVE",function(){return Xe}),r.d(a,"CASE_POSTESSIVE",function(){return Qe}),r.d(a,"CASE_POSTPOSITIONAL",function(){return Ye}),r.d(a,"CASE_PREPOSITIONAL",function(){return Ze}),r.d(a,"CASE_PRIVATIVE",function(){return et}),r.d(a,"CASE_PROLATIVE",function(){return tt}),r.d(a,"CASE_PROSECUTIVE",function(){return rt}),r.d(a,"CASE_PROXIMATIVE",function(){return at}),r.d(a,"CASE_SEPARATIVE",function(){return nt}),r.d(a,"CASE_SOCIATIVE",function(){return ut}),r.d(a,"CASE_SUBDIRECTIVE",function(){return it}),r.d(a,"CASE_SUBESSIVE",function(){return ot}),r.d(a,"CASE_SUBELATIVE",function(){return st}),r.d(a,"CASE_SUBLATIVE",function(){return lt}),r.d(a,"CASE_SUPERDIRECTIVE",function(){return ct}),r.d(a,"CASE_SUPERESSIVE",function(){return ft}),r.d(a,"CASE_SUPERLATIVE",function(){return dt}),r.d(a,"CASE_SUPPRESSIVE",function(){return gt}),r.d(a,"CASE_TEMPORAL",function(){return pt}),r.d(a,"CASE_TERMINATIVE",function(){return ht}),r.d(a,"CASE_TRANSLATIVE",function(){return mt}),r.d(a,"CASE_VIALIS",function(){return _t}),r.d(a,"CASE_VOCATIVE",function(){return Et}),r.d(a,"MOOD_ADMIRATIVE",function(){return It}),r.d(a,"MOOD_COHORTATIVE",function(){return yt}),r.d(a,"MOOD_CONDITIONAL",function(){return At}),r.d(a,"MOOD_DECLARATIVE",function(){return vt}),r.d(a,"MOOD_DUBITATIVE",function(){return Ft}),r.d(a,"MOOD_ENERGETIC",function(){return St}),r.d(a,"MOOD_EVENTIVE",function(){return wt}),r.d(a,"MOOD_GENERIC",function(){return Ct}),r.d(a,"MOOD_GERUNDIVE",function(){return Dt}),r.d(a,"MOOD_HYPOTHETICAL",function(){return bt}),r.d(a,"MOOD_IMPERATIVE",function(){return Lt}),r.d(a,"MOOD_INDICATIVE",function(){return Tt}),r.d(a,"MOOD_INFERENTIAL",function(){return Ot}),r.d(a,"MOOD_INFINITIVE",function(){return Vt}),r.d(a,"MOOD_INTERROGATIVE",function(){return Nt}),r.d(a,"MOOD_JUSSIVE",function(){return Rt}),r.d(a,"MOOD_NEGATIVE",function(){return Pt}),r.d(a,"MOOD_OPTATIVE",function(){return Mt}),r.d(a,"MOOD_PARTICIPLE",function(){return xt}),r.d(a,"MOOD_PRESUMPTIVE",function(){return Ut}),r.d(a,"MOOD_RENARRATIVE",function(){return jt}),r.d(a,"MOOD_SUBJUNCTIVE",function(){return Gt}),r.d(a,"MOOD_SUPINE",function(){return Bt}),r.d(a,"NUM_SINGULAR",function(){return kt}),r.d(a,"NUM_PLURAL",function(){return Wt}),r.d(a,"NUM_DUAL",function(){return Ht}),r.d(a,"NUM_TRIAL",function(){return qt}),r.d(a,"NUM_PAUCAL",function(){return Kt}),r.d(a,"NUM_SINGULATIVE",function(){return $t}),r.d(a,"NUM_COLLECTIVE",function(){return zt}),r.d(a,"NUM_DISTRIBUTIVE_PLURAL",function(){return Jt}),r.d(a,"NRL_CARDINAL",function(){return Xt}),r.d(a,"NRL_ORDINAL",function(){return Qt}),r.d(a,"NRL_DISTRIBUTIVE",function(){return Yt}),r.d(a,"NURL_NUMERAL_ADVERB",function(){return Zt}),r.d(a,"ORD_1ST",function(){return er}),r.d(a,"ORD_2ND",function(){return tr}),r.d(a,"ORD_3RD",function(){return rr}),r.d(a,"ORD_4TH",function(){return ar}),r.d(a,"ORD_5TH",function(){return nr}),r.d(a,"ORD_6TH",function(){return ur}),r.d(a,"ORD_7TH",function(){return ir}),r.d(a,"ORD_8TH",function(){return or}),r.d(a,"ORD_9TH",function(){return sr}),r.d(a,"TENSE_AORIST",function(){return lr}),r.d(a,"TENSE_FUTURE",function(){return cr}),r.d(a,"TENSE_FUTURE_PERFECT",function(){return fr}),r.d(a,"TENSE_IMPERFECT",function(){return dr}),r.d(a,"TENSE_PAST_ABSOLUTE",function(){return gr}),r.d(a,"TENSE_PERFECT",function(){return pr}),r.d(a,"TENSE_PLUPERFECT",function(){return hr}),r.d(a,"TENSE_PRESENT",function(){return mr}),r.d(a,"VKIND_TO_BE",function(){return _r}),r.d(a,"VKIND_COMPOUNDS_OF_TO_BE",function(){return Er}),r.d(a,"VKIND_TAKING_ABLATIVE",function(){return Ir}),r.d(a,"VKIND_TAKING_DATIVE",function(){return yr}),r.d(a,"VKIND_TAKING_GENITIVE",function(){return Ar}),r.d(a,"VKIND_TRANSITIVE",function(){return vr}),r.d(a,"VKIND_INTRANSITIVE",function(){return Fr}),r.d(a,"VKIND_IMPERSONAL",function(){return Sr}),r.d(a,"VKIND_DEPONENT",function(){return wr}),r.d(a,"VKIND_SEMIDEPONENT",function(){return Cr}),r.d(a,"VKIND_PERFECT_DEFINITE",function(){return Dr}),r.d(a,"VOICE_ACTIVE",function(){return br}),r.d(a,"VOICE_PASSIVE",function(){return Lr}),r.d(a,"VOICE_MEDIOPASSIVE",function(){return Tr}),r.d(a,"VOICE_IMPERSONAL_PASSIVE",function(){return Or}),r.d(a,"VOICE_MIDDLE",function(){return Vr}),r.d(a,"VOICE_ANTIPASSIVE",function(){return Nr}),r.d(a,"VOICE_REFLEXIVE",function(){return Rr}),r.d(a,"VOICE_RECIPROCAL",function(){return Pr}),r.d(a,"VOICE_CAUSATIVE",function(){return Mr}),r.d(a,"VOICE_ADJUTATIVE",function(){return xr}),r.d(a,"VOICE_APPLICATIVE",function(){return Ur}),r.d(a,"VOICE_CIRCUMSTANTIAL",function(){return jr}),r.d(a,"VOICE_DEPONENT",function(){return Gr}),r.d(a,"TYPE_IRREGULAR",function(){return Br}),r.d(a,"TYPE_REGULAR",function(){return kr}),r.d(a,"CLASS_PERSONAL",function(){return Wr}),r.d(a,"CLASS_REFLEXIVE",function(){return Hr}),r.d(a,"CLASS_POSSESSIVE",function(){return qr}),r.d(a,"CLASS_DEMONSTRATIVE",function(){return Kr}),r.d(a,"CLASS_RELATIVE",function(){return $r}),r.d(a,"CLASS_INTERROGATIVE",function(){return zr}),r.d(a,"CLASS_GENERAL_RELATIVE",function(){return Jr}),r.d(a,"CLASS_INDEFINITE",function(){return Xr}),r.d(a,"CLASS_INTENSIVE",function(){return Qr}),r.d(a,"CLASS_RECIPROCAL",function(){return Yr});const n=Symbol("word"),u=Symbol("char"),i=Symbol("ltr"),o=Symbol("rtl"),s=Symbol("undefined"),l=Symbol("latin"),c=Symbol("greek"),f=Symbol("arabic"),d=Symbol("persian"),g="undefined",p="lat",h="la",m="grc",_="ara",E="ar",I="fas",y="per",A="fa-IR",v="fa",F="adjective",S="adverb",w="adverbial",C="article",D="conjunction",b="exclamation",L="interjection",T="noun",O="proper noun",V="numeral",N="particle",R="prefix",P="preposition",M="pronoun",x="suffix",U="gerundive",j="supine",G="verb",B="verb participle",k="masculine",W="feminine",H="neuter",q="common",K="animate",$="inanimate",z="personal masculine",J="animate masculine",X="inanimate masculine",Q="positive",Y="comparative",Z="superlative",ee="abessive",te="ablative",re="absolutive",ae="accusative",ne="addirective",ue="adelative",ie="adessive",oe="adverbial",se="allative",le="antessive",ce="apudessive",fe="aversive",de="benefactive",ge="caritive",pe="causal",he="causal-final",me="comitative",_e="dative",Ee="delative",Ie="direct",ye="distributive",Ae="distributive-temporal",ve="elative",Fe="ergative",Se="essive",we="essive-formal",Ce="essive-modal",De="equative",be="evitative",Le="exessive",Te="final",Oe="formal",Ve="genitive",Ne="illative",Re="inelative",Pe="inessive",Me="instructive",xe="instrumental",Ue="instrumental-comitative",je="intransitive",Ge="lative",Be="locative",ke="modal",We="multiplicative",He="nominative",qe="partitive",Ke="pegative",$e="perlative",ze="possessive",Je="postelative",Xe="postdirective",Qe="postessive",Ye="postpositional",Ze="prepositional",et="privative",tt="prolative",rt="prosecutive",at="proximative",nt="separative",ut="sociative",it="subdirective",ot="subessive",st="subelative",lt="sublative",ct="superdirective",ft="superessive",dt="superlative",gt="suppressive",pt="temporal",ht="terminative",mt="translative",_t="vialis",Et="vocative",It="admirative",yt="cohortative",At="conditional",vt="declarative",Ft="dubitative",St="energetic",wt="eventive",Ct="generic",Dt="gerundive",bt="hypothetical",Lt="imperative",Tt="indicative",Ot="inferential",Vt="infinitive",Nt="interrogative",Rt="jussive",Pt="negative",Mt="optative",xt="participle",Ut="presumptive",jt="renarrative",Gt="subjunctive",Bt="supine",kt="singular",Wt="plural",Ht="dual",qt="trial",Kt="paucal",$t="singulative",zt="collective",Jt="distributive plural",Xt="cardinal",Qt="ordinal",Yt="distributive",Zt="numeral adverb",er="1st",tr="2nd",rr="3rd",ar="4th",nr="5th",ur="6th",ir="7th",or="8th",sr="9th",lr="aorist",cr="future",fr="future perfect",dr="imperfect",gr="past absolute",pr="perfect",hr="pluperfect",mr="present",_r="to be",Er="compounds of to be",Ir="taking ablative",yr="taking dative",Ar="taking genitive",vr="transitive",Fr="intransitive",Sr="impersonal",wr="deponent",Cr="semideponent",Dr="perfect definite",br="active",Lr="passive",Tr="mediopassive",Or="impersonal passive",Vr="middle",Nr="antipassive",Rr="reflexive",Pr="reciprocal",Mr="causative",xr="adjutative",Ur="applicative",jr="circumstantial",Gr="deponent",Br="irregular",kr="regular",Wr="personal",Hr="reflexive",qr="possessive",Kr="demonstrative",$r="relative",zr="interrogative",Jr="general relative",Xr="indefinite",Qr="intensive",Yr="reciprocal";class Definition{constructor(e,t,r,a){this.text=e,this.language=t,this.format=r,this.lemmaText=a}static readObject(e){return new Definition(e.text,e.language,e.format,e.lemmaText)}}var Zr=Definition;class definition_set_DefinitionSet{constructor(e,t){this.lemmaWord=e,this.languageID=t,this.shortDefs=[],this.fullDefs=[]}static readObject(e){let t=new definition_set_DefinitionSet(e.lemmaWord,e.languageID);for(let r of e.shortDefs)t.shortDefs.push(Zr.readObject(r));for(let r of e.fullDefs)t.fullDefs.push(Zr.readObject(r));return t}isEmpty(){return 0===this.shortDefs.length&&0===this.fullDefs.length}appendShortDefs(e){return e&&(Array.isArray(e)||(e=[e]),this.shortDefs=this.shortDefs.concat(e)),this.shortDefs}clearShortDefs(){this.shortDefs=[]}appendFullDefs(e){return e&&(Array.isArray(e)||(e=[e]),this.fullDefs=this.fullDefs.concat(e)),this.fullDefs}clearFullDefs(){this.fullDefs=[]}}var ea=class{constructor(e=[],t=!1){this.hash={};for(let t of e)this.map(t,t);return this.returnUnknown=t,this}map(e,t){if(!e)throw new Error("Imported value should not be empty.");if(!t)throw new Error("Library value should not be empty.");return this.hash[e]=t,this}has(e){return this.hash.hasOwnProperty(e)}get(e){if(this.has(e))return this.hash[e];if(this.returnUnknown)return e;throw new Error('A value "'+e+'" is not found in the importer.')}};class feature_type_FeatureType{constructor(e,t,r){if(!t||!Array.isArray(t))throw new Error("Values should be an array (or an empty array) of values.");if(!r)throw new Error("FeatureType constructor requires a language");this.type=e,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(r)),this._orderIndex=[],this._orderLookup={};for(const[e,r]of t.entries())if(this._orderIndex.push(r),Array.isArray(r))for(let t of r)this[t]=new feature_Feature(this.type,t,this.languageID),this._orderLookup[t]=e;else this[r]=new feature_Feature(this.type,r,this.languageID),this._orderLookup[r]=e}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}hasUnrestrictedValue(){return 1===this.orderedValues.length&&this.orderedValues[0]===feature_type_FeatureType.UNRESTRICTED_VALUE}get(e,t=1){if(e)return new feature_Feature(this.type,[[e,t]],this.languageID);throw new Error("A non-empty value should be provided.")}getValues(e){return new feature_Feature(this.type,e,this.languageID)}getFromImporter(e,t){let r;try{r=this.importer[e].get(t)}catch(e){r=this.get(t)}return r}addImporter(e){if(!e)throw new Error("Importer should have a non-empty name.");return this.importer=this.importer||{},this.importer[e]=this.importer[e]||new ea,this.importer[e]}get orderedFeatures(){return this.orderedValues.map(e=>new feature_Feature(this.type,e,this.languageID))}get orderedValues(){return this._orderIndex}get orderLookup(){return this._orderLookup}set order(e){if(!e||Array.isArray(e)&&0===e.length)throw new Error("A non-empty list of values should be provided.");Array.isArray(e)||(e=[e]);for(let t of e)if(Array.isArray(t))for(let e of t){if(!this.hasOwnProperty(e.value))throw new Error('Trying to order an element with "'+e.value+'" value that is not stored in a "'+this.type+'" type.');if(e.type!==this.type)throw new Error('Trying to order an element with type "'+e.type+'" that is different from "'+this.type+'".');if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error(`Trying to order an element with language "${e.languageID.toString()}" that is different from "${this.languageID.toString()}"`)}else{if(!this.hasOwnProperty(t.value))throw new Error('Trying to order an element with "'+t.value+'" value that is not stored in a "'+this.type+'" type.');if(t.type!==this.type)throw new Error('Trying to order an element with type "'+t.type+'" that is different from "'+this.type+'".');if(!pa.compareLanguages(t.languageID,this.languageID))throw new Error(`Trying to order an element with language "${t.languageID.toString()}" that is different from "${this.languageID.toString()}"`)}this._orderLookup={},this._orderIndex=[];for(const[t,r]of e.entries())if(Array.isArray(r)){let e=[];for(const a of r)this._orderLookup[a.value]=t,e.push(a.value);this._orderIndex[t]=e}else this._orderLookup[r.value]=t,this._orderIndex[t]=r.value}}feature_type_FeatureType.UNRESTRICTED_VALUE=Symbol("unrestricted");var ta=feature_type_FeatureType;var ra=class{constructor(e,t,r={}){for(let r of t)this[r]=e[r];Object.assign(this,r)}hasFeatureValue(e,t){return!!this.hasOwnProperty(e)&&this[e].values.includes(t)}toString(){let e=[];for(let t of Object.getOwnPropertyNames(this).sort()){let r=this[t]instanceof feature_Feature?this[t].values.sort().join(","):this[t];e.push(r)}return e.join(" ")}};var aa=class{constructor(e,t=[],r=null){this.groupingKey=e,this.inflections=t}append(e){this.inflections.push(e)}};class language_model_LanguageModel{constructor(){this.context_backward=language_model_LanguageModel.contextBackward}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}get contextForward(){return console.warn('Please use static "contextForward" instead'),this.constructor.contextForward}get contextBackward(){return console.warn('Please use static "contextBackward" instead'),this.constructor.contextBackward}get direction(){return console.warn('Please use static "direction" instead'),this.constructor.direction}get baseUnit(){return console.warn('Please use static "baseUnit" instead'),this.constructor.baseUnit}get features(){return console.warn('Please use individual "getFeatureType" or static "features" instead'),this.constructor.features}static get featureNames(){return this.featureValues.keys()}static typeFeature(e){if(this.typeFeatures.has(e))return this.typeFeatures.get(e);throw new Error(`Type feature "${e}" is not defined within "${this}"`)}static get typeFeatures(){console.warn("This getter must be defined in a descendant class")}static get features(){let e={};for(const t of this.featureNames)e[t]=this.getFeature(t);return e}static get languageID(){return s}static get languageCode(){return g}static get languageCodes(){return[]}static get codes(){return console.warn('Use static "languageCodes" instead'),this.languageCodes}get codes(){return console.warn('Please use a static version of "codes" instead'),this.constructor.languageCodes}toCode(){return console.warn('Please use a static "languageCode" instead'),this.constructor.languageCode}static toCode(){return console.warn('Please use a static "languageCode" instead'),this.languageCode}static get featureValues(){return new Map([[feature_Feature.types.part,[S,w,F,C,D,b,L,T,V,N,R,P,M,x,j,G,B]],[feature_Feature.types.gender,[k,W,H]],[feature_Feature.types.type,[kr,Br]],[feature_Feature.types.person,[er,tr,rr]],[feature_Feature.types.age,[]],[feature_Feature.types.area,[]],[feature_Feature.types.source,[]],[feature_Feature.types.frequency,[]],[feature_Feature.types.geo,[]],[feature_Feature.types.pronunciation,[]],[feature_Feature.types.kind,[]],[feature_Feature.types.comparison,[]],[feature_Feature.types.morph,[]],[feature_Feature.types.stemtype,[]],[feature_Feature.types.derivtype,[]]])}static get sourceLanguage(){return console.warn("Please use languageID directly"),this.languageID}get sourceLanguage(){return console.warn("Please use languageID directly"),this.constructor.languageID}static getFeatureType(e){console.warn("Please use getFeature instead");let t=this.featureValues;if(t.has(e))return new ta(e,t.get(e),this.languageID);throw new Error(`Feature "${e}" is not defined`)}static getFeature(e){let t=this.featureValues;if(t.has(e)){let r=t.get(e);return new feature_Feature(e,r,this.languageID,1,r)}throw new Error(`Feature "${e}" is not defined`)}_initializeFeatures(){let e={};for(const t of this.constructor.featureValues.keys())e[t]=this.constructor.getFeature(t);return e}grammarFeatures(){return console.warn('Please use a static version of "grammarFeatures" instead'),this.constructor.grammarFeatures()}static grammarFeatures(){return[]}static canInflect(e){return!1}static supportsLanguage(e){return this.languageCodes.includes[e]}static normalizeWord(e){return e}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}alternateWordEncodings(e,t,r,a){return console.warn('Please use static "alternateWordEncodings" instead'),this.constructor.alternateWordEncodings(e,t,r,a)}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}getPunctuation(){return console.warn('Please use a static version of "getPunctuation"'),this.constructor.getPunctuation()}toString(){return String(this.constructor.languageCode)}isEqual(e){return pa.compareLanguages(this.languageID,e.languageID)}static hasCode(e){if(this.isLanguageCode(e))return this.languageCodes.includes(e);throw new Error(`Format of a "${e}" is incorrect`)}static isLanguageID(e){return"symbol"==typeof e}static isLanguageCode(e){return!language_model_LanguageModel.isLanguageID(e)}canInflect(e){return console.warn('Please use a static version of "canInflect" instead'),this.constructor.canInflect(e)}static groupInflectionsForDisplay(e){let t=new Map,r=this.aggregateInflectionsForDisplay(e);for(let e of r){let r=new ra(e,[feature_Feature.types.part,feature_Feature.types.declension,feature_Feature.types.dialect,feature_Feature.types.comparison],{prefix:e.prefix,suffix:e.suffix,stem:e.stem}),a=r.toString();t.has(a)?t.get(a).append(e):t.set(a,new aa(r,[e]))}for(let e of t){let t=new Map;for(let r of e[1].inflections){let e,a=!1;r[feature_Feature.types.grmCase]?(e=feature_Feature.types.number,a=!0):e=r[feature_Feature.types.tense]?feature_Feature.types.tense:r[feature_Feature.types.part]===G?feature_Feature.types.part:r[feature_Feature.types.part]===S?feature_Feature.types.part:"misc";let n=new ra(r,[e],{isCaseInflectionSet:a}),u=n.toString();t.has(u)?t.get(u).append(r):t.set(u,new aa(n,[r]))}for(let e of t){let t=new Map,r=new Map;for(let a of e[1].inflections){let e=a[feature_Feature.types.grmCase]?Math.max(a[feature_Feature.types.grmCase].items.map(e=>e.sortOrder)):1,n=new ra(a,[feature_Feature.types.tense,feature_Feature.types.voice]),u=n.toString();t.has(u)?t.get(u).append(a):(t.set(u,new aa(n,[a],e)),r.set(u,e))}e[1].inflections=[];let a=Array.from(t.keys()).sort((e,t)=>{let a=r.get(e),n=r.get(t);return a>n?-1:n>a?1:0});for(let r of a)e[1].inflections.push(t.get(r))}for(let e of t){let t=e[1];for(let e of t.inflections){let t=new Map;for(let r of e.inflections){let e=new ra(r,[feature_Feature.types.grmCase,feature_Feature.types.comparison,feature_Feature.types.gender,feature_Feature.types.number,feature_Feature.types.person,feature_Feature.types.tense,feature_Feature.types.mood,feature_Feature.types.voice]),a=e.toString();t.has(a)?t.get(a).append(r):t.set(a,new aa(e,[r]))}e.inflections=Array.from(t.values())}}e[1].inflections=Array.from(t.values())}return Array.from(t.values())}static aggregateInflectionsForDisplay(e){return e}groupInflectionsForDisplay(e){return console.warn('Please use a static version of "groupInflectionsForDisplay" instead'),this.constructor.groupInflectionsForDisplay(e)}}var na=language_model_LanguageModel;let ua=new Map,ia=!1;class latin_language_model_LatinLanguageModel extends na{static get languageID(){return l}static get languageCode(){return p}static get languageCodes(){return[h,p]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}static get featureValues(){return new Map([...na.featureValues,[feature_Feature.types.grmClass,[Wr,Hr,qr,Kr,$r,zr]],[feature_Feature.types.number,[kt,Wt]],[feature_Feature.types.grmCase,[He,Ve,_e,ae,te,Be,Et]],[feature_Feature.types.declension,[er,tr,rr,ar,nr]],[feature_Feature.types.tense,[mr,dr,cr,pr,hr,fr]],[feature_Feature.types.voice,[br,Lr]],[feature_Feature.types.mood,[Tt,Gt,Lt,xt,Bt,Dt,xt,Vt]],[feature_Feature.types.conjugation,[er,tr,rr,ar]]])}static get typeFeatures(){return ia||this.initTypeFeatures(),ua}static initTypeFeatures(){for(const e of this.featureNames)ua.set(e,this.getFeature(e));ia=!0}static grammarFeatures(){return[feature_Feature.types.part,feature_Feature.types.grmCase,feature_Feature.types.mood,feature_Feature.types.declension,feature_Feature.types.tense,feature_Feature.types.conjugation]}static canInflect(e){return!0}static normalizeWord(e){return e&&(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/[\u00c0\u00c1\u00c2\u00c3\u00c4\u0100\u0102]/g,"A")).replace(/[\u00c8\u00c9\u00ca\u00cb\u0112\u0114]/g,"E")).replace(/[\u00cc\u00cd\u00ce\u00cf\u012a\u012c]/g,"I")).replace(/[\u00d2\u00d3\u00d4\u00df\u00d6\u014c\u014e]/g,"O")).replace(/[\u00d9\u00da\u00db\u00dc\u016a\u016c]/g,"U")).replace(/[\u00c6\u01e2]/g,"AE")).replace(/[\u0152]/g,"OE")).replace(/[\u00e0\u00e1\u00e2\u00e3\u00e4\u0101\u0103]/g,"a")).replace(/[\u00e8\u00e9\u00ea\u00eb\u0113\u0115]/g,"e")).replace(/[\u00ec\u00ed\u00ee\u00ef\u012b\u012d\u0129]/g,"i")).replace(/[\u00f2\u00f3\u00f4\u00f5\u00f6\u014d\u014f]/g,"o")).replace(/[\u00f9\u00fa\u00fb\u00fc\u016b\u016d]/g,"u")).replace(/[\u00e6\u01e3]/g,"ae")).replace(/[\u0153]/g,"oe")),e}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static getInflectionConstraints(e){let t={fullFormBased:!1,suffixBased:!1,pronounClassRequired:!1};return e.hasOwnProperty(feature_Feature.types.part)?[G,B].includes(e[feature_Feature.types.part].value)?(t.fullFormBased=!0,t.suffixBased=!0):e[feature_Feature.types.part].value===M?t.fullFormBased=!0:t.suffixBased=!0:console.warn("Unable to set grammar: part of speech data is missing or is incorrect",e[feature_Feature.types.part]),t}}let oa=new Map,sa=!1;class greek_language_model_GreekLanguageModel extends na{static get languageID(){return c}static get languageCode(){return m}static get languageCodes(){return[m]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}static get featureValues(){return new Map([...na.featureValues,[feature_Feature.types.grmClass,[Kr,Jr,Xr,Qr,zr,Wr,qr,Yr,Hr,$r]],[feature_Feature.types.number,[kt,Wt,Ht]],[feature_Feature.types.grmCase,[He,Ve,_e,ae,Et]],[feature_Feature.types.declension,[er,tr,rr]],[feature_Feature.types.tense,[mr,dr,cr,pr,hr,fr,lr]],[feature_Feature.types.voice,[Lr,br,Tr,Vr]],[feature_Feature.types.mood,[Tt,Gt,Mt,Lt]],[feature_Feature.types.dialect,["attic","epic","doric"]]])}static get typeFeatures(){return sa||this.initTypeFeatures(),oa}static initTypeFeatures(){for(const e of this.featureNames)oa.set(e,this.getFeature(e));sa=!0}static canInflect(e){return!0}static grammarFeatures(){return[feature_Feature.types.part,feature_Feature.types.grmCase,feature_Feature.types.mood,feature_Feature.types.declension,feature_Feature.types.tense,feature_Feature.types.voice]}static normalizeWord(e){return e?e.normalize("NFC"):e}static alternateWordEncodings(e,t=null,r=null,a=null){let n=greek_language_model_GreekLanguageModel.normalizeWord(e).toLocaleLowerCase(),u=n.replace(/[\u{1FB0}\u{1FB1}]/gu,"α").replace(/[\u{1FB8}\u{1FB9}]/gu,"Α").replace(/[\u{1FD0}\u{1FD1}]/gu,"ι").replace(/[\u{1FD8}\u{1FD9}]/gu,"Ι").replace(/[\u{1FE0}\u{1FE1}]/gu,"υ").replace(/[\u{1FE8}\u{1FE9}]/gu,"Υ").replace(/[\u{00AF}\u{0304}\u{0306}]/gu,""),i=n.replace(/\u{0390}/gu,"ί").replace(/\u{03AA}/gu,"Ι").replace(/\u{03AB}/gu,"Υ").replace(/\u{03B0}/gu,"ύ").replace(/\u{03CA}/gu,"ι").replace(/\u{03CB}/gu,"υ").replace(/\u{1FD2}/gu,"ὶ").replace(/\u{1FD3}/gu,"ί").replace(/\u{1FD7}/gu,"ῖ").replace(/\u{1FE2}/gu,"ὺ").replace(/\u{1FE3}/gu,"ύ").replace(/\u{1FE7}/gu,"ῦ").replace(/\u{1FC1}/gu,"῀").replace(/\u{1FED}/gu,"`").replace(/\u{1FEE}/gu,"´").replace(/[\u{00A8}\u{0308}]/gu,"");return"strippedDiaeresis"===a?[i]:[u]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static getInflectionConstraints(e){let t={fullFormBased:!1,suffixBased:!1,pronounClassRequired:!1},r=[M,V,C];return e.hasOwnProperty(feature_Feature.types.part)?r.includes(e[feature_Feature.types.part].value)?t.fullFormBased=!0:t.suffixBased=!0:console.warn("Unable to set grammar: part of speech data is missing or is incorrect",e[feature_Feature.types.part]),t.pronounClassRequired=pa.compareLanguages(greek_language_model_GreekLanguageModel.languageID,e.languageID)&&e.hasOwnProperty(feature_Feature.types.part)&&e[feature_Feature.types.part].value===M,t}static getPronounClasses(e,t,r=!0){let a=new Set,n=e.filter(e=>{let a=!1;return e.value&&(a=r?greek_language_model_GreekLanguageModel.normalizeWord(e.value)===greek_language_model_GreekLanguageModel.normalizeWord(t):e.value===t),a});for(const e of n)if(e.features.hasOwnProperty(feature_Feature.types.grmClass))for(const t of e.features[feature_Feature.types.grmClass].values)a.add(t);if(a.size>0)return new feature_Feature(feature_Feature.types.grmClass,Array.from(a),greek_language_model_GreekLanguageModel.languageID)}}let la=new Map,ca=!1;class arabic_language_model_ArabicLanguageModel extends na{static get languageID(){return f}static get languageCode(){return _}static get languageCodes(){return[_,E]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return o}static get baseUnit(){return n}static get typeFeatures(){return ca||this.initTypeFeatures(),la}static initTypeFeatures(){for(const e of this.featureNames)la.set(e,this.getFeature(e));ca=!0}static canInflect(e){return!1}static alternateWordEncodings(e,t=null,r=null,a=null){let n=e.replace(/[\u{064B}\u{064C}\u{064D}\u{0640}]/gu,""),u=n.replace(/[\u{0622}\u{0623}\u{0625}]/gu,"ا"),i=u.replace(/[\u{064E}\u{064F}\u{0650}\u{0670}\u{0671}]/gu,""),o=i.replace(/\u{0651}/gu,""),s=o.replace(/\u{0652}/gu,""),l=s.replace(/\u{0627}/gu,""),c=new Map([["tanwin",n],["hamza",u],["harakat",i],["shadda",o],["sukun",s],["alef",l]]);return null!==a&&c.has(a)?[c.get(a)]:Array.from(c.values())}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static aggregateInflectionsForDisplay(e){let t=[],r={[T]:[],[F]:[],[O]:[]};for(let a of e)a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/ADJ[uaiNK]/)?r[F].push(a):a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/NOUN[uaiNK]/)?r[T].push(a):a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)?r[O].push(a):(a.example=null,t.push(a));for(let e of Object.keys(r)){1!==t.filter(t=>t[feature_Feature.types.part].value===e).length&&t.push(...r[e])}return t}}let fa=new Map,da=!1;class persian_language_model_PersianLanguageModel extends na{static get languageID(){return d}static get languageCode(){return y}static get languageCodes(){return[y,I,v,A]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return o}static get baseUnit(){return n}static get typeFeatures(){return da||this.initTypeFeatures(),fa}static initTypeFeatures(){for(const e of this.featureNames)fa.set(e,this.getFeature(e));da=!0}static canInflect(e){return!1}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}}const ga=new Map([[h,latin_language_model_LatinLanguageModel],[p,latin_language_model_LatinLanguageModel],[m,greek_language_model_GreekLanguageModel],[_,arabic_language_model_ArabicLanguageModel],[E,arabic_language_model_ArabicLanguageModel],[y,persian_language_model_PersianLanguageModel]]);class language_model_factory_LanguageModelFactory{static supportsLanguage(e){return e="symbol"==typeof e?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e):e,ga.has(e)}static getLanguageModel(e){let t=language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e);return ga.has(t)?ga.get(t):na}static getLanguageForCode(e=null){let t=ga.get(e);return t?new t:new na}static getLanguageIdFromCode(e){for(const t of ga.values())if(t.hasCode(e))return t.languageID;return s}static getLanguageCodeFromId(e){for(const t of ga.values())if(t.languageID.toString()===e.toString())return t.languageCode;return g}static getLanguageAttrs(e){return"symbol"==typeof e?{languageID:e,languageCode:language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e)}:{languageID:language_model_factory_LanguageModelFactory.getLanguageIdFromCode(e),languageCode:e}}static compareLanguages(e,t){return(e="symbol"==typeof e?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e):e)===(t="symbol"==typeof t?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(t):t)}}var pa=language_model_factory_LanguageModelFactory;const ha={en:{feminine:{full:"feminine",abbr:"f."},masculine:{full:"masculine",abbr:"m."},neuter:{full:"neuter",abbr:"n."},nominative:{full:"nominative",abbr:"nom."},accusative:{full:"accusative",abbr:"acc."},genitive:{full:"genitive",abbr:"gen."},vocative:{full:"vocative",abbr:"voc."},ablative:{full:"ablative",abbr:"abl."},locative:{full:"locative",abbr:"loc."},dative:{full:"dative",abbr:"dat."},positive:{full:"positive",abbr:"pos."},comparative:{full:"comparative",abbr:"comp."},superlative:{full:"superlative",abbr:"super."},singular:{full:"singular",abbr:"s."},plural:{full:"plural",abbr:"p."},dual:{full:"dual",abbr:"dl."},present:{full:"present",abbr:"pr."},imperfect:{full:"imperfect",abbr:"imp."},perfect:{full:"perfect",abbr:"perf."},pluperfect:{full:"pluperfect",abbr:"pluperf."},plusquamperfect:{full:"plusquamperfect",abbr:"pqpf."},"future perfect":{full:"future perfect",abbr:"fut. perf."},future:{full:"future",abbr:"fut."},aorist:{full:"aorist",abbr:"aor."},indicative:{full:"indicative",abbr:"ind."},subjunctive:{full:"subjunctive",abbr:"sub."},infinitive:{full:"infinitive",abbr:"inf."},imperative:{full:"imperative",abbr:"imp."},supine:{full:"supine",abbr:"sup."},participle:{full:"participle",abbr:"par."},optative:{full:"optative",abbr:"opt."},active:{full:"active",abbr:"act."},passive:{full:"passive",abbr:"pass."},middle:{full:"middle",abbr:"mid."},mediopassive:{full:"mediopassive",abbr:"mp."},deponens:{full:"deponens",abbr:"dep."}}};class feature_Feature{constructor(e,t,r,a=1,n=[]){if(!feature_Feature.isAllowedType(e))throw new Error('Features of "'+e+'" type are not supported.');if(!t)throw new Error("Feature should have a non-empty value(s).");if(!r)throw new Error("No language ID is provided");this.type=e,this.languageID=r,this.sortOrder=a,this.allowedValues=n,this._data=feature_Feature.dataValuesFromInput(t),this.sort()}static dataValuesFromInput(e){let t;return(t=Array.isArray(e)?Array.isArray(e[0])?e:e.map((t,r)=>[t,e.length-r]):[[e,this.defaultSortOrder]]).map(e=>({value:e[0],sortOrder:Number.parseInt(e[1])}))}static newFromFtr(e){}static get types(){return{word:"word",fullForm:"full form",hdwd:"headword",part:"part of speech",number:"number",case:"case",grmCase:"case",declension:"declension",gender:"gender",type:"type",class:"class",grmClass:"class",conjugation:"conjugation",comparison:"comparison",tense:"tense",voice:"voice",mood:"mood",person:"person",frequency:"frequency",meaning:"meaning",source:"source",footnote:"footnote",dialect:"dialect",note:"note",pronunciation:"pronunciation",age:"age",area:"area",geo:"geo",kind:"kind",derivtype:"derivtype",stemtype:"stemtype",morph:"morph",var:"var"}}static isAllowedType(e){return Object.values(this.types).includes(`${e}`)}static get defaultSortOrder(){return 1}static get joinSeparator(){return" "}static get defaultImporterName(){return"default"}get allowsUnrestrictedValues(){return 0===this.allowedValues.length}sort(){this._data.sort((e,t)=>e.sortOrder!==t.sortOrder?t.sortOrder-e.sortOrder:e.value.localeCompare(t.value))}compareTo(e){return e?e._data[0].sortOrder-this._data[0].sortOrder:-1}get items(){return this._data}get value(){return this.values.join(this.constructor.joinSeparator)}get values(){return this._data.map(e=>e.value)}getValue(e){return this._data.find(t=>t.value===e)}get valQty(){return this._data.length}get isEmpty(){return 0===this.valQty}get isSingle(){return 1===this.valQty}get isMultiple(){return this.valQty>1}toString(){return this.value}hasValue(e){return this.values.includes(e)}hasValues(e){let t=!0;for(let r of e)t=t&&this.hasValue(r);return t}hasSomeValues(e){let t=!1;for(let r of e)t=t||this.hasValue(r);return t}get valuesUnrestricted(){return 0===this.allowedValues.length}isEqual(e){return this.type===e.type&&pa.compareLanguages(this.languageID,e.languageID)&&this.value===e.value}addValue(e,t=this.constructor.defaultSortOrder){return this.hasValue(e)?console.warn(`Value "${e}" already exists. If you want to change it, use "getValue" to access it directly.`):(this._data.push({value:e,sortOrder:t}),this.sort()),this}addValues(e){let t=this.constructor.dataValuesFromInput(e),r=t.map(e=>e.value);return this.hasSomeValues(r)?console.warn(`One or several values from "${r}" already exist. If you want to change it, use "getValue" to access a value directly.`):(this._data=this._data.concat(t),this.sort()),this}removeValue(e){console.warn("This feature is not implemented yet")}createFeature(e,t=this.constructor.defaultSortOrder){return new feature_Feature(this.type,[[e,t]],this.languageID,this.sortOrder,this.allowedValues)}createFeatures(e){return new feature_Feature(this.type,e,this.languageID,this.sortOrder,this.allowedValues)}get ownFeatures(){return this.values.map(e=>new feature_Feature(this.type,e,this.languageID,1,this.allowedValues))}getCopy(){let e=this._data.map(e=>[e.value,e.sortOrder]);return new feature_Feature(this.type,e,this.languageID,this.sortOrder,this.allowedValues.slice())}toLocaleStringAbbr(e="en"){return this.values.map(t=>ha[e][t]?ha[e][t].abbr:t).join(this.constructor.joinSeparator)}addImporter(e=new ea,t=this.constructor.defaultImporterName){return this.importers||(this.importers=new Map),this.importers.set(t,e),e}getImporter(e=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(e))throw new Error(`Importer "${e}" does not exist`);return this.importers.get(e)}addFromImporter(e,t=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(t))throw new Error(`Importer "${t}" does not exist`);const r=this.importers.get(t);return e=this.constructor.dataValuesFromInput(e),this._data.push(...e.map(e=>({value:r.get(e.value),sortOrder:e.sortOrder}))),this.sort(),this}createFromImporter(e,t=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(t))throw new Error(`Importer "${t}" does not exist`);const r=this.importers.get(t);Array.isArray(e)||(e=[e]);let a=e.map(e=>r.get(e));return a=a.reduce((e,t)=>e.concat(t),[]),new feature_Feature(this.type,a,this.languageID,this.sortOrder,this.allowedValues)}}class grm_feature_GrmFeature{constructor(e,t,r,a=1){if(!grm_feature_GrmFeature.types.isAllowed(t))throw new Error('Features of "'+t+'" type are not supported.');if(!e)throw new Error("Feature should have a non-empty value.");if(!t)throw new Error("Feature should have a non-empty type.");if(!r)throw new Error("Feature constructor requires a language");this.value=e,this.type=t,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(r)),this.sortOrder=a}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}isEqual(e){if(Array.isArray(e.value)){if(!Array.isArray(this.value)||this.value.length!==e.value.length)return!1;let t=this.type===e.type&&pa.compareLanguages(this.languageID,e.languageID);return t=t&&this.value.every(function(t,r){return t===e.value[r]})}return pa.compareLanguages(this.languageID,e.languageID)&&this.type===e.type&&this.value===e.value}isSubsetof(e){Array.isArray(e)||(e=[e]);let t=e[0].languageID,r=e[0].type,a=e.map(e=>e.value);return!(!pa.compareLanguages(this.languageID,t)||this.type!==r||!a.includes(this.value))}hasValue(e){return Array.isArray(this.value)?this.value.includes(e):this.value===e}toString(){return Array.isArray(this.value)?this.value.join(","):this.value}toLocaleStringAbbr(e="en"){return Array.isArray(this.value)?this.value.map(t=>this.toLocaleStringAbbr(t,e)):ha[e][this.value].abbr}static toFeature(e){if(Array.isArray(e)){if(!(e[0]instanceof feature_Feature)){const t=e[0].type,r=e[0].languageID,a=e.map(e=>e.value);return new feature_Feature(t,a,r)}}else if(!(e instanceof feature_Feature))return new feature_Feature(e.type,e.value,e.languageID);return e}}grm_feature_GrmFeature.types={word:"word",part:"part of speech",number:"number",case:"case",grmCase:"case",declension:"declension",gender:"gender",type:"type",class:"class",grmClass:"class",conjugation:"conjugation",comparison:"comparison",tense:"tense",voice:"voice",mood:"mood",person:"person",frequency:"frequency",meaning:"meaning",source:"source",footnote:"footnote",dialect:"dialect",note:"note",pronunciation:"pronunciation",age:"age",area:"area",geo:"geo",kind:"kind",derivtype:"derivtype",stemtype:"stemtype",morph:"morph",var:"var",isAllowed(e){let t=`${e}`;return Object.values(this).includes(t)}};var ma=grm_feature_GrmFeature;var _a=class{constructor(e=[]){this._features=[],this._types={},this.add(e)}add(e){if(!e||!Array.isArray(e))throw new Error("Features must be defined and must come in an array.");for(let t of e)this._features.push(t),this._types[t.type]=t}get items(){return this._features}forEach(e){this._features.forEach(e)}ofType(e){if(this.hasType(e))return this._types[e]}hasType(e){return this._types.hasOwnProperty(e)}},Ea=r(0),Ia=r.n(Ea);class lemma_Lemma{constructor(e,t,r=[],a={}){if(!e)throw new Error("Word should not be empty.");if(!t)throw new Error("Language should not be empty.");this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(t)),this.word=e,this.principalParts=r,this.features={},this.ID=Ia()()}get language(){return console.warn('Please use "languageID" instead of "language"'),this.languageCode}static readObject(e){return new lemma_Lemma(e.word,e.language,e.principalParts,e.pronunciation)}set feature(e){if(console.warn('Please use "addFeature" instead'),!e)throw new Error("feature data cannot be empty.");Array.isArray(e)||(e=[e]);let t=e[0].type;this.features[t]=[];for(let r of e){if(!(r instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(r.languageID,this.languageID))throw new Error('Language "'+r.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this.features[t].push(r)}}addFeature(e){if(!e)throw new Error("feature data cannot be empty.");if(!(e instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error('Language "'+e.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this.features[e.type]=e}addFeatures(e){if(!Array.isArray(e))throw new Error("Features must be in an array");for(let t of e)this.addFeature(t)}addTranslation(e){if(!e)throw new Error("translation data cannot be empty.");if("Translation"!==e.constructor.name)throw new Error("translation data must be a Translation object.");this.translation=e}isFullHomonym(e){return this.word===e.word&&this.features[feature_Feature.types.part]&&e.features[feature_Feature.types.part]&&this.features[feature_Feature.types.part].isEqual(e.features[feature_Feature.types.part])}}var ya=lemma_Lemma;class inflection_Inflection{constructor(e=null,t,r=null,a=null,n=null){if(!e&&!r)throw new Error("At least stem or suffix must be defined");if(!t)throw new Error("Language should not be empty.");if(!pa.supportsLanguage(t))throw new Error(`language ${t} not supported.`);this.stem=e,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(t)),this.model=pa.getLanguageModel(this.languageID),this.features=new Set,this.constraints={fullFormBased:!1,suffixBased:!1,obligatoryMatches:[],optionalMatches:[]},this.suffix=r,this.prefix=a,this.example=n}get form(){let e,t,r,a,n;return n=this.stem?this.stem:"",a=this.stem?" - ":"",this.model.direction===o?(t=this.prefix?a+this.prefix:"",e=(r=this.suffix?this.suffix+a:"")+n+t):e=(t=this.prefix?this.prefix+a:"")+n+(r=this.suffix?a+this.suffix:""),e}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}setConstraints(){if(this.model.hasOwnProperty("getInflectionConstraints")){let e=this.model.getInflectionConstraints(this);this.constraints=Object.assign(this.constraints,e)}}compareWithWordDependsOnType(e,t,r=!0){const a=pa.getLanguageModel(this.languageID);let n;return n=this.constraints.irregularVerb?"Suffix"===t?this.suffix:this[feature_Feature.types.fullForm]?this[feature_Feature.types.fullForm].value:this.form:this.constraints.suffixBased?this.suffix:this.form,r?a.normalizeWord(n)===a.normalizeWord(e):n===e}compareWithWord(e,t=!0){const r=pa.getLanguageModel(this.languageID),a=this.constraints.suffixBased?this.suffix:this.form;return t?r.normalizeWord(a)===r.normalizeWord(e):a===e}disambiguatedBy(e){let t=!0;0!==this.features.length&&0!==e.features.length||(t=!1),e.features.length>this.features.length&&(t=!1);for(let r of e.features)if(!this[r]||!this[r].isEqual(e[r])){t=!1;break}return t}static readObject(e){let t=new inflection_Inflection(e.stem,e.languageCode,e.suffix,e.prefix,e.example);return t.languageID=pa.getLanguageIdFromCode(t.languageCode),t}set feature(e){if(console.warn('Please use "addFeature" instead.'),!e)throw new Error("Inflection feature data cannot be empty.");Array.isArray(e)||(e=[e]);let t=e[0].type;this[t]=[];for(let r of e){if(!(r instanceof feature_Feature))throw new Error("Inflection feature data must be a Feature object.");if(!pa.compareLanguages(r.languageID,this.languageID))throw new Error(`Language "${r.languageID.toString()}" of a feature does not match\n a language "${this.languageID.toString()}" of an Inflection object.`);this[t].push(r),this.features.add(t)}}addFeature(e){if(!e)throw new Error("feature data cannot be empty.");if(!(e instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error('Language "'+e.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this[e.type]=e,this.features.add(e.type)}addFeatures(e){if(!Array.isArray(e))throw new Error("Features must be in an array");for(let t of e)this.addFeature(t)}hasFeatureValue(e,t){return!!this.hasOwnProperty(e)&&this[e].values.includes(t)}}var Aa=inflection_Inflection;class lexeme_Lexeme{constructor(e,t,r=null){if(!e)throw new Error("Lemma should not be empty.");if(!(e instanceof ya))throw new Error("Lemma should be of Lemma object type.");if(!t)throw new Error("Inflections data should not be empty.");if(!Array.isArray(t))throw new Error("Inflection data should be provided in an array.");for(let e of t)if(!(e instanceof Aa))throw new Error("All inflection data should be of Inflection object type.");if(null!==r&&!(r instanceof definition_set_DefinitionSet))throw new Error("Meaning should be of DefinitionSet object type.");this.lemma=e,this.altLemmas=[],this.inflections=[],t.forEach(e=>{this.addInflection(e)}),this.meaning=r||new definition_set_DefinitionSet(this.lemma.word,this.lemma.languageID),this.disambiguated=!1}addInflection(e){e.lemma=this.lemma,this.inflections.push(e)}addAltLemma(e){this.altLemmas.push(e)}isPopulated(){return Object.entries(this.lemma.features).length>0||!this.meaning.isEmpty()||this.inflections.length>0}static disambiguate(e,t){let r=new lexeme_Lexeme(e.lemma,e.inflections,e.meaning);if(e.lemma.isFullHomonym(t.lemma)&&t.inflections.length>0){r.disambiguated=!0;let e=[];for(let a of r.inflections)for(let r of t.inflections)a.disambiguatedBy(r)&&e.push(a);if(r.inflections=e,0===r.inflections.length)for(let e of t.inflections)r.addInflection(e)}return r}getGroupedInflections(){return pa.getLanguageModel(this.lemma.languageID).groupInflectionsForDisplay(this.inflections)}static readObject(e){let t=ya.readObject(e.lemma),r=[];for(let t of e.inflections)r.push(Aa.readObject(t));let a=new lexeme_Lexeme(t,r);return a.meaning=definition_set_DefinitionSet.readObject(e.meaning),a}static getSortByTwoLemmaFeatures(e,t){return(r,a)=>{if(r.lemma.features[e]&&a.lemma.features[e]||!r.lemma.features[e]&&!a.lemma.features[[e]]){let n;return 0!==(n=r.lemma.features[e]&&a.lemma.features[e]?r.lemma.features[e].compareTo(a.lemma.features[e]):0)?n:r.lemma.features[t]&&a.lemma.features[t]?r.lemma.features[t].compareTo(a.lemma.features[t]):r.lemma.features[t]&&!a.lemma.features[t]?-1:!r.lemma.features[t]&&a.lemma.features[t]?1:0}return r.lemma.features[e]&&!a.lemma.features[e]?-1:!r.lemma.features[e]&&a.lemma.features[e]?1:0}}}var va=lexeme_Lexeme;class homonym_Homonym{constructor(e,t){if(!e||Array.isArray(e)&&0===e.length)throw new Error("Lexemes data should not be empty.");if(!Array.isArray(e))throw new Error("Lexeme data should be provided in an array.");for(let t of e)if(!(t instanceof va))throw new Error("All lexeme data should be of Lexeme object type.");this.lexemes=e,this.targetWord=t}static createSimpleForm(e,t,r=[]){let a=new ya(e,t),n=new va(a,r);return new homonym_Homonym([n],e)}static readObject(e){let t=[];if(e.lexemes)for(let r of e.lexemes)t.push(va.readObject(r));let r=new homonym_Homonym(t);return e.targetWord&&(r.targetWord=e.targetWord),r}get language(){return console.warn("Please use languageID instead"),pa.getLanguageCodeFromId(this.languageID)}get languageID(){if(this.lexemes&&this.lexemes[0]&&this.lexemes[0].lemma&&this.lexemes[0].lemma.languageID)return this.lexemes[0].lemma.languageID;throw new Error("Homonym has not been initialized properly. Unable to obtain language ID information.")}get inflections(){let e=[];for(const t of this.lexemes)e=e.concat(t.inflections);return e}isDisambiguated(){return this.lexemes.filter(e=>e.disambiguated).length>0}static disambiguate(e,t){if(0===t.length)return e;let r=t.shift(),a=[],n=[];for(let t of r.lexemes){let r=!1;for(let n of e.lexemes){let e=va.disambiguate(n,t);a.push(e),e.disambiguated&&(r=!0)}r||(t.disambiguated=!0,n.push(t))}let u=new homonym_Homonym([...a,...n],e.targetWord);return homonym_Homonym.disambiguate(u,t)}}var Fa=homonym_Homonym;var Sa=class{constructor(e="",t="",r=new Map([["default",t]])){this.uri=e,this.rights=r,this.rights.has("default")||this.rights.set("default",t)}toString(){return this.rights.get("default")}toLocaleString(e){return this.rights.get(e)||this.rights.get("default")}static getProxy(e=null,t={}){return new Proxy(t,{get:function(t,r){return"provider"===r?e:t[r]}})}};class Translation{constructor(e,t,r=[]){if(!e)throw new Error("Lemma should not be empty.");this.lemmaWord=e.word,this.languageCode=t,this.glosses=r}static readTranslationFromJSONList(e,t,r){if(!r||!Array.isArray(r))throw new Error("Recieved not proper translation list",r);let a=r.find(function(t){return t.in===e.word});return new Translation(e,t,a.translations)}static loadTranslations(e,t,r){e.addTranslation(this.readTranslationFromJSONList(e,t,r))}}var wa=Translation;r.d(t,"Constants",function(){return a}),r.d(t,"Definition",function(){return Zr}),r.d(t,"DefinitionSet",function(){return definition_set_DefinitionSet}),r.d(t,"Feature",function(){return feature_Feature}),r.d(t,"GrmFeature",function(){return ma}),r.d(t,"FeatureType",function(){return ta}),r.d(t,"FeatureList",function(){return _a}),r.d(t,"FeatureImporter",function(){return ea}),r.d(t,"Inflection",function(){return Aa}),r.d(t,"LanguageModelFactory",function(){return pa}),r.d(t,"Homonym",function(){return Fa}),r.d(t,"Lexeme",function(){return va}),r.d(t,"Lemma",function(){return ya}),r.d(t,"LatinLanguageModel",function(){return latin_language_model_LatinLanguageModel}),r.d(t,"GreekLanguageModel",function(){return greek_language_model_GreekLanguageModel}),r.d(t,"ArabicLanguageModel",function(){return arabic_language_model_ArabicLanguageModel}),r.d(t,"PersianLanguageModel",function(){return persian_language_model_PersianLanguageModel}),r.d(t,"ResourceProvider",function(){return Sa}),r.d(t,"Translation",function(){return wa})}])}); \ No newline at end of file diff --git a/dist/alpheios-data-models.node.js b/dist/alpheios-data-models.node.js index 8908da1..45aacb2 100644 --- a/dist/alpheios-data-models.node.js +++ b/dist/alpheios-data-models.node.js @@ -1151,12 +1151,17 @@ class Feature { /** * Compares a feature's values to another feature's values for sorting * @param {Feature} otherFeature the feature to compare this feature's values to - * @return {integer} >=1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second + * @return {integer} < 1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second */ compareTo (otherFeature) { // the data values are sorted upon construction and insertion so we only should need to look at the first values // feature sortOrders are descending (i.e. 5 sorts higher than 1) - return otherFeature._data[0].sortOrder - this._data[0].sortOrder + if (otherFeature) { + return otherFeature._data[0].sortOrder - this._data[0].sortOrder + } else { + // if the other feature isn't defined, this one sorts first + return -1 + } } get items () { @@ -4201,6 +4206,7 @@ class Lexeme { } this.lemma = lemma + this.altLemmas = [] this.inflections = [] inflections.forEach(i => { this.addInflection(i) }) this.meaning = meaning || new _definition_set__WEBPACK_IMPORTED_MODULE_2__["default"](this.lemma.word, this.lemma.languageID) @@ -4216,6 +4222,14 @@ class Lexeme { this.inflections.push(inflection) } + /** + * add an alternative lemma to the lexeme + * @param {Lemma} lemma + */ + addAltLemma (lemma) { + this.altLemmas.push(lemma) + } + /** * test to see if a lexeme is populated with meaningful data * Returns true if any of these are true: diff --git a/dist/alpheios-data-models.node.js.map b/dist/alpheios-data-models.node.js.map index b9b0146..c10987f 100644 --- a/dist/alpheios-data-models.node.js.map +++ b/dist/alpheios-data-models.node.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///../node_modules/uuid/lib/bytesToUuid.js","webpack:///../node_modules/uuid/lib/rng.js","webpack:///../node_modules/uuid/v4.js","webpack:///./arabic_language_model.js","webpack:///./constants.js","webpack:///./definition-set.js","webpack:///./definition.js","webpack:///./driver.js","webpack:///./feature.js","webpack:///./feature_importer.js","webpack:///./feature_list.js","webpack:///./feature_type.js","webpack:///./greek_language_model.js","webpack:///./grm-feature.js","webpack:///./homonym.js","webpack:///./i18n.js","webpack:///./inflection.js","webpack:///./inflection_group.js","webpack:///./inflection_grouping_key.js","webpack:///./language_model.js","webpack:///./language_model_factory.js","webpack:///./latin_language_model.js","webpack:///./lemma.js","webpack:///./lexeme.js","webpack:///./persian_language_model.js","webpack:///./resource_provider.js","webpack:///./translation.js","webpack:///external \"crypto\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvBA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;ACPA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAChE;AACA,oCAAoC,KAAK,GAAG,KAAK,GAAG,KAAK,UAAU,KAAK;AACxE;AACA,qCAAqC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1E;AACA,qCAAqC,KAAK;AAC1C;AACA,mCAAmC,KAAK;AACxC;AACA,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1NA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9EA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAsBA;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gCAAgC,SAAS,gDAAgD,EAAE;AAC3F;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD,MAAM;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL,6BAA6B,MAAM;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kDAAkD,OAAO;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA,8CAA8C,SAAS,yDAAyD,EAAE;AAClH;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzbA;AAAA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5DA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;;AAEpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,+BAA+B;AACtC;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yEAAyE,8BAA8B,4BAA4B,2BAA2B;AAC9J;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,4BAA4B,4BAA4B,2BAA2B;AAC1J;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9OA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,GAAG,KAAK;AAChC;AACA,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,WAAW,KAAK,GAAG,KAAK;AACxB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnRA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;AACpE;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9KA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,gBAAgB;AAC/B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;AACpE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,8BAA8B;AACnE,wBAAwB,2BAA2B;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5PA;AAAA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACpBA;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,YAAY,2BAA2B,KAAK;AACnF;AACA;;AAEA;AACA;AACA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,KAAK;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,aAAa;AACnD;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oHAAsE,yCAAyC;AAC/G;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;ACjlBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,OAAO;AACrB,SAAS,OAAO;AAChB,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpNA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,SAAS;AACtB,aAAa,OAAO;;AAEpB,aAAa,YAAY;AACzB;AACA,mEAAmE;AACnE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;;AAEpE;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,aAAa;AAC1B,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,wBAAwB;AACtD;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpKA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,8BAA8B;;AAE9B,+BAA+B;;AAE/B,gCAAgC;;AAEhC,iCAAiC;;AAEjC,2BAA2B;;AAE3B,0BAA0B;;AAE1B;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;AACA;;;;;;;;;;;;;AChEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;;;;;;;;;;;;AC3CA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE,mCAAmC;AACvG;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCA,mC","file":"alpheios-data-models.node.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(global, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./driver.js\");\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In node.js\n// this is pretty straight-forward - we use the crypto API.\n\nvar crypto = require('crypto');\n\nmodule.exports = function nodeRNG() {\n return crypto.randomBytes(16);\n};\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class ArabicLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_ARABIC }\n static get languageCode () { return Constants.STR_LANG_CODE_ARA }\n static get languageCodes () { return [Constants.STR_LANG_CODE_ARA, Constants.STR_LANG_CODE_AR] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_RTL }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * @override LanguageModel#alternateWordEncodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // tanwin (& tatweel) - drop FATHATAN, DAMMATAN, KASRATAN, TATWEEL\n let tanwin = word.replace(/[\\u{064B}\\u{064C}\\u{064D}\\u{0640}]/ug, '')\n // hamzas - replace ALEF WITH MADDA ABOVE, ALEF WITH HAMZA ABOVE/BELOW with ALEF\n let hamza = tanwin.replace(/[\\u{0622}\\u{0623}\\u{0625}]/ug, '\\u{0627}')\n // harakat - drop FATHA, DAMMA, KASRA, SUPERSCRIPT ALEF, ALEF WASLA\n let harakat = hamza.replace(/[\\u{064E}\\u{064F}\\u{0650}\\u{0670}\\u{0671}]/ug, '')\n // shadda\n let shadda = harakat.replace(/\\u{0651}/ug, '')\n // sukun\n let sukun = shadda.replace(/\\u{0652}/ug, '')\n // alef\n let alef = sukun.replace(/\\u{0627}/ug, '')\n let alternates = new Map([\n ['tanwin', tanwin],\n ['hamza', hamza],\n ['harakat', harakat],\n ['shadda', shadda],\n ['sukun', sukun],\n ['alef', alef]\n ])\n if (encoding !== null && alternates.has(encoding)) {\n return [alternates.get(encoding)]\n } else {\n return Array.from(alternates.values())\n }\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n */\n static aggregateInflectionsForDisplay (inflections) {\n // TODO at some point we might want to be able to check the provider in here\n // because this really only applies to the specifics of the Aramorph parser\n let aggregated = []\n let aggregates = { [Constants.POFS_NOUN]: [], [Constants.POFS_ADJECTIVE]: [], [Constants.POFS_NOUN_PROPER]: [] }\n for (let infl of inflections) {\n if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/ADJ[uaiNK]/)) {\n aggregates[Constants.POFS_ADJECTIVE].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN_PROPER].push(infl)\n } else {\n // we are also going to keep the examples out of the display for now\n infl.example = null\n aggregated.push(infl)\n }\n }\n for (let type of Object.keys(aggregates)) {\n let base = aggregated.filter((i) => i[Feature.types.part].value === type)\n if (base.length !== 1) {\n // if we don't have the base form then we don't really know what to do here\n // so just put the inflection back in the ones available for display\n aggregated.push(...aggregates[type])\n }\n // we may decide we want to keep the extra suffix and morph information\n // from the alternate inflections but for now we just will drop it from\n // the inflections that are displayed\n }\n return aggregated\n }\n}\n","/* eslint-disable no-unused-vars */\nexport const LANG_UNIT_WORD = Symbol('word')\nexport const LANG_UNIT_CHAR = Symbol('char')\nexport const LANG_DIR_LTR = Symbol('ltr')\nexport const LANG_DIR_RTL = Symbol('rtl')\nexport const LANG_UNDEFINED = Symbol('undefined')\nexport const LANG_LATIN = Symbol('latin')\nexport const LANG_GREEK = Symbol('greek')\nexport const LANG_ARABIC = Symbol('arabic')\nexport const LANG_PERSIAN = Symbol('persian')\nexport const STR_LANG_CODE_UNDEFINED = 'undefined'\nexport const STR_LANG_CODE_LAT = 'lat'\nexport const STR_LANG_CODE_LA = 'la'\nexport const STR_LANG_CODE_GRC = 'grc'\nexport const STR_LANG_CODE_ARA = 'ara'\nexport const STR_LANG_CODE_AR = 'ar'\nexport const STR_LANG_CODE_FAS = 'fas'\nexport const STR_LANG_CODE_PER = 'per'\nexport const STR_LANG_CODE_FA_IR = 'fa-IR'\nexport const STR_LANG_CODE_FA = 'fa'\n// parts of speech\nexport const POFS_ADJECTIVE = 'adjective'\nexport const POFS_ADVERB = 'adverb'\nexport const POFS_ADVERBIAL = 'adverbial'\nexport const POFS_ARTICLE = 'article'\nexport const POFS_CONJUNCTION = 'conjunction'\nexport const POFS_EXCLAMATION = 'exclamation'\nexport const POFS_INTERJECTION = 'interjection'\nexport const POFS_NOUN = 'noun'\nexport const POFS_NOUN_PROPER = 'proper noun'\nexport const POFS_NUMERAL = 'numeral'\nexport const POFS_PARTICLE = 'particle'\nexport const POFS_PREFIX = 'prefix'\nexport const POFS_PREPOSITION = 'preposition'\nexport const POFS_PRONOUN = 'pronoun'\nexport const POFS_SUFFIX = 'suffix'\nexport const POFS_GERUNDIVE = 'gerundive'\nexport const POFS_SUPINE = 'supine'\nexport const POFS_VERB = 'verb'\nexport const POFS_VERB_PARTICIPLE = 'verb participle'\n// gender\nexport const GEND_MASCULINE = 'masculine'\nexport const GEND_FEMININE = 'feminine'\nexport const GEND_NEUTER = 'neuter'\nexport const GEND_COMMON = 'common'\nexport const GEND_ANIMATE = 'animate'\nexport const GEND_INANIMATE = 'inanimate'\n// Polish gender types\nexport const GEND_PERSONAL_MASCULINE = 'personal masculine'\nexport const GEND_ANIMATE_MASCULINE = 'animate masculine'\nexport const GEND_INANIMATE_MASCULINE = 'inanimate masculine'\n// comparative\nexport const COMP_POSITIVE = 'positive'\nexport const COMP_COMPARITIVE = 'comparative'\nexport const COMP_SUPERLATIVE = 'superlative'\n// case\nexport const CASE_ABESSIVE = 'abessive'\nexport const CASE_ABLATIVE = 'ablative'\nexport const CASE_ABSOLUTIVE = 'absolutive'\nexport const CASE_ACCUSATIVE = 'accusative'\nexport const CASE_ADDIRECTIVE = 'addirective'\nexport const CASE_ADELATIVE = 'adelative'\nexport const CASE_ADESSIVE = 'adessive'\nexport const CASE_ADVERBIAL = 'adverbial'\nexport const CASE_ALLATIVE = 'allative'\nexport const CASE_ANTESSIVE = 'antessive'\nexport const CASE_APUDESSIVE = 'apudessive'\nexport const CASE_AVERSIVE = 'aversive'\nexport const CASE_BENEFACTIVE = 'benefactive'\nexport const CASE_CARITIVE = 'caritive'\nexport const CASE_CAUSAL = 'causal'\nexport const CASE_CAUSAL_FINAL = 'causal-final'\nexport const CASE_COMITATIVE = 'comitative'\nexport const CASE_DATIVE = 'dative'\nexport const CASE_DELATIVE = 'delative'\nexport const CASE_DIRECT = 'direct'\nexport const CASE_DISTRIBUTIVE = 'distributive'\nexport const CASE_DISTRIBUTIVE_TEMPORAL = 'distributive-temporal'\nexport const CASE_ELATIVE = 'elative'\nexport const CASE_ERGATIVE = 'ergative'\nexport const CASE_ESSIVE = 'essive'\nexport const CASE_ESSIVE_FORMAL = 'essive-formal'\nexport const CASE_ESSIVE_MODAL = 'essive-modal'\nexport const CASE_EQUATIVE = 'equative'\nexport const CASE_EVITATIVE = 'evitative'\nexport const CASE_EXESSIVE = 'exessive'\nexport const CASE_FINAL = 'final'\nexport const CASE_FORMAL = 'formal'\nexport const CASE_GENITIVE = 'genitive'\nexport const CASE_ILLATIVE = 'illative'\nexport const CASE_INELATIVE = 'inelative'\nexport const CASE_INESSIVE = 'inessive'\nexport const CASE_INSTRUCTIVE = 'instructive'\nexport const CASE_INSTRUMENTAL = 'instrumental'\nexport const CASE_INSTRUMENTAL_COMITATIVE = 'instrumental-comitative'\nexport const CASE_INTRANSITIVE = 'intransitive'\nexport const CASE_LATIVE = 'lative'\nexport const CASE_LOCATIVE = 'locative'\nexport const CASE_MODAL = 'modal'\nexport const CASE_MULTIPLICATIVE = 'multiplicative'\nexport const CASE_NOMINATIVE = 'nominative'\nexport const CASE_PARTITIVE = 'partitive'\nexport const CASE_PEGATIVE = 'pegative'\nexport const CASE_PERLATIVE = 'perlative'\nexport const CASE_POSSESSIVE = 'possessive'\nexport const CASE_POSTELATIVE = 'postelative'\nexport const CASE_POSTDIRECTIVE = 'postdirective'\nexport const CASE_POSTESSIVE = 'postessive'\nexport const CASE_POSTPOSITIONAL = 'postpositional'\nexport const CASE_PREPOSITIONAL = 'prepositional'\nexport const CASE_PRIVATIVE = 'privative'\nexport const CASE_PROLATIVE = 'prolative'\nexport const CASE_PROSECUTIVE = 'prosecutive'\nexport const CASE_PROXIMATIVE = 'proximative'\nexport const CASE_SEPARATIVE = 'separative'\nexport const CASE_SOCIATIVE = 'sociative'\nexport const CASE_SUBDIRECTIVE = 'subdirective'\nexport const CASE_SUBESSIVE = 'subessive'\nexport const CASE_SUBELATIVE = 'subelative'\nexport const CASE_SUBLATIVE = 'sublative'\nexport const CASE_SUPERDIRECTIVE = 'superdirective'\nexport const CASE_SUPERESSIVE = 'superessive'\nexport const CASE_SUPERLATIVE = 'superlative'\nexport const CASE_SUPPRESSIVE = 'suppressive'\nexport const CASE_TEMPORAL = 'temporal'\nexport const CASE_TERMINATIVE = 'terminative'\nexport const CASE_TRANSLATIVE = 'translative'\nexport const CASE_VIALIS = 'vialis'\nexport const CASE_VOCATIVE = 'vocative'\nexport const MOOD_ADMIRATIVE = 'admirative'\nexport const MOOD_COHORTATIVE = 'cohortative'\nexport const MOOD_CONDITIONAL = 'conditional'\nexport const MOOD_DECLARATIVE = 'declarative'\nexport const MOOD_DUBITATIVE = 'dubitative'\nexport const MOOD_ENERGETIC = 'energetic'\nexport const MOOD_EVENTIVE = 'eventive'\nexport const MOOD_GENERIC = 'generic'\nexport const MOOD_GERUNDIVE = 'gerundive'\nexport const MOOD_HYPOTHETICAL = 'hypothetical'\nexport const MOOD_IMPERATIVE = 'imperative'\nexport const MOOD_INDICATIVE = 'indicative'\nexport const MOOD_INFERENTIAL = 'inferential'\nexport const MOOD_INFINITIVE = 'infinitive'\nexport const MOOD_INTERROGATIVE = 'interrogative'\nexport const MOOD_JUSSIVE = 'jussive'\nexport const MOOD_NEGATIVE = 'negative'\nexport const MOOD_OPTATIVE = 'optative'\nexport const MOOD_PARTICIPLE = 'participle'\nexport const MOOD_PRESUMPTIVE = 'presumptive'\nexport const MOOD_RENARRATIVE = 'renarrative'\nexport const MOOD_SUBJUNCTIVE = 'subjunctive'\nexport const MOOD_SUPINE = 'supine'\nexport const NUM_SINGULAR = 'singular'\nexport const NUM_PLURAL = 'plural'\nexport const NUM_DUAL = 'dual'\nexport const NUM_TRIAL = 'trial'\nexport const NUM_PAUCAL = 'paucal'\nexport const NUM_SINGULATIVE = 'singulative'\nexport const NUM_COLLECTIVE = 'collective'\nexport const NUM_DISTRIBUTIVE_PLURAL = 'distributive plural'\nexport const NRL_CARDINAL = 'cardinal'\nexport const NRL_ORDINAL = 'ordinal'\nexport const NRL_DISTRIBUTIVE = 'distributive'\nexport const NURL_NUMERAL_ADVERB = 'numeral adverb'\nexport const ORD_1ST = '1st'\nexport const ORD_2ND = '2nd'\nexport const ORD_3RD = '3rd'\nexport const ORD_4TH = '4th'\nexport const ORD_5TH = '5th'\nexport const ORD_6TH = '6th'\nexport const ORD_7TH = '7th'\nexport const ORD_8TH = '8th'\nexport const ORD_9TH = '9th'\nexport const TENSE_AORIST = 'aorist'\nexport const TENSE_FUTURE = 'future'\nexport const TENSE_FUTURE_PERFECT = 'future perfect'\nexport const TENSE_IMPERFECT = 'imperfect'\nexport const TENSE_PAST_ABSOLUTE = 'past absolute'\nexport const TENSE_PERFECT = 'perfect'\nexport const TENSE_PLUPERFECT = 'pluperfect'\nexport const TENSE_PRESENT = 'present'\nexport const VKIND_TO_BE = 'to be'\nexport const VKIND_COMPOUNDS_OF_TO_BE = 'compounds of to be'\nexport const VKIND_TAKING_ABLATIVE = 'taking ablative'\nexport const VKIND_TAKING_DATIVE = 'taking dative'\nexport const VKIND_TAKING_GENITIVE = 'taking genitive'\nexport const VKIND_TRANSITIVE = 'transitive'\nexport const VKIND_INTRANSITIVE = 'intransitive'\nexport const VKIND_IMPERSONAL = 'impersonal'\nexport const VKIND_DEPONENT = 'deponent'\nexport const VKIND_SEMIDEPONENT = 'semideponent'\nexport const VKIND_PERFECT_DEFINITE = 'perfect definite'\nexport const VOICE_ACTIVE = 'active'\nexport const VOICE_PASSIVE = 'passive'\nexport const VOICE_MEDIOPASSIVE = 'mediopassive'\nexport const VOICE_IMPERSONAL_PASSIVE = 'impersonal passive'\nexport const VOICE_MIDDLE = 'middle'\nexport const VOICE_ANTIPASSIVE = 'antipassive'\nexport const VOICE_REFLEXIVE = 'reflexive'\nexport const VOICE_RECIPROCAL = 'reciprocal'\nexport const VOICE_CAUSATIVE = 'causative'\nexport const VOICE_ADJUTATIVE = 'adjutative'\nexport const VOICE_APPLICATIVE = 'applicative'\nexport const VOICE_CIRCUMSTANTIAL = 'circumstantial'\nexport const VOICE_DEPONENT = 'deponent'\nexport const TYPE_IRREGULAR = 'irregular'\nexport const TYPE_REGULAR = 'regular'\n// Classes\nexport const CLASS_PERSONAL = 'personal'\nexport const CLASS_REFLEXIVE = 'reflexive'\nexport const CLASS_POSSESSIVE = 'possessive'\nexport const CLASS_DEMONSTRATIVE = 'demonstrative'\nexport const CLASS_RELATIVE = 'relative'\nexport const CLASS_INTERROGATIVE = 'interrogative'\nexport const CLASS_GENERAL_RELATIVE = 'general relative'\nexport const CLASS_INDEFINITE = 'indefinite'\nexport const CLASS_INTENSIVE = 'intensive'\nexport const CLASS_RECIPROCAL = 'reciprocal'\n/* eslit-enable no-unused-vars */\n","import Definition from './definition'\n\nexport default class DefinitionSet {\n constructor (lemmaWord, languageID) {\n this.lemmaWord = lemmaWord\n this.languageID = languageID\n\n this.shortDefs = []\n this.fullDefs = []\n }\n\n /**\n * A function that is used to instantiate a DefinitionSet object from a JSON object.\n * @param {Object} jsonObject - A JSON object representing DefinitionSet data.\n * @return {DefinitionSet} A DefinitionSet object populated with data from JSON object.\n */\n static readObject (jsonObject) {\n let definitionSet = new DefinitionSet(jsonObject.lemmaWord, jsonObject.languageID)\n\n for (let shortDef of jsonObject.shortDefs) {\n definitionSet.shortDefs.push(Definition.readObject(shortDef))\n }\n for (let fullDef of jsonObject.fullDefs) {\n definitionSet.fullDefs.push(Definition.readObject(fullDef))\n }\n\n return definitionSet\n }\n\n /**\n * Check to see if the DefinitionSet is empty\n * @return {boolean} true if empty false if there is at least one definition\n */\n isEmpty () {\n return this.shortDefs.length === 0 && this.fullDefs.length === 0\n }\n\n /**\n * Appends one or more definitions to a list of short definitions.\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @return {Definition[]} A list of short definitions this object has.\n */\n appendShortDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.shortDefs = this.shortDefs.concat(definitions)\n }\n return this.shortDefs\n }\n\n /**\n * clear accumulated short definitions\n */\n clearShortDefs () {\n this.shortDefs = []\n }\n\n /**\n * Appends one or more definitions to a list of full definitions.\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @return {Definition[]} A list of full definitions this object has.\n */\n appendFullDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.fullDefs = this.fullDefs.concat(definitions)\n }\n return this.fullDefs\n }\n\n /**\n * clear accumulated full definitions\n */\n clearFullDefs () {\n this.fullDefs = []\n }\n}\n","class Definition {\n constructor (text, language, format, lemmaText) {\n this.text = text\n this.language = language\n this.format = format\n this.lemmaText = lemmaText\n }\n\n static readObject (jsonObject) {\n return new Definition(jsonObject.text, jsonObject.language, jsonObject.format, jsonObject.lemmaText)\n }\n}\nexport default Definition\n","'use strict'\nimport * as Constants from './constants.js'\nimport Definition from './definition.js'\nimport DefinitionSet from './definition-set'\nimport Feature from './feature.js'\nimport GrmFeature from './grm-feature.js'\nimport FeatureType from './feature_type.js'\nimport FeatureList from './feature_list.js'\nimport FeatureImporter from './feature_importer.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Homonym from './homonym.js'\nimport Lexeme from './lexeme.js'\nimport Lemma from './lemma.js'\nimport Inflection from './inflection.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport ResourceProvider from './resource_provider.js'\n\nimport Translation from './translation.js'\n\nexport {\n Constants,\n Definition,\n DefinitionSet,\n Feature,\n GrmFeature,\n FeatureType,\n FeatureList,\n FeatureImporter,\n Inflection,\n LanguageModelFactory,\n Homonym,\n Lexeme,\n Lemma,\n LatinLanguageModel,\n GreekLanguageModel,\n ArabicLanguageModel,\n PersianLanguageModel,\n ResourceProvider,\n\n Translation }\n","import LanguageModelFactory from './language_model_factory.js'\nimport FeatureImporter from './feature_importer.js'\nimport * as i18n from './i18n.js'\n\n/**\n * A grammatical feature object, that can replace both Feature and FeatureType objects.\n */\nexport default class Feature {\n /**\n *\n * @param {string} type - A type of the feature, allowed values are specified in 'type' getter.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n *\n * If a single value with no sort order is provided, data format will be:\n * value\n * This value will be assigned a default sort order.\n *\n * If a single value with sort order is provided, data format will be:\n * [[value, sortOrder]]\n *\n * If multiple values without sort order are provided, data format will be:\n * [value1, value2, value3, ...]\n * Items will be assigned a sort order according to their order in an array, starting from one.\n *\n * If multiple values with sort order are provided, data format will be:\n * [[value1, sortOrder1], [value2, sortOrder2], [value3, sortOrder3], ...]\n * If a sort order is omitted anywhere, it will be set to a default sort order.\n *\n * Each value of a feature has its `sortOrder` property. This value is used to soft values of a feature\n * between themselves. Feature object has a `sortOrder` property of its own, too. It is used\n * to compare two Feature objects between themselves.\n *\n * @param {symbol} languageID - A language ID of a feature\n * @param {number} sortOrder - A sort order of a feature when multiple features are compared.\n * @param allowedValues - If feature has a restricted set of allowed values, here will be a list of those\n * values. An order of those values can define a sort order.\n */\n constructor (type, data, languageID, sortOrder = 1, allowedValues = []) {\n if (!Feature.isAllowedType(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!data) {\n throw new Error('Feature should have a non-empty value(s).')\n }\n if (!languageID) {\n throw new Error('No language ID is provided')\n }\n\n this.type = type\n this.languageID = languageID\n this.sortOrder = sortOrder\n this.allowedValues = allowedValues\n\n // `_data` is an array\n this._data = Feature.dataValuesFromInput(data)\n this.sort()\n }\n\n static dataValuesFromInput (data) {\n let normalized\n if (!Array.isArray(data)) {\n // Single value with no sort order\n normalized = [[data, this.defaultSortOrder]]\n } else if (!Array.isArray(data[0])) {\n // Multiple values without any sort order, default sort order will be used\n // we reverse because sortOrder is numeric descending (i.e. 2 is before 1)\n normalized = data.map((v, i) => [v, data.length - i])\n } else {\n // Value has all the data, including a sort order\n normalized = data\n }\n return normalized.map(d => { return { value: d[0], sortOrder: Number.parseInt(d[1]) } })\n }\n\n /**\n *\n * @param featureData\n */\n static newFromFtr (featureData) {\n\n }\n\n static get types () {\n return {\n /**\n * @deprecated : Use `fullForm` where appropriate instead\n */\n word: 'word',\n fullForm: 'full form',\n hdwd: 'headword',\n part: 'part of speech', // Part of speech\n number: 'number',\n 'case': 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n 'class': 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var' // variance?\n }\n }\n\n static isAllowedType (value) {\n return Object.values(this.types).includes(`${value}`)\n }\n\n static get defaultSortOrder () {\n return 1\n }\n\n static get joinSeparator () {\n return ' '\n }\n\n static get defaultImporterName () {\n return 'default'\n }\n\n /**\n * Test to see if this feature allows unrestricted values.\n * @returns {boolean} true if unrestricted false if not.\n */\n get allowsUnrestrictedValues () {\n /*\n If `allowedValues` array is empty then there are no value restrictions\n */\n return this.allowedValues.length === 0\n }\n\n /**\n * Defines a sort order of feature values. Values are sorted according to their sort order\n * (a number starting from one). If several values have the same sort order, they will be\n * sorted alphabetically according to their values.\n * Sort order is deterministic.\n */\n sort () {\n this._data.sort((a, b) => a.sortOrder !== b.sortOrder ? b.sortOrder - a.sortOrder : a.value.localeCompare(b.value))\n }\n\n /**\n * Compares a feature's values to another feature's values for sorting\n * @param {Feature} otherFeature the feature to compare this feature's values to\n * @return {integer} >=1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second\n */\n compareTo (otherFeature) {\n // the data values are sorted upon construction and insertion so we only should need to look at the first values\n // feature sortOrders are descending (i.e. 5 sorts higher than 1)\n return otherFeature._data[0].sortOrder - this._data[0].sortOrder\n }\n\n get items () {\n return this._data\n }\n\n /**\n * Returns a single value string. If feature has a single value, this value will be returned.\n * If it has multiple values, those values will be concatenated with a default separator and\n * returned in a single string. Values composing this string are sorted according\n * to each value's sort order.\n * @return {string} A single value string.\n */\n get value () {\n return this.values.join(this.constructor.joinSeparator)\n }\n\n /**\n * Returns an array of string values of a feature, sorted according to each item's sort order.\n * If a feature contains a single feature, an array with one value will be returned.\n * @return {string[]} An array of string values.\n */\n get values () {\n return this._data.map(v => v.value)\n }\n\n /**\n * Retrieves a value object by name. Can be used to update a value object directly.\n * @param {string} featureVale - A feature value of an object to retrieve.\n */\n getValue (featureVale) {\n return this._data.find(v => v.value === featureVale)\n }\n\n /**\n * Returns a number of feature values.\n * @retrun {number] A quantity of feature values\n */\n get valQty () {\n return this._data.length\n }\n\n get isEmpty () {\n return this.valQty === 0\n }\n\n get isSingle () {\n return this.valQty === 1\n }\n\n get isMultiple () {\n return this.valQty > 1\n }\n\n /**\n * A string representation of a feature.\n * @return {string}\n */\n toString () {\n return this.value\n }\n\n /**\n * Examines the feature for a specific value.\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValue (value) {\n return this.values.includes(value)\n }\n\n /**\n * Checks if this feature has all value from an array.\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValues (values) {\n let hasValues = true\n for (let value of values) {\n hasValues = hasValues && this.hasValue(value)\n }\n return hasValues\n }\n\n /**\n * Checks if this feature has some value from an array.\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasSomeValues (values) {\n let hasValues = false\n for (let value of values) {\n hasValues = hasValues || this.hasValue(value)\n }\n return hasValues\n }\n\n get valuesUnrestricted () {\n return this.allowedValues.length === 0\n }\n\n /**\n * Two features are considered fully equal if they are of the same type, have the same language,\n * and the same set of feature values in the same order.\n * @param {Feature} feature - A GrmFtr object this feature should be compared with.\n * @return {boolean} True if features are equal, false otherwise.\n */\n isEqual (feature) {\n return this.type === feature.type &&\n LanguageModelFactory.compareLanguages(this.languageID, feature.languageID) &&\n this.value === feature.value\n }\n\n /**\n * Adds a single new value to the existing feature object.\n * This function is chainable.\n * @param {string} value - A feature value.\n * @param {number} sortOrder - A sort order.\n * @return {Feature} - Self reference for chaining.\n */\n addValue (value, sortOrder = this.constructor.defaultSortOrder) {\n if (!this.hasValue(value)) {\n this._data.push({\n value: value,\n sortOrder: sortOrder\n })\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n console.warn(`Value \"${value}\" already exists. If you want to change it, use \"getValue\" to access it directly.`)\n }\n return this\n }\n\n /**\n * Adds multiple new values to the existing feature object.\n * This function is chainable.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n * @return {Feature} - Self reference for chaining.\n */\n addValues (data) {\n let normalizedData = this.constructor.dataValuesFromInput(data)\n let values = normalizedData.map(v => v.value)\n if (!this.hasSomeValues(values)) {\n this._data = this._data.concat(normalizedData)\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n console.warn(`One or several values from \"${values}\" already exist. If you want to change it, use \"getValue\" to access a value directly.`)\n }\n return this\n }\n\n /**\n * Removes a single value from the existing feature object.\n * @param value\n */\n removeValue (value) {\n // TODO: Do we need it?\n console.warn(`This feature is not implemented yet`)\n }\n\n /**\n * Creates a new single value Feature object of the same type and same language,\n * but with a different feature value.\n * This can be used when one feature defines a type and it is necessary\n * to create other items of the same type.\n * @param {string} value - A value of a feature.\n * @param {number} sortOrder.\n * @return {Feature} A new Ftr object.\n */\n createFeature (value, sortOrder = this.constructor.defaultSortOrder) {\n // TODO: Add a check of if the value exists in a source Feature object\n return new Feature(this.type, [[value, sortOrder]], this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates a multiple value Feature object of the same type and same language,\n * but with a different feature values.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations,\n * formatted according to rules described in a Ftr constructor.\n * @return {Feature} A new Ftr object.\n */\n createFeatures (data) {\n return new Feature(this.type, data, this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates an array of Feature objects where each Feature object is matching one feature value\n * form the values of this object.\n * Useful when the current objects is a type feature and it is necessary to create an array\n * of Feature objects for the type from it.\n * @return {Feature[]} - An array of Feature objects. Each object represents one feature value\n * from the current object.\n */\n get ownFeatures () {\n return this.values.map(v => new Feature(this.type, v, this.languageID, 1, this.allowedValues))\n }\n\n /**\n * Create a copy of the feature object.\n */\n getCopy () {\n let values = this._data.map(item => [item.value, item.sortOrder])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues.slice())\n }\n\n /**\n * A locale-specific abbreviation for a feature's values.\n * @return {string[]}\n */\n toLocaleStringAbbr (lang = 'en') {\n return this.values.map(v => i18n.i18n[lang][v] ? i18n.i18n[lang][v].abbr : v).join(this.constructor.joinSeparator)\n }\n\n /**\n * Adds an importer to the internal list.\n * @param {string} name - A name of an importer.\n * @param {FeatureImporter} importer - A `FeatureImporter` object.\n */\n addImporter (importer = new FeatureImporter(), name = this.constructor.defaultImporterName) {\n if (!this.importers) {\n this.importers = new Map()\n }\n this.importers.set(name, importer)\n return importer\n }\n\n getImporter (name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n return this.importers.get(name)\n }\n\n /**\n * Adds feature values from the imported values.\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @return {Feature} - A new Ftr object.\n */\n addFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n foreignData = this.constructor.dataValuesFromInput(foreignData)\n this._data.push(...foreignData.map(fv => { return { value: importer.get(fv.value), sortOrder: fv.sortOrder } }))\n this.sort()\n return this\n }\n\n /**\n * Creates a new feature of the same type and with the same language from the imported values.\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @return {Feature} - A new Ftr object.\n */\n createFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n if (!Array.isArray(foreignData)) {\n foreignData = [foreignData]\n }\n let values = foreignData.map(fv => importer.get(fv))\n /*\n Some values may be mapped into multiple values. For them an importer will return an array of values instead of a single value.\n The values will be a multidimensional array that will require flattening.\n */\n values = values.reduce((acc, cv) => acc.concat(cv), [])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues)\n }\n}\n","class FeatureImporter {\n /**\n * @param defaults\n * @param {boolean} returnUnknown - If true, and a source value is not found in the importer,\n * a source value will be returned without any change (a passthrough). If false, an Error\n * will be thrown for unknown source values.\n * @return {FeatureImporter}\n */\n constructor (defaults = [], returnUnknown = false) {\n this.hash = {}\n for (let value of defaults) {\n this.map(value, value)\n }\n this.returnUnknown = returnUnknown\n return this\n }\n\n /**\n * Sets mapping between external imported value and one or more library standard values. If an importedValue\n * is already in a hash table, old libraryValue will be overwritten with the new one.\n * @param {string} importedValue - External value\n * @param {Object | Object[] | string | string[]} libraryValue - Library standard value\n */\n map (importedValue, libraryValue) {\n if (!importedValue) {\n throw new Error('Imported value should not be empty.')\n }\n\n if (!libraryValue) {\n throw new Error('Library value should not be empty.')\n }\n\n this.hash[importedValue] = libraryValue\n return this\n }\n\n /**\n * Checks if value is in a map.\n * @param {string} importedValue - A value to test.\n * @returns {boolean} - Tru if value is in a map, false otherwise.\n */\n has (importedValue) {\n return this.hash.hasOwnProperty(importedValue)\n }\n\n /**\n * Returns one or more library standard values that match an external value\n * @param {string} sourceValue - External value\n * @returns {Object | string} One or more of library standard values\n */\n get (sourceValue) {\n if (this.has(sourceValue)) {\n return this.hash[sourceValue]\n } else if (this.returnUnknown) {\n return sourceValue\n } else {\n throw new Error('A value \"' + sourceValue + '\" is not found in the importer.')\n }\n }\n}\nexport default FeatureImporter\n","/**\n * A list of grammatical features that characterizes a language unit. Has some additional service methods,\n * compared with standard storage objects.\n */\nclass FeatureList {\n /**\n * Initializes a feature list.\n * @param {Feature[]} features - Features that build the list (optional, can be set later).\n */\n constructor (features = []) {\n this._features = []\n this._types = {}\n this.add(features)\n }\n\n add (features) {\n if (!features || !Array.isArray(features)) {\n throw new Error('Features must be defined and must come in an array.')\n }\n\n for (let feature of features) {\n this._features.push(feature)\n this._types[feature.type] = feature\n }\n }\n\n /**\n * Returns an array of grouping features.\n * @returns {FeatureType[]} - An array of grouping features.\n */\n get items () {\n return this._features\n }\n\n forEach (callback) {\n this._features.forEach(callback)\n }\n\n /**\n * Returns a feature of a particular type. If such feature does not exist in a list, returns undefined.\n * @param {string} type - Feature type as defined in `types` object.\n * @return {FeatureType | undefined} A feature if a particular type if contains it. Undefined otherwise.\n */\n ofType (type) {\n if (this.hasType(type)) {\n return this._types[type]\n }\n }\n\n /**\n * Checks whether a feature list has a feature of a specific type.\n * @param {string} type - Feature type as defined in `types` object.\n * @return {boolean} Whether a feature list has a feature of a particular type.\n */\n hasType (type) {\n return this._types.hasOwnProperty(type)\n }\n}\nexport default FeatureList\n","import Feature from './feature.js'\nimport FeatureImporter from './feature_importer.js'\nimport LMF from './language_model_factory'\n\n/**\n * @deprecated Use Feature instead\n * Definition class for a (grammatical) feature. Stores type information and (optionally) all possible values of the feature.\n * It serves as a feature generator. If list of possible values is provided, it can generate a Feature object\n * each time a property that corresponds to a feature value is accessed. If no list of possible values provided,\n * a Feature object can be generated with get(value) method.\n *\n * An order of values determines a default sort and grouping order. If two values should have the same order,\n * they should be grouped within an array: value1, [value2, value3], value4. Here 'value2' and 'value3' have\n * the same priority for sorting and grouping.\n */\nclass FeatureType {\n // TODO: value checking\n /**\n * Creates and initializes a Feature Type object.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string[] | string[][]} values - A list of allowed values for this feature type.\n * If an empty array is provided, there will be no\n * allowed values as well as no ordering (can be used for items that do not need or have a simple order,\n * such as footnotes).\n * @param {String | Symbol} language - A language of a feature type.\n */\n constructor (type, values, language) {\n if (!values || !Array.isArray(values)) {\n throw new Error('Values should be an array (or an empty array) of values.')\n }\n if (!language) {\n throw new Error('FeatureType constructor requires a language')\n }\n\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n\n /*\n This is a sort order index for a grammatical feature values. It is determined by the order of values in\n a 'values' array.\n */\n this._orderIndex = []\n this._orderLookup = {}\n\n for (const [index, value] of values.entries()) {\n this._orderIndex.push(value)\n if (Array.isArray(value)) {\n for (let element of value) {\n this[element] = new Feature(this.type, element, this.languageID)\n this._orderLookup[element] = index\n }\n } else {\n this[value] = new Feature(this.type, value, this.languageID)\n this._orderLookup[value] = index\n }\n }\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n /**\n * test to see if this FeatureType allows unrestricted values\n * @returns {boolean} true if unrestricted false if not\n */\n hasUnrestrictedValue () {\n return this.orderedValues.length === 1 && this.orderedValues[0] === FeatureType.UNRESTRICTED_VALUE\n }\n\n /**\n * Return a Feature with an arbitrary value. This value would not be necessarily present among FeatureType values.\n * This can be especially useful for features that do not set: a list of predefined values, such as footnotes.\n * @param value\n * @param {int} sortOrder\n * @returns {Feature}\n */\n get (value, sortOrder = 1) {\n if (value) {\n return new Feature(this.type, [[value, sortOrder]], this.languageID)\n } else {\n throw new Error('A non-empty value should be provided.')\n }\n }\n\n /**\n *\n * @param {string[][]} data - An array of value arrays as: [[value1, sortOrder1], [value2, sortOrder2]]\n * @return {Feature}\n */\n getValues (data) {\n return new Feature(this.type, data, this.languageID)\n }\n\n getFromImporter (importerName, value) {\n let mapped\n try {\n mapped = this.importer[importerName].get(value)\n } catch (e) {\n // quietly catch not found and replace with default\n mapped = this.get(value)\n }\n return mapped\n }\n\n /**\n * Creates and returns a new importer with a specific name. If an importer with this name already exists,\n * an existing Importer object will be returned.\n * @param {string} name - A name of an importer object\n * @returns {Importer} A new or existing Importer object that matches a name provided\n */\n addImporter (name) {\n if (!name) {\n throw new Error('Importer should have a non-empty name.')\n }\n this.importer = this.importer || {}\n this.importer[name] = this.importer[name] || new FeatureImporter()\n return this.importer[name]\n }\n\n /**\n * Return copies of all feature values as Feature objects in a sorted array, according to feature type's sort order.\n * For a similar function that returns strings instead of Feature objects see orderedValues().\n * @returns {Feature[] | Feature[][]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of Feature objects will be returned instead of a single Feature object, as for single feature values.\n */\n get orderedFeatures () {\n return this.orderedValues.map((value) => new Feature(this.type, value, this.languageID))\n }\n\n /**\n * Return all feature values as strings in a sorted array, according to feature type's sort order.\n * This is a main method that specifies a sort order of the feature type. orderedFeatures() relies\n * on this method in providing a sorted array of feature values. If you want to create\n * a custom sort order for a particular feature type that will depend on some options that are not type-related,\n * create a wrapper around this function providing it with options arguments so it will be able to decide\n * in what order those features will be based on those arguments.\n * For a similar function that returns Feature objects instead of strings see orderedValues().\n * @returns {string[]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of strings will be returned instead of a single strings, as for single feature values.\n */\n get orderedValues () {\n return this._orderIndex\n }\n\n /**\n * Returns a lookup table for type values as:\n * {value1: order1, value2: order2}, where order is a sort order of an item. If two items have the same sort order,\n * their order value will be the same.\n * @returns {object}\n */\n get orderLookup () {\n return this._orderLookup\n }\n\n /**\n * Sets an order of grammatical feature values for a grammatical feature. Used mostly for sorting, filtering,\n * and displaying.\n *\n * @param {Feature[] | Feature[][]} values - a list of grammatical features that specify their order for\n * sorting and filtering. Some features can be grouped as [[genders.masculine, genders.feminine], LibLatin.genders.neuter].\n * It means that genders.masculine and genders.feminine belong to the same group. They will have the same index\n * and will be stored inside an _orderIndex as an array. genders.masculine and genders.feminine will be grouped together\n * during filtering and will be in the same bin during sorting.\n *\n */\n set order (values) {\n if (!values || (Array.isArray(values) && values.length === 0)) {\n throw new Error('A non-empty list of values should be provided.')\n }\n\n // If a single value is provided, convert it into an array\n if (!Array.isArray(values)) {\n values = [values]\n }\n\n for (let value of values) {\n if (Array.isArray(value)) {\n for (let element of value) {\n if (!this.hasOwnProperty(element.value)) {\n throw new Error('Trying to order an element with \"' + element.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (element.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + element.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${element.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n } else {\n if (!this.hasOwnProperty(value.value)) {\n throw new Error('Trying to order an element with \"' + value.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (value.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + value.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(value.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${value.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n }\n\n // Erase whatever sort order was set previously\n this._orderLookup = {}\n this._orderIndex = []\n\n // Define a new sort order\n for (const [index, element] of values.entries()) {\n if (Array.isArray(element)) {\n // If it is an array, all values should have the same order\n let elements = []\n for (const subElement of element) {\n this._orderLookup[subElement.value] = index\n elements.push(subElement.value)\n }\n this._orderIndex[index] = elements\n } else {\n // If is a single value\n this._orderLookup[element.value] = index\n this._orderIndex[index] = element.value\n }\n }\n }\n}\nFeatureType.UNRESTRICTED_VALUE = Symbol('unrestricted')\nexport default FeatureType\n","import LanguageModel from './language_model.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class GreekLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_GREEK }\n static get languageCode () { return Constants.STR_LANG_CODE_GRC }\n static get languageCodes () { return [Constants.STR_LANG_CODE_GRC] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_GENERAL_RELATIVE,\n Constants.CLASS_INDEFINITE,\n Constants.CLASS_INTENSIVE,\n Constants.CLASS_INTERROGATIVE,\n Constants.CLASS_PERSONAL,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_RECIPROCAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_RELATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL,\n Constants.NUM_DUAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT,\n Constants.TENSE_AORIST\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_PASSIVE,\n Constants.VOICE_ACTIVE,\n Constants.VOICE_MEDIOPASSIVE,\n Constants.VOICE_MIDDLE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_OPTATIVE,\n Constants.MOOD_IMPERATIVE\n ]\n ],\n [\n // TODO full list of greek dialects\n Feature.types.dialect,\n [\n 'attic',\n 'epic',\n 'doric'\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * @override LanguageModel#grammarFeatures\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.voice]\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {string} word the source word\n * @returns {string} the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type string\n */\n static normalizeWord (word) {\n // we normalize greek to NFC - Normalization Form Canonical Composition\n if (word) {\n return word.normalize('NFC')\n } else {\n return word\n }\n }\n\n /**\n * @override LanguageModel#alternateWordEncodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // the original alpheios code used the following normalizations\n // 1. When looking up a lemma\n // stripped vowel length\n // stripped caps\n // then if failed, tried again with out these\n // 2. when adding to a word list\n // precombined unicode (vowel length/diacritics preserved)\n // 2. When looking up a verb in the verb paradigm tables\n // it set e_normalize to false, otherwise it was true...\n // make sure it's normalized to NFC and in lower case\n let normalized = GreekLanguageModel.normalizeWord(word).toLocaleLowerCase()\n let strippedVowelLength = normalized.replace(\n /[\\u{1FB0}\\u{1FB1}]/ug, '\\u{03B1}').replace(\n /[\\u{1FB8}\\u{1FB9}]/ug, '\\u{0391}').replace(\n /[\\u{1FD0}\\u{1FD1}]/ug, '\\u{03B9}').replace(\n /[\\u{1FD8}\\u{1FD9}]/ug, '\\u{0399}').replace(\n /[\\u{1FE0}\\u{1FE1}]/ug, '\\u{03C5}').replace(\n /[\\u{1FE8}\\u{1FE9}]/ug, '\\u{03A5}').replace(\n /[\\u{00AF}\\u{0304}\\u{0306}]/ug, '')\n let strippedDiaeresis = normalized.replace(\n /\\u{0390}/ug, '\\u{03AF}').replace(\n /\\u{03AA}/ug, '\\u{0399}').replace(\n /\\u{03AB}/ug, '\\u{03A5}').replace(\n /\\u{03B0}/ug, '\\u{03CD}').replace(\n /\\u{03CA}/ug, '\\u{03B9}').replace(\n /\\u{03CB}/ug, '\\u{03C5}').replace(\n /\\u{1FD2}/ug, '\\u{1F76}').replace(\n /\\u{1FD3}/ug, '\\u{1F77}').replace(\n /\\u{1FD7}/ug, '\\u{1FD6}').replace(\n /\\u{1FE2}/ug, '\\u{1F7A}').replace(\n /\\u{1FE3}/ug, '\\u{1F7B}').replace(\n /\\u{1FE7}/ug, '\\u{1FE6}').replace(\n /\\u{1FC1}/ug, '\\u{1FC0}').replace(\n /\\u{1FED}/ug, '\\u{1FEF}').replace(\n /\\u{1FEE}/ug, '\\u{1FFD}').replace(\n /[\\u{00A8}\\u{0308}]/ug, '')\n if (encoding === 'strippedDiaeresis') {\n return [strippedDiaeresis]\n } else {\n return [strippedVowelLength]\n }\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return '.,;:!?\\'\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n * @param {Inflection} inflection - An inflection object\n * @return {Object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n let constraints = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n let formBasedList = [Constants.POFS_PRONOUN, Constants.POFS_NUMERAL, Constants.POFS_ARTICLE]\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if (formBasedList.includes(inflection[Feature.types.part].value)) {\n constraints.fullFormBased = true\n } else {\n constraints.suffixBased = true\n }\n } else {\n console.warn(`Unable to set grammar: part of speech data is missing or is incorrect`, inflection[Feature.types.part])\n }\n\n constraints.pronounClassRequired =\n LanguageModelFactory.compareLanguages(GreekLanguageModel.languageID, inflection.languageID) &&\n inflection.hasOwnProperty(Feature.types.part) &&\n inflection[Feature.types.part].value === Constants.POFS_PRONOUN\n\n return constraints\n }\n\n /**\n * Determines a class of a given word (pronoun) by finding a matching word entry(ies)\n * in a pronoun source info (`forms`) and getting a single or multiple classes of those entries.\n * Some morphological analyzers provide class information that is unreliable or do not\n * provide class information at all. However, class information is essential in\n * deciding in what table should pronouns be grouped. For this, we have to\n * determine pronoun classes using this method.\n * @param {Form[]} forms - An array of known forms of pronouns.\n * @param {string} word - A word we need to find a matching class for.\n * @param {boolean} normalize - Whether normalized forms of words shall be used for comparison.\n * @return {Feature} Matching classes found within a Feature objects. If no matching classes found,\n * returns undefined.\n */\n static getPronounClasses (forms, word, normalize = true) {\n let matchingValues = new Set() // Will eliminate duplicated values\n let matchingForms = forms.filter(\n form => {\n let match = false\n if (form.value) {\n match = normalize\n ? GreekLanguageModel.normalizeWord(form.value) === GreekLanguageModel.normalizeWord(word)\n : form.value === word\n }\n return match\n }\n )\n for (const matchingForm of matchingForms) {\n if (matchingForm.features.hasOwnProperty(Feature.types.grmClass)) {\n for (const value of matchingForm.features[Feature.types.grmClass].values) {\n matchingValues.add(value)\n }\n }\n }\n if (matchingValues.size > 0) {\n return new Feature(Feature.types.grmClass, Array.from(matchingValues), GreekLanguageModel.languageID)\n }\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport * as i18n from './i18n.js'\n\n/**\n * Wrapper class for a (grammatical, usually) feature, such as part of speech or declension. Keeps both value and type information.\n */\nclass GrmFeature {\n /**\n * @deprecated Use Feature instead\n * Initializes a Feature object\n * @param {string | string[]} value - A single feature value or, if this feature could have multiple\n * values, an array of values.\n * Multiple values do not allow to use a sort order. Because of this, it's better to use\n * array of multiple Feature objects with single value each instead of a single Feature object\n * with multiple values.\n * Multiple values are left for backward compatibility only. Please do not use them as they\n * will be removed in the future.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string | symbol} language - A language of a feature, allowed values are specified in 'languages' object.\n * @param {int} sortOrder - an integer used for sorting\n */\n constructor (value, type, language, sortOrder = 1) {\n if (!GrmFeature.types.isAllowed(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!value) {\n throw new Error('Feature should have a non-empty value.')\n }\n if (!type) {\n throw new Error('Feature should have a non-empty type.')\n }\n if (!language) {\n throw new Error('Feature constructor requires a language')\n }\n this.value = value\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n this.sortOrder = sortOrder\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n isEqual (feature) {\n if (Array.isArray(feature.value)) {\n // `feature` is a single object with multiple `value` properties. This feature will be sunset\n // as it does not allow to use sort order on Feature objects.\n if (!Array.isArray(this.value) || this.value.length !== feature.value.length) {\n return false\n }\n let equal = this.type === feature.type && LMF.compareLanguages(this.languageID, feature.languageID)\n equal = equal && this.value.every(function (element, index) {\n return element === feature.value[index]\n })\n return equal\n } else {\n return LMF.compareLanguages(this.languageID, feature.languageID) && this.type === feature.type && this.value === feature.value\n }\n }\n\n isSubsetof (features) {\n if (!Array.isArray(features)) {\n features = [features] // If `features` is a single value, convert it to an array (a more general case)\n }\n // `feature` is an array of feature objects with (possibly) each having a single feature value.\n let languageID = features[0].languageID // Assume all Feature objects have the same language ID\n let type = features[0].type // Assume all Feature objects have the same type\n let values = features.map(f => f.value)\n if (LMF.compareLanguages(this.languageID, languageID) && this.type === type && values.includes(this.value)) {\n return true\n }\n return false\n }\n\n /**\n * examine the feature for a specific value\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values\n */\n hasValue (value) {\n if (Array.isArray(this.value)) {\n return this.value.includes(value)\n } else {\n return this.value === value\n }\n }\n\n /**\n * string representation of a feature\n * @return {string}\n */\n toString () {\n if (Array.isArray(this.value)) {\n return this.value.join(',')\n } else {\n return this.value\n }\n }\n\n /**\n * a locale-specific abbreviation for a feature's values\n * @return {string}\n */\n toLocaleStringAbbr (lang = 'en') {\n if (Array.isArray(this.value)) {\n return this.value.map((v) => this.toLocaleStringAbbr(v, lang))\n } else {\n return i18n.i18n[lang][this.value].abbr\n }\n }\n\n static toFeature (sourceFeature) {\n if (Array.isArray(sourceFeature)) {\n if (!(sourceFeature[0] instanceof Feature)) {\n const type = sourceFeature[0].type\n const languageID = sourceFeature[0].languageID\n const values = sourceFeature.map(v => v.value)\n return new Feature(type, values, languageID)\n }\n } else {\n if (!(sourceFeature instanceof Feature)) {\n return new Feature(sourceFeature.type, sourceFeature.value, sourceFeature.languageID)\n }\n }\n return sourceFeature\n }\n}\n// Should have no spaces in values in order to be used in HTML templates\nGrmFeature.types = {\n word: 'word',\n part: 'part of speech', // Part of speech\n number: 'number',\n 'case': 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n 'class': 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var', // variance?\n isAllowed (value) {\n let v = `${value}`\n return Object.values(this).includes(v)\n }\n}\nexport default GrmFeature\n","import LMF from './language_model_factory'\r\nimport Lexeme from './lexeme.js'\r\nimport Lemma from './lemma.js'\r\n\r\nclass Homonym {\r\n /**\r\n * Initializes a Homonym object.\r\n * @param {Lexeme[]} lexemes - An array of Lexeme objects.\r\n * @param {string} form - the form which produces the homonyms\r\n */\r\n constructor (lexemes, form) {\r\n if (!lexemes || (Array.isArray(lexemes) && lexemes.length === 0)) {\r\n throw new Error('Lexemes data should not be empty.')\r\n }\r\n\r\n if (!Array.isArray(lexemes)) {\r\n throw new Error('Lexeme data should be provided in an array.')\r\n }\r\n\r\n for (let lexeme of lexemes) {\r\n if (!(lexeme instanceof Lexeme)) {\r\n throw new Error('All lexeme data should be of Lexeme object type.')\r\n }\r\n }\r\n\r\n this.lexemes = lexemes\r\n this.targetWord = form\r\n }\r\n\r\n /**\r\n * Creates a simple form of inflection with one lexeme and zero or more inflections\r\n * attached to it. The lexeme will have lemma whose `word` will be set to\r\n * a homonym's target word.\r\n * @param {string} word - A word that will populate homonym's `targetWord` prop and lemma `word` one.\r\n * @param {symbol} languageID - A language identificator as defined in Constants.LANG_XXX.\r\n * @param {Inflection[]} inflections - Zero or more inflection objects that will be attached to the lexeme\r\n * @return {Homonym} A newly created homonym object.\r\n */\r\n static createSimpleForm (word, languageID, inflections = []) {\r\n let lemma = new Lemma(word, languageID)\r\n let lexeme = new Lexeme(lemma, inflections)\r\n return new Homonym([lexeme], word)\r\n }\r\n\r\n static readObject (jsonObject) {\r\n let lexemes = []\r\n if (jsonObject.lexemes) {\r\n for (let lexeme of jsonObject.lexemes) {\r\n lexemes.push(Lexeme.readObject(lexeme))\r\n }\r\n }\r\n let homonym = new Homonym(lexemes)\r\n if (jsonObject.targetWord) {\r\n homonym.targetWord = jsonObject.targetWord\r\n }\r\n return homonym\r\n }\r\n\r\n /**\r\n * Returns a language code of a homonym (ISO 639-3).\r\n * Homonym does not have a language property, only lemmas and inflections do. We assume that all lemmas\r\n * and inflections within the same homonym will have the same language, and we can determine a language\r\n * by using language property of the first lemma. We chan change this logic in the future if we'll need to.\r\n * @returns {string} A language code, as defined in the `languages` object.\r\n */\r\n get language () {\r\n console.warn(`Please use languageID instead`)\r\n return LMF.getLanguageCodeFromId(this.languageID)\r\n }\r\n\r\n /**\r\n * Returns a language ID of a homonym.\r\n * Homonym does not have a languageID property, only lemmas and inflections do. We assume that all lemmas\r\n * and inflections within the same homonym will have the same language, and we can determine a language\r\n * by using languageID property of the first lemma. We chan change this logic in the future if we'll need to.\r\n * @returns {Symbol} A language ID, as defined in the `LANG_` constants.\r\n */\r\n get languageID () {\r\n if (this.lexemes && this.lexemes[0] && this.lexemes[0].lemma && this.lexemes[0].lemma.languageID) {\r\n return this.lexemes[0].lemma.languageID\r\n } else {\r\n throw new Error('Homonym has not been initialized properly. Unable to obtain language ID information.')\r\n }\r\n }\r\n\r\n /**\r\n * Returns a list of all inflections within all lexemes of a homonym\r\n * @return {Inflection[]} An array of inflections\r\n */\r\n get inflections () {\r\n let inflections = []\r\n for (const lexeme of this.lexemes) {\r\n inflections = inflections.concat(lexeme.inflections)\r\n }\r\n return inflections\r\n }\r\n\r\n isDisambiguated () {\r\n return this.lexemes.filter(l => l.disambiguated).length > 0\r\n }\r\n\r\n /**\r\n * Disambiguate homymyn objects with another\r\n * @param {Homonym} base the homonym to use to disambiguate\r\n * @param {Homonym[]} disambiguators the homonyms to use to disambiguate\r\n */\r\n static disambiguate (base, disambiguators) {\r\n if (disambiguators.length === 0) {\r\n // nothing left to disamibugate with\r\n return base\r\n }\r\n let disambiguator = disambiguators.shift()\r\n let lexemes = []\r\n let missedLexemes = []\r\n // iterate through the lexemes in the disambiguator and try\r\n // to disambiguate the existing lexemes with each\r\n for (let otherLexeme of disambiguator.lexemes) {\r\n let lexemeMatched = false\r\n for (let lexeme of base.lexemes) {\r\n let newLex = Lexeme.disambiguate(lexeme, otherLexeme)\r\n lexemes.push(newLex)\r\n if (newLex.disambiguated) {\r\n lexemeMatched = true\r\n }\r\n }\r\n // if we couldn't find a matching lexeme, add the disambigutor's lexemes\r\n // to the list of lexemes for the new Homonym\r\n if (!lexemeMatched) {\r\n otherLexeme.disambiguated = true\r\n missedLexemes.push(otherLexeme)\r\n }\r\n }\r\n // create a new homonym with the disamibugated lexemes\r\n let newHom = new Homonym([...lexemes, ...missedLexemes], base.targetWord)\r\n return Homonym.disambiguate(newHom, disambiguators)\r\n }\r\n}\r\nexport default Homonym\r\n","/**\n * This is a temporary placeholder for an i18n library\n */\nexport const i18n = {\n en: {\n feminine: {\n full: 'feminine',\n abbr: 'f.'\n },\n masculine: {\n full: 'masculine',\n abbr: 'm.'\n },\n neuter: {\n full: 'neuter',\n abbr: 'n.'\n },\n nominative: {\n full: 'nominative',\n abbr: 'nom.'\n },\n accusative: {\n full: 'accusative',\n abbr: 'acc.'\n },\n genitive: {\n full: 'genitive',\n abbr: 'gen.'\n },\n vocative: {\n full: 'vocative',\n abbr: 'voc.'\n },\n ablative: {\n full: 'ablative',\n abbr: 'abl.'\n },\n locative: {\n full: 'locative',\n abbr: 'loc.'\n },\n dative: {\n full: 'dative',\n abbr: 'dat.'\n },\n positive: {\n full: 'positive',\n abbr: 'pos.'\n },\n comparative: {\n full: 'comparative',\n abbr: 'comp.'\n },\n superlative: {\n full: 'superlative',\n abbr: 'super.'\n },\n singular: {\n full: 'singular',\n abbr: 's.'\n },\n plural: {\n full: 'plural',\n abbr: 'p.'\n },\n dual: {\n full: 'dual',\n abbr: 'dl.'\n },\n present: {\n full: 'present',\n abbr: 'pr.'\n },\n imperfect: {\n full: 'imperfect',\n abbr: 'imp.'\n },\n perfect: {\n full: 'perfect',\n abbr: 'perf.'\n },\n pluperfect: {\n full: 'pluperfect',\n abbr: 'pluperf.'\n },\n plusquamperfect: {\n full: 'plusquamperfect',\n abbr: 'pqpf.'\n },\n 'future perfect': {\n full: 'future perfect',\n abbr: 'fut. perf.'\n },\n future: {\n full: 'future',\n abbr: 'fut.'\n },\n aorist: {\n full: 'aorist',\n abbr: 'aor.'\n },\n indicative: {\n full: 'indicative',\n abbr: 'ind.'\n },\n subjunctive: {\n full: 'subjunctive',\n abbr: 'sub.'\n },\n infinitive: {\n full: 'infinitive',\n abbr: 'inf.'\n },\n imperative: {\n full: 'imperative',\n abbr: 'imp.'\n },\n supine: {\n full: 'supine',\n abbr: 'sup.'\n },\n participle: {\n full: 'participle',\n abbr: 'par.'\n },\n optative: {\n full: 'optative',\n abbr: 'opt.'\n },\n active: {\n full: 'active',\n abbr: 'act.'\n },\n passive: {\n full: 'passive',\n abbr: 'pass.'\n },\n middle: {\n full: 'middle',\n abbr: 'mid.'\n },\n mediopassive: {\n full: 'mediopassive',\n abbr: 'mp.'\n },\n deponens: {\n full: 'deponens',\n abbr: 'dep.'\n }\n }\n}\n","import Feature from './feature.js'\nimport LMF from './language_model_factory.js'\nimport * as Constants from './constants.js'\n/*\n Hierarchical structure of return value of a morphological analyzer:\n\n Homonym (a group of words that are written the same way, https://en.wikipedia.org/wiki/Homonym)\n Lexeme 1 (a unit of lexical meaning, https://en.wikipedia.org/wiki/Lexeme)\n Have a lemma and one or more inflections\n Lemma (also called a headword, a canonical form of a group of words https://en.wikipedia.org/wiki/Lemma_(morphology) )\n Inflection 1\n Stem\n Suffix (also called ending)\n Inflection 2\n Stem\n Suffix\n Lexeme 2\n Lemma\n Inflection 1\n Stem\n Suffix\n */\n\n/**\n * Represents an inflection of a word\n */\nclass Inflection {\n /**\n * Initializes an Inflection object.\n * @param {string} stem - A stem of a word.\n * @param {string | symbol} language - A word's language.\n * @param {string} suffix - a suffix of a word\n * @param {prefix} prefix - a prefix of a word\n * @param {example} example - example\n */\n constructor (stem = null, language, suffix = null, prefix = null, example = null) {\n if (!stem && !suffix) {\n throw new Error('At least stem or suffix must be defined')\n }\n if (!language) {\n throw new Error('Language should not be empty.')\n }\n\n if (!LMF.supportsLanguage(language)) {\n throw new Error(`language ${language} not supported.`)\n }\n\n this.stem = stem\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n this.model = LMF.getLanguageModel(this.languageID)\n this.features = new Set() // Names of features of this inflection\n\n // A grammar constraints object\n this.constraints = {\n fullFormBased: false, // True this inflection stores and requires to use a full form of a word\n suffixBased: false, // True if only suffix is enough to identify this inflection\n obligatoryMatches: [], // Names of features that should be matched in order to include a form or suffix to an inflection table\n optionalMatches: [] // Names of features that will be recorded but are not important for inclusion of a form or suffix to an inflection table\n }\n\n // Suffix may not be present in every word. If missing, it will be set to null.\n this.suffix = suffix\n\n // Prefix may not be present in every word. If missing, it will be set to null.\n this.prefix = prefix\n\n // Example may not be provided\n this.example = example\n }\n\n get form () {\n let form, prefix, suffix, divider, stem\n\n stem = this.stem ? this.stem : ''\n divider = this.stem ? ' - ' : ''\n\n if (this.model.direction === Constants.LANG_DIR_RTL) {\n prefix = this.prefix ? divider + this.prefix : ''\n suffix = this.suffix ? this.suffix + divider : ''\n\n form = suffix + stem + prefix\n } else {\n prefix = this.prefix ? this.prefix + divider : ''\n suffix = this.suffix ? divider + this.suffix : ''\n\n form = prefix + stem + suffix\n }\n\n return form\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n /**\n * Sets grammar properties based on inflection info\n */\n setConstraints () {\n if (this.model.hasOwnProperty('getInflectionConstraints')) {\n let constraintData = this.model.getInflectionConstraints(this)\n this.constraints = Object.assign(this.constraints, constraintData)\n }\n }\n\n compareWithWordDependsOnType (word, className, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n let value\n\n if (!this.constraints.irregularVerb) {\n value = this.constraints.suffixBased ? this.suffix : this.form\n } else {\n if (className === 'Suffix') {\n value = this.suffix\n } else {\n value = this[Feature.types.fullForm] ? this[Feature.types.fullForm].value : this.form\n }\n }\n\n return normalize\n ? model.normalizeWord(value) === model.normalizeWord(word)\n : value === word\n }\n\n compareWithWord (word, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n const value = this.constraints.suffixBased ? this.suffix : this.form\n return normalize\n ? model.normalizeWord(value) === model.normalizeWord(word)\n : value === word\n }\n\n /**\n * Check to see if the supplied inflection can disambiguate this one\n * @param {Inflection} infl Inflection object to be used for disambiguation\n */\n disambiguatedBy (infl) {\n let matched = true\n // an inflection can only be disambiguated by its features\n if (this.features.length === 0 || infl.features.length === 0) {\n matched = false\n }\n // the supplied inflection can be less specific but not more\n if (infl.features.length > this.features.length) {\n matched = false\n }\n for (let feature of infl.features) {\n if (!this[feature] || !this[feature].isEqual(infl[feature])) {\n matched = false\n break\n }\n }\n return matched\n }\n\n static readObject (jsonObject) {\n let inflection =\n new Inflection(\n jsonObject.stem, jsonObject.languageCode, jsonObject.suffix, jsonObject.prefix, jsonObject.example)\n inflection.languageID = LMF.getLanguageIdFromCode(inflection.languageCode)\n return inflection\n }\n\n /**\n * @deprecated Use `addFeature` instead\n * Sets a grammatical feature in an inflection. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n console.warn(`Please use \"addFeature\" instead.`)\n if (!data) {\n throw new Error('Inflection feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n let type = data[0].type\n this[type] = []\n for (let element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('Inflection feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Language \"${element.languageID.toString()}\" of a feature does not match\n a language \"${this.languageID.toString()}\" of an Inflection object.`)\n }\n\n this[type].push(element)\n this.features.add(type)\n }\n }\n\n /**\n * Sets a grammatical feature of an inflection. Feature is stored in a `feature.type` property.\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this[feature.type] = feature\n this.features.add(feature.type)\n }\n\n /**\n * Sets multiple grammatical features of an inflection.\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error(`Features must be in an array`)\n }\n\n for (let feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Checks whether an inflection has a feature with `featureName` name and `featureValue` value\n * @param {string} featureName - A name of a feature\n * @param {string} featureValue - A value of a feature\n * @return {boolean} True if an inflection contains a feature, false otherwise\n */\n hasFeatureValue (featureName, featureValue) {\n if (this.hasOwnProperty(featureName)) {\n return this[featureName].values.includes(featureValue)\n }\n return false\n }\n}\nexport default Inflection\n","class InflectionGroup {\n /**\n * A group of inflections or groups of inflections\n *\n * @param {InflectionGroupingKey} groupingKey features of the inflections in the group\n * @param {Inflection[]|InflectionGroup[]} inflections array of Inflections or InflectionGroups in this group\n */\n constructor (groupingKey, inflections = [], sortKey = null) {\n this.groupingKey = groupingKey\n this.inflections = inflections\n }\n\n /**\n * Add an Inflection or InflectionGroup to the group\n * @param {Inflection|InflectionGroup} inflection\n */\n append (inflection) {\n this.inflections.push(inflection)\n }\n}\nexport default InflectionGroup\n","import Feature from './feature.js'\n\nclass InflectionGroupingKey {\n /**\n * @constructor\n * @param {Inflection} infl inflection with features which are used as a grouping key\n * @param {string[]} features array of feature names which are used as the key\n * @param {Object} extras extra property name and value pairs used in the key\n */\n constructor (infl, features, extras = {}) {\n for (let feature of features) {\n this[feature] = infl[feature]\n }\n Object.assign(this, extras)\n }\n\n /**\n * checks if a feature with a specific value\n * is included in the grouping key\n * @returns {boolean} true if found, false if not\n */\n hasFeatureValue (feature, value) {\n if (this.hasOwnProperty(feature)) {\n return this[feature].values.includes(value)\n }\n return false\n }\n\n /**\n * Return this key as a string\n * @returns {string} string representation of the key\n */\n toString () {\n let values = []\n for (let prop of Object.getOwnPropertyNames(this).sort()) {\n // A prop can be either a Feature object, or a one of the extras of a string type\n let value = (this[prop] instanceof Feature) ? this[prop].values.sort().join(',') : this[prop]\n values.push(value)\n }\n return values.join(' ')\n }\n}\n\nexport default InflectionGroupingKey\n","import * as Constants from './constants.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Feature from './feature.js'\nimport FeatureType from './feature_type.js'\nimport InflectionGroupingKey from './inflection_grouping_key.js'\nimport InflectionGroup from './inflection_group.js'\n\n/**\n * @class LanguageModel is the base class for language-specific behavior\n */\nclass LanguageModel {\n constructor () {\n // This is just to avoid JavaScript Standard error on `context_backward` getter name. Don't need a constructor otherwise\n // TODO: `contextBackward` shall be used instead of `context_backward` wherever it is used\n this.context_backward = LanguageModel.contextBackward\n }\n\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n /**\n * @deprecated\n */\n get contextForward () {\n console.warn(`Please use static \"contextForward\" instead`)\n return this.constructor.contextForward\n }\n\n /**\n * @deprecated\n */\n get contextBackward () {\n console.warn(`Please use static \"contextBackward\" instead`)\n return this.constructor.contextBackward\n }\n\n /**\n * @deprecated\n */\n get direction () {\n console.warn(`Please use static \"direction\" instead`)\n return this.constructor.direction\n }\n\n /**\n * @deprecated\n */\n get baseUnit () {\n console.warn(`Please use static \"baseUnit\" instead`)\n return this.constructor.baseUnit\n }\n\n /**\n * @deprecated\n */\n get features () {\n console.warn(`Please use individual \"getFeatureType\" or static \"features\" instead`)\n return this.constructor.features\n }\n\n /**\n * Returns a list of names of feature types that are defined in a language model.\n * @return {string[]} Names of features that are defined in a model.\n */\n static get featureNames () {\n return this.featureValues.keys()\n }\n\n /**\n * Returns a feature a `featureType` name that is defined for a language. It does not create a new Feature\n * object instance. It returns the one defined in a language model. To get a new instance of a Feature\n * object, use `getFeature` instead.\n * If no feature of `featureType` is defined in a language model, throws an error.\n * @param {string} featureType - A feature type name.\n * @return {Feature} A feature object of requested type.\n */\n static typeFeature (featureType) {\n if (this.typeFeatures.has(featureType)) {\n return this.typeFeatures.get(featureType)\n } else {\n throw new Error(`Type feature \"${featureType}\" is not defined within \"${this}\"`)\n }\n }\n\n /**\n * Returns a map with Feature objects of all features defined in a language. Use this method to get all\n * Feature objects defined in a language model.\n * @return {Map} Feature objects for all features defined within a language in a Map object. The key is\n * a feature type (a string), and the value is a Feature object.\n */\n static get typeFeatures () {\n console.warn(`This getter must be defined in a descendant class`)\n }\n\n static get features () {\n let features = {}\n for (const featureName of this.featureNames) {\n features[featureName] = this.getFeature(featureName)\n }\n return features\n }\n\n static get languageID () {\n return Constants.LANG_UNDEFINED\n }\n\n static get languageCode () {\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Returns an array of language codes that represents the language.\n * @return {String[]} An array of language codes that matches the language.\n */\n static get languageCodes () {\n return []\n }\n\n static get codes () {\n console.warn(`Use static \"languageCodes\" instead`)\n return this.languageCodes\n }\n\n /**\n * @deprecated\n * @return {String[]}\n */\n get codes () {\n console.warn(`Please use a static version of \"codes\" instead`)\n return this.constructor.languageCodes\n }\n\n /**\n * @deprecated\n * @return {string}\n */\n toCode () {\n console.warn(`Please use a static \"languageCode\" instead`)\n return this.constructor.languageCode\n }\n\n /**\n * @deprecated\n * @return {string}\n */\n static toCode () {\n console.warn(`Please use a static \"languageCode\" instead`)\n return this.languageCode\n }\n\n /**\n * Return a list of feature values that are allowed for each feature type\n * @return {Map}\n */\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n [\n Feature.types.part,\n [\n Constants.POFS_ADVERB,\n Constants.POFS_ADVERBIAL,\n Constants.POFS_ADJECTIVE,\n Constants.POFS_ARTICLE,\n Constants.POFS_CONJUNCTION,\n Constants.POFS_EXCLAMATION,\n Constants.POFS_INTERJECTION,\n Constants.POFS_NOUN,\n Constants.POFS_NUMERAL,\n Constants.POFS_PARTICLE,\n Constants.POFS_PREFIX,\n Constants.POFS_PREPOSITION,\n Constants.POFS_PRONOUN,\n Constants.POFS_SUFFIX,\n Constants.POFS_SUPINE,\n Constants.POFS_VERB,\n Constants.POFS_VERB_PARTICIPLE\n ]\n ],\n [\n Feature.types.gender,\n [\n Constants.GEND_MASCULINE,\n Constants.GEND_FEMININE,\n Constants.GEND_NEUTER\n ]\n ],\n [\n Feature.types.type,\n [\n Constants.TYPE_REGULAR,\n Constants.TYPE_IRREGULAR\n ]\n ],\n [\n Feature.types.person,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.age,\n []\n ],\n [\n Feature.types.area,\n []\n ],\n [\n Feature.types.source,\n []\n ],\n [\n Feature.types.frequency,\n []\n ],\n [\n Feature.types.geo,\n []\n ],\n [\n Feature.types.pronunciation,\n []\n ],\n [\n Feature.types.kind,\n []\n ],\n [\n Feature.types.comparison,\n []\n ],\n [\n Feature.types.morph,\n []\n ],\n [\n Feature.types.stemtype,\n []\n ],\n [\n Feature.types.derivtype,\n []\n ]\n ])\n }\n\n /**\n * @deprecated\n * @return {symbol} Returns a language ID\n */\n static get sourceLanguage () {\n console.warn(`Please use languageID directly`)\n return this.languageID\n }\n\n /**\n * @deprecated\n * @return {symbol} Returns a language ID\n */\n get sourceLanguage () {\n console.warn(`Please use languageID directly`)\n return this.constructor.languageID\n }\n\n /**\n * @deprecated\n * @param name\n * @return {FeatureType}\n */\n static getFeatureType (name) {\n console.warn('Please use getFeature instead')\n let featureValues = this.featureValues\n if (featureValues.has(name)) {\n return new FeatureType(name, featureValues.get(name), this.languageID)\n } else {\n throw new Error(`Feature \"${name}\" is not defined`)\n }\n }\n\n /**\n * Returns a new instance of a feature with `featureType`. It uses a feature defined in a language model\n * as a master.\n * @param {string} featureType - A name of a feature type.\n * @return {Feature} - A newly created Feature object.\n */\n static getFeature (featureType) {\n let featureValues = this.featureValues // To cache the values\n if (featureValues.has(featureType)) {\n let allowedValues = featureValues.get(featureType)\n return new Feature(featureType, allowedValues, this.languageID, 1, allowedValues)\n } else {\n throw new Error(`Feature \"${featureType}\" is not defined`)\n }\n }\n\n _initializeFeatures () {\n let features = {}\n for (const featureName of this.constructor.featureValues.keys()) {\n features[featureName] = this.constructor.getFeature(featureName)\n }\n return features\n }\n\n /**\n * @deprecated\n */\n grammarFeatures () {\n console.warn(`Please use a static version of \"grammarFeatures\" instead`)\n return this.constructor.grammarFeatures()\n }\n\n /**\n * Identify the morphological features which should be linked to a grammar.\n * @returns {String[]} Array of Feature types\n */\n static grammarFeatures () {\n return []\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Check to see if the supplied language code is supported by this tool\n * @param {string} code the language code\n * @returns true if supported false if not\n * @type Boolean\n */\n static supportsLanguage (code) {\n return this.languageCodes.includes[code]\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {string} word the source word\n * @returns the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type String\n */\n static normalizeWord (word) {\n return word\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n return []\n }\n\n alternateWordEncodings (word, preceding, following, encoding) {\n console.warn(`Please use static \"alternateWordEncodings\" instead`)\n return this.constructor.alternateWordEncodings(word, preceding, following, encoding)\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return '.,;:!?\\'\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * @deprecated\n * @return {String}\n */\n getPunctuation () {\n console.warn(`Please use a static version of \"getPunctuation\"`)\n return this.constructor.getPunctuation()\n }\n\n toString () {\n return String(this.constructor.languageCode)\n }\n\n isEqual (model) {\n return LanguageModelFactory.compareLanguages(this.languageID, model.languageID)\n }\n\n /*\n There are two types of language identificators: language IDs and language code. Language ID is a symbol constant\n defined in constants.js, such as LANG_LATIN or LANG_GREEK. Language code is a string containing (usually)\n a three-letter language codes such as 'lat' or 'la' for latin. There can be multiple language codes that identify\n the same language, but there is only one unique language ID for each language.\n */\n\n /**\n * Checks whether a language has a particular language code in its list of codes\n * @param {String} languageCode - A language code to check\n * @return {boolean} Whether this language code exists in a language code list\n */\n static hasCode (languageCode) {\n if (this.isLanguageCode(languageCode)) {\n return this.languageCodes.includes(languageCode)\n } else {\n throw new Error(`Format of a \"${languageCode}\" is incorrect`)\n }\n }\n\n /**\n * Tests wither a provided language identificator is a language ID.\n * @param {Symbol | string} language - A language identificator, either a Symbol or a string language code.\n * @return {boolean} True if language identificator provided is a language ID.\n */\n static isLanguageID (language) {\n return (typeof language === 'symbol')\n }\n\n /**\n * Tests wither a provided language identificator is a language code.\n * @param {Symbol | string} language - A language identificator, either a Symbol or a string language code.\n * @return {boolean} - True if language identificator provided is a language code.\n */\n static isLanguageCode (language) {\n return !LanguageModel.isLanguageID(language)\n }\n\n /**\n * @deprecated\n * @param node\n */\n canInflect (node) {\n console.warn(`Please use a static version of \"canInflect\" instead`)\n return this.constructor.canInflect(node)\n }\n\n /**\n * Groups a set of inflections according to a language-specific display paradigm\n * The default groups according to the following logic:\n * 1. groups of groups with unique stem, prefix, suffix, part of speech, declension, dialect and comparison\n * 2. groups of those groups with unique\n * number, if it's an inflection with a grammatical case\n * tense, if it's an inflection with tense but no case (i.e. a verb)\n * verbs without tense or case\n * adverbs\n * everything else\n * 3. groups of those groups with unique voice and tense\n * 4. groups of inflections with unique gender, person, mood, and sort\n */\n static groupInflectionsForDisplay (inflections) {\n let grouped = new Map()\n let aggregated = this.aggregateInflectionsForDisplay(inflections)\n\n // group inflections by part of speech\n for (let infl of aggregated) {\n let groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.part, Feature.types.declension, Feature.types.dialect, Feature.types.comparison],\n {\n prefix: infl.prefix,\n suffix: infl.suffix,\n stem: infl.stem\n }\n )\n let groupingKeyStr = groupingKey.toString()\n if (grouped.has(groupingKeyStr)) {\n grouped.get(groupingKeyStr).append(infl)\n } else {\n grouped.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n\n // iterate through each group key to group the inflections in that group\n for (let kv of grouped) {\n let inflgrp = new Map()\n for (let infl of kv[1].inflections) {\n let keyprop\n let isCaseInflectionSet = false\n if (infl[Feature.types.grmCase]) {\n // grouping on number if case is defined\n keyprop = Feature.types.number\n isCaseInflectionSet = true\n } else if (infl[Feature.types.tense]) {\n // grouping on tense if tense is defined but not case\n keyprop = Feature.types.tense\n } else if (infl[Feature.types.part] === Constants.POFS_VERB) {\n // grouping on no case or tense but a verb\n keyprop = Feature.types.part\n } else if (infl[Feature.types.part] === Constants.POFS_ADVERB) {\n keyprop = Feature.types.part\n // grouping on adverbs without case or tense\n } else {\n keyprop = 'misc'\n // grouping on adverbs without case or tense\n // everything else\n }\n let groupingKey = new InflectionGroupingKey(infl, [keyprop], {isCaseInflectionSet: isCaseInflectionSet})\n let groupingKeyStr = groupingKey.toString()\n if (inflgrp.has(groupingKeyStr)) {\n inflgrp.get(groupingKeyStr).append(infl)\n } else {\n inflgrp.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n // inflgrp is now a map of groups of inflections grouped by\n // inflections with number\n // inflections without number but with tense\n // inflections of verbs without tense\n // inflections of adverbs\n // everything else\n // iterate through each inflection group key to group the inflections in that group by tense and voice\n for (let kv of inflgrp) {\n let nextGroup = new Map()\n let sortOrder = new Map()\n for (let infl of kv[1].inflections) {\n let sortkey = infl[Feature.types.grmCase] ? Math.max(infl[Feature.types.grmCase].items.map(f => f.sortOrder)) : 1\n let groupingKey = new InflectionGroupingKey(infl, [Feature.types.tense, Feature.types.voice])\n let groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl], sortkey))\n sortOrder.set(groupingKeyStr, sortkey)\n }\n }\n kv[1].inflections = []\n let sortedKeys = Array.from(nextGroup.keys()).sort(\n (a, b) => {\n let orderA = sortOrder.get(a)\n let orderB = sortOrder.get(b)\n return orderA > orderB ? -1 : orderB > orderA ? 1 : 0\n }\n )\n for (let groupkey of sortedKeys) {\n kv[1].inflections.push(nextGroup.get(groupkey))\n }\n }\n\n // inflgrp is now a Map of groups of groups of inflections\n\n for (let kv of inflgrp) {\n let groups = kv[1]\n for (let group of groups.inflections) {\n let nextGroup = new Map()\n for (let infl of group.inflections) {\n // set key is case comp gend pers mood sort\n let groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.grmCase, Feature.types.comparison, Feature.types.gender, Feature.types.number, Feature.types.person,\n Feature.types.tense, Feature.types.mood, Feature.types.voice])\n let groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n group.inflections = Array.from(nextGroup.values()) // now a group of inflection groups\n }\n }\n kv[1].inflections = Array.from(inflgrp.values())\n }\n return Array.from(grouped.values())\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n * @param {Inflection[]} inflections an array of inflections\n * @return Inflection[] the aggregated inflections\n */\n static aggregateInflectionsForDisplay (inflections) {\n // default is just to do nothing\n return inflections\n }\n\n /**\n * @deprecated\n * @param inflections\n * @return {*}\n */\n groupInflectionsForDisplay (inflections) {\n console.warn(`Please use a static version of \"groupInflectionsForDisplay\" instead`)\n return this.constructor.groupInflectionsForDisplay(inflections)\n }\n}\n\nexport default LanguageModel\n","import LanguageModel from './language_model.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport * as Constants from './constants.js'\n\nconst MODELS = new Map([\n [ Constants.STR_LANG_CODE_LA, LatinLanguageModel ],\n [ Constants.STR_LANG_CODE_LAT, LatinLanguageModel ],\n [ Constants.STR_LANG_CODE_GRC, GreekLanguageModel ],\n [ Constants.STR_LANG_CODE_ARA, ArabicLanguageModel ],\n [ Constants.STR_LANG_CODE_AR, ArabicLanguageModel ],\n [ Constants.STR_LANG_CODE_PER, PersianLanguageModel ]\n])\n\nclass LanguageModelFactory {\n /**\n * Checks whether a language is supported\n * @param {string | symbol} language - Language as a language ID (symbol) or a language code (string)\n * @return {boolean} True if language is supported, false otherwise\n */\n static supportsLanguage (language) {\n language = (typeof language === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(language) : language\n return MODELS.has(language)\n }\n\n /**\n * Returns a constructor of language model for a specific language ID.\n * @param {symbol} languageID - A language ID of a desired language model.\n * @return {LanguageModel} A language model for a given language ID.\n */\n static getLanguageModel (languageID) {\n let languageCode = LanguageModelFactory.getLanguageCodeFromId(languageID)\n if (MODELS.has(languageCode)) {\n return MODELS.get(languageCode)\n } else {\n // A default value\n return LanguageModel\n }\n }\n\n static getLanguageForCode (code = null) {\n let Model = MODELS.get(code)\n if (Model) {\n return new Model()\n }\n // for now return a default Model\n // TODO may want to throw an error\n return new LanguageModel()\n }\n\n /**\n * Converts an ISO 639-3 language code to a language ID\n * @param {string} languageCode - An ISO 639-3 language code\n * @return {symbol | undefined} A language ID or undefined if language ID is not found\n */\n static getLanguageIdFromCode (languageCode) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.hasCode(languageCode)) {\n return languageModel.languageID\n }\n }\n // Noting found, return a Symbol with an undefined value (to keep return value type the same)\n return Constants.LANG_UNDEFINED\n }\n\n /**\n * Converts a language ID to an default ISO 639-3 language code for that language\n * @param {symbol} languageID - A language ID\n * @return {string | undefined} An ISO 639-3 language code or undefined if language code is not found\n */\n static getLanguageCodeFromId (languageID) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.languageID.toString() === languageID.toString()) {\n return languageModel.languageCode\n }\n }\n // Noting found, return a string with an undefined value (to keep return value type the same)\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Takes either a language ID or a language code and returns an object with both an ID and a code.\n * @param {string | symbol} language - Either a language ID (a Symbol) or a language code (a String).\n * @return {object} An object with the following properties:\n * {symbol} languageID\n * {string} languageCode\n */\n static getLanguageAttrs (language) {\n if (typeof language === 'symbol') {\n // `language` is a language ID\n return {\n languageID: language,\n languageCode: LanguageModelFactory.getLanguageCodeFromId(language)\n }\n } else {\n // `language` is a language code\n return {\n languageID: LanguageModelFactory.getLanguageIdFromCode(language),\n languageCode: language\n }\n }\n }\n\n /**\n * Compares two languages in either a language ID or a language code format. For this, does conversion of\n * language IDs to language code. Because fo this, it will work even for language IDs defined in\n * different modules\n * @param {string | symbol} languageA - Either a language ID (a symbol) or a language code (a string).\n * @param {string | symbol} languageB - Either a language ID (a symbol) or a language code (a string).\n * @return {boolean} True if languages are the same, false otherwise.\n */\n static compareLanguages (languageA, languageB) {\n languageA = (typeof languageA === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageA) : languageA\n languageB = (typeof languageB === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageB) : languageB\n return languageA === languageB\n }\n}\nexport default LanguageModelFactory\n","import LanguageModel from './language_model.js'\nimport Feature from './feature.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class LatinLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_LATIN }\n static get languageCode () { return Constants.STR_LANG_CODE_LAT }\n static get languageCodes () { return [Constants.STR_LANG_CODE_LA, Constants.STR_LANG_CODE_LAT] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_PERSONAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_RELATIVE,\n Constants.CLASS_INTERROGATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_ABLATIVE,\n Constants.CASE_LOCATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH,\n Constants.ORD_5TH\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_ACTIVE,\n Constants.VOICE_PASSIVE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_IMPERATIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_SUPINE,\n Constants.MOOD_GERUNDIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_INFINITIVE\n ]\n ],\n [\n Feature.types.conjugation,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) {\n this.initTypeFeatures()\n }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * @override LanguageModel#grammarFeatures\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.conjugation]\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {String} word the source word\n * @returns the normalized form of the word (Latin replaces accents and special chars)\n * @type String\n */\n static normalizeWord (word) {\n if (word) {\n word = word.replace(/[\\u00c0\\u00c1\\u00c2\\u00c3\\u00c4\\u0100\\u0102]/g, 'A')\n word = word.replace(/[\\u00c8\\u00c9\\u00ca\\u00cb\\u0112\\u0114]/g, 'E')\n word = word.replace(/[\\u00cc\\u00cd\\u00ce\\u00cf\\u012a\\u012c]/g, 'I')\n word = word.replace(/[\\u00d2\\u00d3\\u00d4\\u00df\\u00d6\\u014c\\u014e]/g, 'O')\n word = word.replace(/[\\u00d9\\u00da\\u00db\\u00dc\\u016a\\u016c]/g, 'U')\n word = word.replace(/[\\u00c6\\u01e2]/g, 'AE')\n word = word.replace(/[\\u0152]/g, 'OE')\n word = word.replace(/[\\u00e0\\u00e1\\u00e2\\u00e3\\u00e4\\u0101\\u0103]/g, 'a')\n word = word.replace(/[\\u00e8\\u00e9\\u00ea\\u00eb\\u0113\\u0115]/g, 'e')\n word = word.replace(/[\\u00ec\\u00ed\\u00ee\\u00ef\\u012b\\u012d\\u0129]/g, 'i')\n word = word.replace(/[\\u00f2\\u00f3\\u00f4\\u00f5\\u00f6\\u014d\\u014f]/g, 'o')\n word = word.replace(/[\\u00f9\\u00fa\\u00fb\\u00fc\\u016b\\u016d]/g, 'u')\n word = word.replace(/[\\u00e6\\u01e3]/g, 'ae')\n word = word.replace(/[\\u0153]/g, 'oe')\n }\n return word\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // Not implemented yet\n return []\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n * @param {Inflection} inflection - An inflection object\n * @return {Object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n let grammar = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if ([Constants.POFS_VERB, Constants.POFS_VERB_PARTICIPLE].includes(inflection[Feature.types.part].value)) {\n grammar.fullFormBased = true\n grammar.suffixBased = true\n } else if (inflection[Feature.types.part].value === Constants.POFS_PRONOUN) {\n grammar.fullFormBased = true\n } else {\n grammar.suffixBased = true\n }\n } else {\n console.warn(`Unable to set grammar: part of speech data is missing or is incorrect`, inflection[Feature.types.part])\n }\n\n return grammar\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport uuidv4 from 'uuid/v4'\n\n/**\n * Lemma, a canonical form of a word.\n */\nclass Lemma {\n /**\n * Initializes a Lemma object.\n * @param {string} word - A word.\n * @param {symbol | string} languageID - A language ID (symbol, please use this) or a language code of a word.\n * @param {string[]} principalParts - the principalParts of a lemma.\n * @param {Object} features - the grammatical features of a lemma.\n\n * @param {Translation} transaltions - translations from python service\n */\n constructor (word, languageID, principalParts = [], features = {}) {\n if (!word) {\n throw new Error('Word should not be empty.')\n }\n\n if (!languageID) {\n throw new Error('Language should not be empty.')\n }\n\n // Compatibility code for something providing languageCode instead of languageID\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(languageID))\n\n this.word = word\n this.principalParts = principalParts\n this.features = {}\n\n this.ID = uuidv4()\n }\n\n get language () {\n console.warn(`Please use \"languageID\" instead of \"language\"`)\n return this.languageCode\n }\n\n static readObject (jsonObject) {\n return new Lemma(jsonObject.word, jsonObject.language, jsonObject.principalParts, jsonObject.pronunciation)\n }\n\n /**\n * @deprecated Please use `addFeature` instead.\n * Sets a grammatical feature for a lemma. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n console.warn(`Please use \"addFeature\" instead`)\n if (!data) {\n throw new Error('feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n let type = data[0].type\n this.features[type] = []\n for (let element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error('Language \"' + element.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[type].push(element)\n }\n }\n\n /**\n * Sets a grammatical feature of a lemma. Feature is stored in a `feature.type` property.\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[feature.type] = feature\n }\n\n /**\n * Sets multiple grammatical features of a lemma.\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error(`Features must be in an array`)\n }\n\n for (let feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Sets a translation from python service.\n * @param {Translation} translation - A translation object\n */\n addTranslation (translation) {\n if (!translation) {\n throw new Error('translation data cannot be empty.')\n }\n\n if (translation.constructor.name !== 'Translation') {\n throw new Error('translation data must be a Translation object.')\n }\n\n this.translation = translation\n }\n\n /**\n * Test to see if two lemmas are full homonyms\n * @param {Lemma} lemma the lemma to compare\n * @return {Boolean} true or false\n */\n isFullHomonym (lemma) {\n // returns true if the word and part of speech match\n return this.word === lemma.word &&\n this.features[Feature.types.part] &&\n lemma.features[Feature.types.part] &&\n this.features[Feature.types.part].isEqual(lemma.features[Feature.types.part])\n }\n}\n\nexport default Lemma\n","import Lemma from './lemma.js'\r\nimport Inflection from './inflection.js'\r\nimport DefinitionSet from './definition-set'\r\nimport LMF from './language_model_factory'\r\n\r\n/**\r\n * A basic unit of lexical meaning. Contains a primary Lemma object, one or more Inflection objects\r\n * and a DefinitionSet\r\n */\r\nclass Lexeme {\r\n /**\r\n * Initializes a Lexeme object.\r\n * @param {Lemma} lemma - A lemma object.\r\n * @param {Inflection[]} inflections - An array of inflections.\r\n * @param {DefinitionSet} meaning - A set of definitions.\r\n */\r\n constructor (lemma, inflections, meaning = null) {\r\n if (!lemma) {\r\n throw new Error('Lemma should not be empty.')\r\n }\r\n\r\n if (!(lemma instanceof Lemma)) {\r\n throw new Error('Lemma should be of Lemma object type.')\r\n }\r\n\r\n if (!inflections) {\r\n throw new Error('Inflections data should not be empty.')\r\n }\r\n\r\n if (!Array.isArray(inflections)) {\r\n throw new Error('Inflection data should be provided in an array.')\r\n }\r\n\r\n for (let inflection of inflections) {\r\n if (!(inflection instanceof Inflection)) {\r\n throw new Error('All inflection data should be of Inflection object type.')\r\n }\r\n }\r\n\r\n if (meaning !== null && !(meaning instanceof DefinitionSet)) {\r\n throw new Error('Meaning should be of DefinitionSet object type.')\r\n }\r\n\r\n this.lemma = lemma\r\n this.inflections = []\r\n inflections.forEach(i => { this.addInflection(i) })\r\n this.meaning = meaning || new DefinitionSet(this.lemma.word, this.lemma.languageID)\r\n this.disambiguated = false\r\n }\r\n\r\n /**\r\n * add an inflection to the lexeme\r\n * @param {Inflection} inflection\r\n */\r\n addInflection (inflection) {\r\n inflection.lemma = this.lemma\r\n this.inflections.push(inflection)\r\n }\r\n\r\n /**\r\n * test to see if a lexeme is populated with meaningful data\r\n * Returns true if any of these are true:\r\n * its lemma has morphological features defined\r\n * it has one ore more definitions supplied in the meaning\r\n * it has one ore more inflections\r\n * @return {boolean}\r\n */\r\n isPopulated () {\r\n return Object.entries(this.lemma.features).length > 0 ||\r\n !this.meaning.isEmpty() ||\r\n this.inflections.length > 0\r\n }\r\n\r\n /**\r\n * disambiguate with another supplied Lexeme\r\n * @param {Lexeme} lexeme the lexeme to be disambiguated\r\n * @param {Lexeme} disambiguator the lexeme to use to disambiguate\r\n * @return {Lexeme} a new lexeme, if disamibugation was successful disambiguated flag will be set on it\r\n */\r\n static disambiguate (lexeme, disambiguator) {\r\n let newLexeme = new Lexeme(lexeme.lemma, lexeme.inflections, lexeme.meaning)\r\n if (lexeme.lemma.isFullHomonym(disambiguator.lemma) && disambiguator.inflections.length > 0) {\r\n newLexeme.disambiguated = true\r\n let keepInflections = []\r\n // iterate through this lexemes inflections and keep only thoes that are disambiguatedBy by the supplied lexeme's inflection\r\n // we want to keep the original inflections rather than just replacing them\r\n // because the original inflections may have more information\r\n for (let inflection of newLexeme.inflections) {\r\n for (let disambiguatorInflection of disambiguator.inflections) {\r\n if (inflection.disambiguatedBy(disambiguatorInflection)) {\r\n keepInflections.push(inflection)\r\n }\r\n }\r\n }\r\n newLexeme.inflections = keepInflections\r\n // if we couldn't match any existing inflections, then add the disambiguated one\r\n if (newLexeme.inflections.length === 0) {\r\n for (let infl of disambiguator.inflections) {\r\n newLexeme.addInflection(infl)\r\n }\r\n }\r\n }\r\n return newLexeme\n }\r\n\r\n getGroupedInflections () {\r\n let lm = LMF.getLanguageModel(this.lemma.languageID)\r\n return lm.groupInflectionsForDisplay(this.inflections)\r\n }\r\n\r\n static readObject (jsonObject) {\r\n let lemma = Lemma.readObject(jsonObject.lemma)\r\n let inflections = []\r\n for (let inflection of jsonObject.inflections) {\r\n inflections.push(Inflection.readObject(inflection))\r\n }\r\n\r\n let lexeme = new Lexeme(lemma, inflections)\r\n lexeme.meaning = DefinitionSet.readObject(jsonObject.meaning)\r\n return lexeme\r\n }\r\n\r\n /**\r\n * Get a sort function for an array of lexemes which applies a primary and secondary\r\n * sort logic using the sort order specified for each feature. Sorts in descending order -\r\n * higher sort order means it should come first\r\n * @param {string} primary feature name to use as primary sort key\r\n * @param {string} secondary feature name to use as secondary sort key\r\n * @returns {Function} function which can be passed to Array.sort\r\n */\r\n static getSortByTwoLemmaFeatures (primary, secondary) {\r\n return (a, b) => {\r\n if ((a.lemma.features[primary] && b.lemma.features[primary]) ||\r\n (!a.lemma.features[primary] && !b.lemma.features[[primary]])) {\r\n let primarySort\r\n if (a.lemma.features[primary] && b.lemma.features[primary]) {\r\n // if both lemmas have the primary sort key, then sort\r\n primarySort = a.lemma.features[primary].compareTo(b.lemma.features[primary])\r\n } else {\r\n // if neither lemma has the primary sort key, then the primary sort is equal\r\n primarySort = 0\r\n }\r\n if (primarySort !== 0) {\r\n return primarySort\r\n } else if (a.lemma.features[secondary] && b.lemma.features[secondary]) {\r\n return a.lemma.features[secondary].compareTo(b.lemma.features[secondary])\r\n } else if (a.lemma.features[secondary] && !b.lemma.features[secondary]) {\r\n return -1\r\n } else if (!a.lemma.features[secondary] && b.lemma.features[secondary]) {\r\n return 1\r\n } else {\r\n // neither have the secondary sort key so they are equal\r\n return 0\r\n }\r\n } else if (a.lemma.features[primary] && !b.lemma.features[primary]) {\r\n return -1\r\n } else if (!a.lemma.features[primary] && b.lemma.features[primary]) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n }\r\n}\r\nexport default Lexeme\r\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class PersianLanguageModel is the lass for Persian specific behavior\n */\nexport default class PersianLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_PERSIAN }\n\n static get languageCode () { return Constants.STR_LANG_CODE_PER }\n\n static get languageCodes () { return [Constants.STR_LANG_CODE_PER, Constants.STR_LANG_CODE_FAS, Constants.STR_LANG_CODE_FA, Constants.STR_LANG_CODE_FA_IR] }\n\n static get contextForward () { return 0 }\n\n static get contextBackward () { return 0 }\n\n static get direction () { return Constants.LANG_DIR_RTL }\n\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // Not implemented yet\n return []\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n}\n","/**\n * An abstraction of an Alpheios resource provider\n */\nclass ResourceProvider {\n /**\n * @constructor\n * @param {string} uri - a unique resource identifier for this provider\n * @param {string} rights - rights text\n * @param {Map} rightsTranslations - optional map of translated rights text - keys should be language of text, values the text\n */\n constructor (uri = '', rights = '', rightsTranslations = new Map([['default', rights]])) {\n this.uri = uri\n this.rights = rightsTranslations\n if (!this.rights.has('default')) {\n this.rights.set('default', rights)\n }\n }\n\n /**\n * @return a string representation of the resource provider, in the default language\n */\n toString () {\n return this.rights.get('default')\n }\n\n /**\n * Produce a string representation of the resource provider, in the requested locale if available\n * @param {string} languageCode\n * @return a string representation of the resource provider, in the requested locale if available\n */\n toLocaleString (languageCode) {\n return this.rights.get(languageCode) || this.rights.get('default')\n }\n\n static getProxy (provider = null, target = {}) {\n return new Proxy(target, {\n get: function (target, name) {\n return name === 'provider' ? provider : target[name]\n }\n })\n }\n}\n\nexport default ResourceProvider\n","/**\n * stores a scope of lemma translations from python service\n * Contains a primary Lemma object\n */\nclass Translation {\n /**\n * Initializes a Translation object.\n * @param {Lemma} lemma - A lemma object.\n * @param [] meanings - A set of definitions.\n\n */\n constructor (lemma, languageCode, translations = []) {\n if (!lemma) {\n throw new Error('Lemma should not be empty.')\n }\n this.lemmaWord = lemma.word\n this.languageCode = languageCode\n this.glosses = translations\n }\n\n static readTranslationFromJSONList (lemma, languageCode, translationsList) {\n if (!translationsList || !Array.isArray(translationsList)) {\n throw new Error('Recieved not proper translation list', translationsList)\n }\n let curTranslations = translationsList.find(function (element) { return element.in === lemma.word })\n return new Translation(lemma, languageCode, curTranslations.translations)\n }\n\n static loadTranslations (lemma, languageCode, translationsList) {\n lemma.addTranslation(this.readTranslationFromJSONList(lemma, languageCode, translationsList))\n }\n}\nexport default Translation\n","module.exports = require(\"crypto\");"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///../node_modules/uuid/lib/bytesToUuid.js","webpack:///../node_modules/uuid/lib/rng.js","webpack:///../node_modules/uuid/v4.js","webpack:///./arabic_language_model.js","webpack:///./constants.js","webpack:///./definition-set.js","webpack:///./definition.js","webpack:///./driver.js","webpack:///./feature.js","webpack:///./feature_importer.js","webpack:///./feature_list.js","webpack:///./feature_type.js","webpack:///./greek_language_model.js","webpack:///./grm-feature.js","webpack:///./homonym.js","webpack:///./i18n.js","webpack:///./inflection.js","webpack:///./inflection_group.js","webpack:///./inflection_grouping_key.js","webpack:///./language_model.js","webpack:///./language_model_factory.js","webpack:///./latin_language_model.js","webpack:///./lemma.js","webpack:///./lexeme.js","webpack:///./persian_language_model.js","webpack:///./resource_provider.js","webpack:///./translation.js","webpack:///external \"crypto\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvBA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;ACPA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAChE;AACA,oCAAoC,KAAK,GAAG,KAAK,GAAG,KAAK,UAAU,KAAK;AACxE;AACA,qCAAqC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1E;AACA,qCAAqC,KAAK;AAC1C;AACA,mCAAmC,KAAK;AACxC;AACA,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1NA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9EA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAsBA;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gCAAgC,SAAS,gDAAgD,EAAE;AAC3F;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD,MAAM;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL,6BAA6B,MAAM;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kDAAkD,OAAO;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA,8CAA8C,SAAS,yDAAyD,EAAE;AAClH;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9bA;AAAA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5DA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;;AAEpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,+BAA+B;AACtC;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yEAAyE,8BAA8B,4BAA4B,2BAA2B;AAC9J;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,4BAA4B,4BAA4B,2BAA2B;AAC1J;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9OA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,GAAG,KAAK;AAChC;AACA,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,WAAW,KAAK,GAAG,KAAK;AACxB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnRA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;AACpE;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9KA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,gBAAgB;AAC/B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;AACpE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,8BAA8B;AACnE,wBAAwB,2BAA2B;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5PA;AAAA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACpBA;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,YAAY,2BAA2B,KAAK;AACnF;AACA;;AAEA;AACA;AACA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,KAAK;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,aAAa;AACnD;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oHAAsE,yCAAyC;AAC/G;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;ACjlBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gBAAgB;AAC7B,cAAc,OAAO;AACrB,SAAS,OAAO;AAChB,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,gBAAgB;AAC7B,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B,+BAA+B;AAC/B,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B;AAC3B,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpNA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,SAAS;AACtB,aAAa,OAAO;;AAEpB,aAAa,YAAY;AACzB;AACA,mEAAmE;AACnE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,6DAA6D;;AAEpE;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,aAAa;AAC1B,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,wBAAwB;AACtD;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC7KA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,8BAA8B;;AAE9B,+BAA+B;;AAE/B,gCAAgC;;AAEhC,iCAAiC;;AAEjC,2BAA2B;;AAE3B,0BAA0B;;AAE1B;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;AACA;;;;;;;;;;;;;AChEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;;;;;;;;;;;;AC3CA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE,mCAAmC;AACvG;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCA,mC","file":"alpheios-data-models.node.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(global, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./driver.js\");\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In node.js\n// this is pretty straight-forward - we use the crypto API.\n\nvar crypto = require('crypto');\n\nmodule.exports = function nodeRNG() {\n return crypto.randomBytes(16);\n};\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class ArabicLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_ARABIC }\n static get languageCode () { return Constants.STR_LANG_CODE_ARA }\n static get languageCodes () { return [Constants.STR_LANG_CODE_ARA, Constants.STR_LANG_CODE_AR] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_RTL }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * @override LanguageModel#alternateWordEncodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // tanwin (& tatweel) - drop FATHATAN, DAMMATAN, KASRATAN, TATWEEL\n let tanwin = word.replace(/[\\u{064B}\\u{064C}\\u{064D}\\u{0640}]/ug, '')\n // hamzas - replace ALEF WITH MADDA ABOVE, ALEF WITH HAMZA ABOVE/BELOW with ALEF\n let hamza = tanwin.replace(/[\\u{0622}\\u{0623}\\u{0625}]/ug, '\\u{0627}')\n // harakat - drop FATHA, DAMMA, KASRA, SUPERSCRIPT ALEF, ALEF WASLA\n let harakat = hamza.replace(/[\\u{064E}\\u{064F}\\u{0650}\\u{0670}\\u{0671}]/ug, '')\n // shadda\n let shadda = harakat.replace(/\\u{0651}/ug, '')\n // sukun\n let sukun = shadda.replace(/\\u{0652}/ug, '')\n // alef\n let alef = sukun.replace(/\\u{0627}/ug, '')\n let alternates = new Map([\n ['tanwin', tanwin],\n ['hamza', hamza],\n ['harakat', harakat],\n ['shadda', shadda],\n ['sukun', sukun],\n ['alef', alef]\n ])\n if (encoding !== null && alternates.has(encoding)) {\n return [alternates.get(encoding)]\n } else {\n return Array.from(alternates.values())\n }\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n */\n static aggregateInflectionsForDisplay (inflections) {\n // TODO at some point we might want to be able to check the provider in here\n // because this really only applies to the specifics of the Aramorph parser\n let aggregated = []\n let aggregates = { [Constants.POFS_NOUN]: [], [Constants.POFS_ADJECTIVE]: [], [Constants.POFS_NOUN_PROPER]: [] }\n for (let infl of inflections) {\n if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/ADJ[uaiNK]/)) {\n aggregates[Constants.POFS_ADJECTIVE].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN_PROPER].push(infl)\n } else {\n // we are also going to keep the examples out of the display for now\n infl.example = null\n aggregated.push(infl)\n }\n }\n for (let type of Object.keys(aggregates)) {\n let base = aggregated.filter((i) => i[Feature.types.part].value === type)\n if (base.length !== 1) {\n // if we don't have the base form then we don't really know what to do here\n // so just put the inflection back in the ones available for display\n aggregated.push(...aggregates[type])\n }\n // we may decide we want to keep the extra suffix and morph information\n // from the alternate inflections but for now we just will drop it from\n // the inflections that are displayed\n }\n return aggregated\n }\n}\n","/* eslint-disable no-unused-vars */\nexport const LANG_UNIT_WORD = Symbol('word')\nexport const LANG_UNIT_CHAR = Symbol('char')\nexport const LANG_DIR_LTR = Symbol('ltr')\nexport const LANG_DIR_RTL = Symbol('rtl')\nexport const LANG_UNDEFINED = Symbol('undefined')\nexport const LANG_LATIN = Symbol('latin')\nexport const LANG_GREEK = Symbol('greek')\nexport const LANG_ARABIC = Symbol('arabic')\nexport const LANG_PERSIAN = Symbol('persian')\nexport const STR_LANG_CODE_UNDEFINED = 'undefined'\nexport const STR_LANG_CODE_LAT = 'lat'\nexport const STR_LANG_CODE_LA = 'la'\nexport const STR_LANG_CODE_GRC = 'grc'\nexport const STR_LANG_CODE_ARA = 'ara'\nexport const STR_LANG_CODE_AR = 'ar'\nexport const STR_LANG_CODE_FAS = 'fas'\nexport const STR_LANG_CODE_PER = 'per'\nexport const STR_LANG_CODE_FA_IR = 'fa-IR'\nexport const STR_LANG_CODE_FA = 'fa'\n// parts of speech\nexport const POFS_ADJECTIVE = 'adjective'\nexport const POFS_ADVERB = 'adverb'\nexport const POFS_ADVERBIAL = 'adverbial'\nexport const POFS_ARTICLE = 'article'\nexport const POFS_CONJUNCTION = 'conjunction'\nexport const POFS_EXCLAMATION = 'exclamation'\nexport const POFS_INTERJECTION = 'interjection'\nexport const POFS_NOUN = 'noun'\nexport const POFS_NOUN_PROPER = 'proper noun'\nexport const POFS_NUMERAL = 'numeral'\nexport const POFS_PARTICLE = 'particle'\nexport const POFS_PREFIX = 'prefix'\nexport const POFS_PREPOSITION = 'preposition'\nexport const POFS_PRONOUN = 'pronoun'\nexport const POFS_SUFFIX = 'suffix'\nexport const POFS_GERUNDIVE = 'gerundive'\nexport const POFS_SUPINE = 'supine'\nexport const POFS_VERB = 'verb'\nexport const POFS_VERB_PARTICIPLE = 'verb participle'\n// gender\nexport const GEND_MASCULINE = 'masculine'\nexport const GEND_FEMININE = 'feminine'\nexport const GEND_NEUTER = 'neuter'\nexport const GEND_COMMON = 'common'\nexport const GEND_ANIMATE = 'animate'\nexport const GEND_INANIMATE = 'inanimate'\n// Polish gender types\nexport const GEND_PERSONAL_MASCULINE = 'personal masculine'\nexport const GEND_ANIMATE_MASCULINE = 'animate masculine'\nexport const GEND_INANIMATE_MASCULINE = 'inanimate masculine'\n// comparative\nexport const COMP_POSITIVE = 'positive'\nexport const COMP_COMPARITIVE = 'comparative'\nexport const COMP_SUPERLATIVE = 'superlative'\n// case\nexport const CASE_ABESSIVE = 'abessive'\nexport const CASE_ABLATIVE = 'ablative'\nexport const CASE_ABSOLUTIVE = 'absolutive'\nexport const CASE_ACCUSATIVE = 'accusative'\nexport const CASE_ADDIRECTIVE = 'addirective'\nexport const CASE_ADELATIVE = 'adelative'\nexport const CASE_ADESSIVE = 'adessive'\nexport const CASE_ADVERBIAL = 'adverbial'\nexport const CASE_ALLATIVE = 'allative'\nexport const CASE_ANTESSIVE = 'antessive'\nexport const CASE_APUDESSIVE = 'apudessive'\nexport const CASE_AVERSIVE = 'aversive'\nexport const CASE_BENEFACTIVE = 'benefactive'\nexport const CASE_CARITIVE = 'caritive'\nexport const CASE_CAUSAL = 'causal'\nexport const CASE_CAUSAL_FINAL = 'causal-final'\nexport const CASE_COMITATIVE = 'comitative'\nexport const CASE_DATIVE = 'dative'\nexport const CASE_DELATIVE = 'delative'\nexport const CASE_DIRECT = 'direct'\nexport const CASE_DISTRIBUTIVE = 'distributive'\nexport const CASE_DISTRIBUTIVE_TEMPORAL = 'distributive-temporal'\nexport const CASE_ELATIVE = 'elative'\nexport const CASE_ERGATIVE = 'ergative'\nexport const CASE_ESSIVE = 'essive'\nexport const CASE_ESSIVE_FORMAL = 'essive-formal'\nexport const CASE_ESSIVE_MODAL = 'essive-modal'\nexport const CASE_EQUATIVE = 'equative'\nexport const CASE_EVITATIVE = 'evitative'\nexport const CASE_EXESSIVE = 'exessive'\nexport const CASE_FINAL = 'final'\nexport const CASE_FORMAL = 'formal'\nexport const CASE_GENITIVE = 'genitive'\nexport const CASE_ILLATIVE = 'illative'\nexport const CASE_INELATIVE = 'inelative'\nexport const CASE_INESSIVE = 'inessive'\nexport const CASE_INSTRUCTIVE = 'instructive'\nexport const CASE_INSTRUMENTAL = 'instrumental'\nexport const CASE_INSTRUMENTAL_COMITATIVE = 'instrumental-comitative'\nexport const CASE_INTRANSITIVE = 'intransitive'\nexport const CASE_LATIVE = 'lative'\nexport const CASE_LOCATIVE = 'locative'\nexport const CASE_MODAL = 'modal'\nexport const CASE_MULTIPLICATIVE = 'multiplicative'\nexport const CASE_NOMINATIVE = 'nominative'\nexport const CASE_PARTITIVE = 'partitive'\nexport const CASE_PEGATIVE = 'pegative'\nexport const CASE_PERLATIVE = 'perlative'\nexport const CASE_POSSESSIVE = 'possessive'\nexport const CASE_POSTELATIVE = 'postelative'\nexport const CASE_POSTDIRECTIVE = 'postdirective'\nexport const CASE_POSTESSIVE = 'postessive'\nexport const CASE_POSTPOSITIONAL = 'postpositional'\nexport const CASE_PREPOSITIONAL = 'prepositional'\nexport const CASE_PRIVATIVE = 'privative'\nexport const CASE_PROLATIVE = 'prolative'\nexport const CASE_PROSECUTIVE = 'prosecutive'\nexport const CASE_PROXIMATIVE = 'proximative'\nexport const CASE_SEPARATIVE = 'separative'\nexport const CASE_SOCIATIVE = 'sociative'\nexport const CASE_SUBDIRECTIVE = 'subdirective'\nexport const CASE_SUBESSIVE = 'subessive'\nexport const CASE_SUBELATIVE = 'subelative'\nexport const CASE_SUBLATIVE = 'sublative'\nexport const CASE_SUPERDIRECTIVE = 'superdirective'\nexport const CASE_SUPERESSIVE = 'superessive'\nexport const CASE_SUPERLATIVE = 'superlative'\nexport const CASE_SUPPRESSIVE = 'suppressive'\nexport const CASE_TEMPORAL = 'temporal'\nexport const CASE_TERMINATIVE = 'terminative'\nexport const CASE_TRANSLATIVE = 'translative'\nexport const CASE_VIALIS = 'vialis'\nexport const CASE_VOCATIVE = 'vocative'\nexport const MOOD_ADMIRATIVE = 'admirative'\nexport const MOOD_COHORTATIVE = 'cohortative'\nexport const MOOD_CONDITIONAL = 'conditional'\nexport const MOOD_DECLARATIVE = 'declarative'\nexport const MOOD_DUBITATIVE = 'dubitative'\nexport const MOOD_ENERGETIC = 'energetic'\nexport const MOOD_EVENTIVE = 'eventive'\nexport const MOOD_GENERIC = 'generic'\nexport const MOOD_GERUNDIVE = 'gerundive'\nexport const MOOD_HYPOTHETICAL = 'hypothetical'\nexport const MOOD_IMPERATIVE = 'imperative'\nexport const MOOD_INDICATIVE = 'indicative'\nexport const MOOD_INFERENTIAL = 'inferential'\nexport const MOOD_INFINITIVE = 'infinitive'\nexport const MOOD_INTERROGATIVE = 'interrogative'\nexport const MOOD_JUSSIVE = 'jussive'\nexport const MOOD_NEGATIVE = 'negative'\nexport const MOOD_OPTATIVE = 'optative'\nexport const MOOD_PARTICIPLE = 'participle'\nexport const MOOD_PRESUMPTIVE = 'presumptive'\nexport const MOOD_RENARRATIVE = 'renarrative'\nexport const MOOD_SUBJUNCTIVE = 'subjunctive'\nexport const MOOD_SUPINE = 'supine'\nexport const NUM_SINGULAR = 'singular'\nexport const NUM_PLURAL = 'plural'\nexport const NUM_DUAL = 'dual'\nexport const NUM_TRIAL = 'trial'\nexport const NUM_PAUCAL = 'paucal'\nexport const NUM_SINGULATIVE = 'singulative'\nexport const NUM_COLLECTIVE = 'collective'\nexport const NUM_DISTRIBUTIVE_PLURAL = 'distributive plural'\nexport const NRL_CARDINAL = 'cardinal'\nexport const NRL_ORDINAL = 'ordinal'\nexport const NRL_DISTRIBUTIVE = 'distributive'\nexport const NURL_NUMERAL_ADVERB = 'numeral adverb'\nexport const ORD_1ST = '1st'\nexport const ORD_2ND = '2nd'\nexport const ORD_3RD = '3rd'\nexport const ORD_4TH = '4th'\nexport const ORD_5TH = '5th'\nexport const ORD_6TH = '6th'\nexport const ORD_7TH = '7th'\nexport const ORD_8TH = '8th'\nexport const ORD_9TH = '9th'\nexport const TENSE_AORIST = 'aorist'\nexport const TENSE_FUTURE = 'future'\nexport const TENSE_FUTURE_PERFECT = 'future perfect'\nexport const TENSE_IMPERFECT = 'imperfect'\nexport const TENSE_PAST_ABSOLUTE = 'past absolute'\nexport const TENSE_PERFECT = 'perfect'\nexport const TENSE_PLUPERFECT = 'pluperfect'\nexport const TENSE_PRESENT = 'present'\nexport const VKIND_TO_BE = 'to be'\nexport const VKIND_COMPOUNDS_OF_TO_BE = 'compounds of to be'\nexport const VKIND_TAKING_ABLATIVE = 'taking ablative'\nexport const VKIND_TAKING_DATIVE = 'taking dative'\nexport const VKIND_TAKING_GENITIVE = 'taking genitive'\nexport const VKIND_TRANSITIVE = 'transitive'\nexport const VKIND_INTRANSITIVE = 'intransitive'\nexport const VKIND_IMPERSONAL = 'impersonal'\nexport const VKIND_DEPONENT = 'deponent'\nexport const VKIND_SEMIDEPONENT = 'semideponent'\nexport const VKIND_PERFECT_DEFINITE = 'perfect definite'\nexport const VOICE_ACTIVE = 'active'\nexport const VOICE_PASSIVE = 'passive'\nexport const VOICE_MEDIOPASSIVE = 'mediopassive'\nexport const VOICE_IMPERSONAL_PASSIVE = 'impersonal passive'\nexport const VOICE_MIDDLE = 'middle'\nexport const VOICE_ANTIPASSIVE = 'antipassive'\nexport const VOICE_REFLEXIVE = 'reflexive'\nexport const VOICE_RECIPROCAL = 'reciprocal'\nexport const VOICE_CAUSATIVE = 'causative'\nexport const VOICE_ADJUTATIVE = 'adjutative'\nexport const VOICE_APPLICATIVE = 'applicative'\nexport const VOICE_CIRCUMSTANTIAL = 'circumstantial'\nexport const VOICE_DEPONENT = 'deponent'\nexport const TYPE_IRREGULAR = 'irregular'\nexport const TYPE_REGULAR = 'regular'\n// Classes\nexport const CLASS_PERSONAL = 'personal'\nexport const CLASS_REFLEXIVE = 'reflexive'\nexport const CLASS_POSSESSIVE = 'possessive'\nexport const CLASS_DEMONSTRATIVE = 'demonstrative'\nexport const CLASS_RELATIVE = 'relative'\nexport const CLASS_INTERROGATIVE = 'interrogative'\nexport const CLASS_GENERAL_RELATIVE = 'general relative'\nexport const CLASS_INDEFINITE = 'indefinite'\nexport const CLASS_INTENSIVE = 'intensive'\nexport const CLASS_RECIPROCAL = 'reciprocal'\n/* eslit-enable no-unused-vars */\n","import Definition from './definition'\n\nexport default class DefinitionSet {\n constructor (lemmaWord, languageID) {\n this.lemmaWord = lemmaWord\n this.languageID = languageID\n\n this.shortDefs = []\n this.fullDefs = []\n }\n\n /**\n * A function that is used to instantiate a DefinitionSet object from a JSON object.\n * @param {Object} jsonObject - A JSON object representing DefinitionSet data.\n * @return {DefinitionSet} A DefinitionSet object populated with data from JSON object.\n */\n static readObject (jsonObject) {\n let definitionSet = new DefinitionSet(jsonObject.lemmaWord, jsonObject.languageID)\n\n for (let shortDef of jsonObject.shortDefs) {\n definitionSet.shortDefs.push(Definition.readObject(shortDef))\n }\n for (let fullDef of jsonObject.fullDefs) {\n definitionSet.fullDefs.push(Definition.readObject(fullDef))\n }\n\n return definitionSet\n }\n\n /**\n * Check to see if the DefinitionSet is empty\n * @return {boolean} true if empty false if there is at least one definition\n */\n isEmpty () {\n return this.shortDefs.length === 0 && this.fullDefs.length === 0\n }\n\n /**\n * Appends one or more definitions to a list of short definitions.\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @return {Definition[]} A list of short definitions this object has.\n */\n appendShortDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.shortDefs = this.shortDefs.concat(definitions)\n }\n return this.shortDefs\n }\n\n /**\n * clear accumulated short definitions\n */\n clearShortDefs () {\n this.shortDefs = []\n }\n\n /**\n * Appends one or more definitions to a list of full definitions.\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @return {Definition[]} A list of full definitions this object has.\n */\n appendFullDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.fullDefs = this.fullDefs.concat(definitions)\n }\n return this.fullDefs\n }\n\n /**\n * clear accumulated full definitions\n */\n clearFullDefs () {\n this.fullDefs = []\n }\n}\n","class Definition {\n constructor (text, language, format, lemmaText) {\n this.text = text\n this.language = language\n this.format = format\n this.lemmaText = lemmaText\n }\n\n static readObject (jsonObject) {\n return new Definition(jsonObject.text, jsonObject.language, jsonObject.format, jsonObject.lemmaText)\n }\n}\nexport default Definition\n","'use strict'\nimport * as Constants from './constants.js'\nimport Definition from './definition.js'\nimport DefinitionSet from './definition-set'\nimport Feature from './feature.js'\nimport GrmFeature from './grm-feature.js'\nimport FeatureType from './feature_type.js'\nimport FeatureList from './feature_list.js'\nimport FeatureImporter from './feature_importer.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Homonym from './homonym.js'\nimport Lexeme from './lexeme.js'\nimport Lemma from './lemma.js'\nimport Inflection from './inflection.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport ResourceProvider from './resource_provider.js'\n\nimport Translation from './translation.js'\n\nexport {\n Constants,\n Definition,\n DefinitionSet,\n Feature,\n GrmFeature,\n FeatureType,\n FeatureList,\n FeatureImporter,\n Inflection,\n LanguageModelFactory,\n Homonym,\n Lexeme,\n Lemma,\n LatinLanguageModel,\n GreekLanguageModel,\n ArabicLanguageModel,\n PersianLanguageModel,\n ResourceProvider,\n\n Translation }\n","import LanguageModelFactory from './language_model_factory.js'\nimport FeatureImporter from './feature_importer.js'\nimport * as i18n from './i18n.js'\n\n/**\n * A grammatical feature object, that can replace both Feature and FeatureType objects.\n */\nexport default class Feature {\n /**\n *\n * @param {string} type - A type of the feature, allowed values are specified in 'type' getter.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n *\n * If a single value with no sort order is provided, data format will be:\n * value\n * This value will be assigned a default sort order.\n *\n * If a single value with sort order is provided, data format will be:\n * [[value, sortOrder]]\n *\n * If multiple values without sort order are provided, data format will be:\n * [value1, value2, value3, ...]\n * Items will be assigned a sort order according to their order in an array, starting from one.\n *\n * If multiple values with sort order are provided, data format will be:\n * [[value1, sortOrder1], [value2, sortOrder2], [value3, sortOrder3], ...]\n * If a sort order is omitted anywhere, it will be set to a default sort order.\n *\n * Each value of a feature has its `sortOrder` property. This value is used to soft values of a feature\n * between themselves. Feature object has a `sortOrder` property of its own, too. It is used\n * to compare two Feature objects between themselves.\n *\n * @param {symbol} languageID - A language ID of a feature\n * @param {number} sortOrder - A sort order of a feature when multiple features are compared.\n * @param allowedValues - If feature has a restricted set of allowed values, here will be a list of those\n * values. An order of those values can define a sort order.\n */\n constructor (type, data, languageID, sortOrder = 1, allowedValues = []) {\n if (!Feature.isAllowedType(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!data) {\n throw new Error('Feature should have a non-empty value(s).')\n }\n if (!languageID) {\n throw new Error('No language ID is provided')\n }\n\n this.type = type\n this.languageID = languageID\n this.sortOrder = sortOrder\n this.allowedValues = allowedValues\n\n // `_data` is an array\n this._data = Feature.dataValuesFromInput(data)\n this.sort()\n }\n\n static dataValuesFromInput (data) {\n let normalized\n if (!Array.isArray(data)) {\n // Single value with no sort order\n normalized = [[data, this.defaultSortOrder]]\n } else if (!Array.isArray(data[0])) {\n // Multiple values without any sort order, default sort order will be used\n // we reverse because sortOrder is numeric descending (i.e. 2 is before 1)\n normalized = data.map((v, i) => [v, data.length - i])\n } else {\n // Value has all the data, including a sort order\n normalized = data\n }\n return normalized.map(d => { return { value: d[0], sortOrder: Number.parseInt(d[1]) } })\n }\n\n /**\n *\n * @param featureData\n */\n static newFromFtr (featureData) {\n\n }\n\n static get types () {\n return {\n /**\n * @deprecated : Use `fullForm` where appropriate instead\n */\n word: 'word',\n fullForm: 'full form',\n hdwd: 'headword',\n part: 'part of speech', // Part of speech\n number: 'number',\n 'case': 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n 'class': 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var' // variance?\n }\n }\n\n static isAllowedType (value) {\n return Object.values(this.types).includes(`${value}`)\n }\n\n static get defaultSortOrder () {\n return 1\n }\n\n static get joinSeparator () {\n return ' '\n }\n\n static get defaultImporterName () {\n return 'default'\n }\n\n /**\n * Test to see if this feature allows unrestricted values.\n * @returns {boolean} true if unrestricted false if not.\n */\n get allowsUnrestrictedValues () {\n /*\n If `allowedValues` array is empty then there are no value restrictions\n */\n return this.allowedValues.length === 0\n }\n\n /**\n * Defines a sort order of feature values. Values are sorted according to their sort order\n * (a number starting from one). If several values have the same sort order, they will be\n * sorted alphabetically according to their values.\n * Sort order is deterministic.\n */\n sort () {\n this._data.sort((a, b) => a.sortOrder !== b.sortOrder ? b.sortOrder - a.sortOrder : a.value.localeCompare(b.value))\n }\n\n /**\n * Compares a feature's values to another feature's values for sorting\n * @param {Feature} otherFeature the feature to compare this feature's values to\n * @return {integer} < 1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second\n */\n compareTo (otherFeature) {\n // the data values are sorted upon construction and insertion so we only should need to look at the first values\n // feature sortOrders are descending (i.e. 5 sorts higher than 1)\n if (otherFeature) {\n return otherFeature._data[0].sortOrder - this._data[0].sortOrder\n } else {\n // if the other feature isn't defined, this one sorts first\n return -1\n }\n }\n\n get items () {\n return this._data\n }\n\n /**\n * Returns a single value string. If feature has a single value, this value will be returned.\n * If it has multiple values, those values will be concatenated with a default separator and\n * returned in a single string. Values composing this string are sorted according\n * to each value's sort order.\n * @return {string} A single value string.\n */\n get value () {\n return this.values.join(this.constructor.joinSeparator)\n }\n\n /**\n * Returns an array of string values of a feature, sorted according to each item's sort order.\n * If a feature contains a single feature, an array with one value will be returned.\n * @return {string[]} An array of string values.\n */\n get values () {\n return this._data.map(v => v.value)\n }\n\n /**\n * Retrieves a value object by name. Can be used to update a value object directly.\n * @param {string} featureVale - A feature value of an object to retrieve.\n */\n getValue (featureVale) {\n return this._data.find(v => v.value === featureVale)\n }\n\n /**\n * Returns a number of feature values.\n * @retrun {number] A quantity of feature values\n */\n get valQty () {\n return this._data.length\n }\n\n get isEmpty () {\n return this.valQty === 0\n }\n\n get isSingle () {\n return this.valQty === 1\n }\n\n get isMultiple () {\n return this.valQty > 1\n }\n\n /**\n * A string representation of a feature.\n * @return {string}\n */\n toString () {\n return this.value\n }\n\n /**\n * Examines the feature for a specific value.\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValue (value) {\n return this.values.includes(value)\n }\n\n /**\n * Checks if this feature has all value from an array.\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValues (values) {\n let hasValues = true\n for (let value of values) {\n hasValues = hasValues && this.hasValue(value)\n }\n return hasValues\n }\n\n /**\n * Checks if this feature has some value from an array.\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasSomeValues (values) {\n let hasValues = false\n for (let value of values) {\n hasValues = hasValues || this.hasValue(value)\n }\n return hasValues\n }\n\n get valuesUnrestricted () {\n return this.allowedValues.length === 0\n }\n\n /**\n * Two features are considered fully equal if they are of the same type, have the same language,\n * and the same set of feature values in the same order.\n * @param {Feature} feature - A GrmFtr object this feature should be compared with.\n * @return {boolean} True if features are equal, false otherwise.\n */\n isEqual (feature) {\n return this.type === feature.type &&\n LanguageModelFactory.compareLanguages(this.languageID, feature.languageID) &&\n this.value === feature.value\n }\n\n /**\n * Adds a single new value to the existing feature object.\n * This function is chainable.\n * @param {string} value - A feature value.\n * @param {number} sortOrder - A sort order.\n * @return {Feature} - Self reference for chaining.\n */\n addValue (value, sortOrder = this.constructor.defaultSortOrder) {\n if (!this.hasValue(value)) {\n this._data.push({\n value: value,\n sortOrder: sortOrder\n })\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n console.warn(`Value \"${value}\" already exists. If you want to change it, use \"getValue\" to access it directly.`)\n }\n return this\n }\n\n /**\n * Adds multiple new values to the existing feature object.\n * This function is chainable.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n * @return {Feature} - Self reference for chaining.\n */\n addValues (data) {\n let normalizedData = this.constructor.dataValuesFromInput(data)\n let values = normalizedData.map(v => v.value)\n if (!this.hasSomeValues(values)) {\n this._data = this._data.concat(normalizedData)\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n console.warn(`One or several values from \"${values}\" already exist. If you want to change it, use \"getValue\" to access a value directly.`)\n }\n return this\n }\n\n /**\n * Removes a single value from the existing feature object.\n * @param value\n */\n removeValue (value) {\n // TODO: Do we need it?\n console.warn(`This feature is not implemented yet`)\n }\n\n /**\n * Creates a new single value Feature object of the same type and same language,\n * but with a different feature value.\n * This can be used when one feature defines a type and it is necessary\n * to create other items of the same type.\n * @param {string} value - A value of a feature.\n * @param {number} sortOrder.\n * @return {Feature} A new Ftr object.\n */\n createFeature (value, sortOrder = this.constructor.defaultSortOrder) {\n // TODO: Add a check of if the value exists in a source Feature object\n return new Feature(this.type, [[value, sortOrder]], this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates a multiple value Feature object of the same type and same language,\n * but with a different feature values.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations,\n * formatted according to rules described in a Ftr constructor.\n * @return {Feature} A new Ftr object.\n */\n createFeatures (data) {\n return new Feature(this.type, data, this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates an array of Feature objects where each Feature object is matching one feature value\n * form the values of this object.\n * Useful when the current objects is a type feature and it is necessary to create an array\n * of Feature objects for the type from it.\n * @return {Feature[]} - An array of Feature objects. Each object represents one feature value\n * from the current object.\n */\n get ownFeatures () {\n return this.values.map(v => new Feature(this.type, v, this.languageID, 1, this.allowedValues))\n }\n\n /**\n * Create a copy of the feature object.\n */\n getCopy () {\n let values = this._data.map(item => [item.value, item.sortOrder])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues.slice())\n }\n\n /**\n * A locale-specific abbreviation for a feature's values.\n * @return {string[]}\n */\n toLocaleStringAbbr (lang = 'en') {\n return this.values.map(v => i18n.i18n[lang][v] ? i18n.i18n[lang][v].abbr : v).join(this.constructor.joinSeparator)\n }\n\n /**\n * Adds an importer to the internal list.\n * @param {string} name - A name of an importer.\n * @param {FeatureImporter} importer - A `FeatureImporter` object.\n */\n addImporter (importer = new FeatureImporter(), name = this.constructor.defaultImporterName) {\n if (!this.importers) {\n this.importers = new Map()\n }\n this.importers.set(name, importer)\n return importer\n }\n\n getImporter (name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n return this.importers.get(name)\n }\n\n /**\n * Adds feature values from the imported values.\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @return {Feature} - A new Ftr object.\n */\n addFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n foreignData = this.constructor.dataValuesFromInput(foreignData)\n this._data.push(...foreignData.map(fv => { return { value: importer.get(fv.value), sortOrder: fv.sortOrder } }))\n this.sort()\n return this\n }\n\n /**\n * Creates a new feature of the same type and with the same language from the imported values.\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @return {Feature} - A new Ftr object.\n */\n createFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n if (!Array.isArray(foreignData)) {\n foreignData = [foreignData]\n }\n let values = foreignData.map(fv => importer.get(fv))\n /*\n Some values may be mapped into multiple values. For them an importer will return an array of values instead of a single value.\n The values will be a multidimensional array that will require flattening.\n */\n values = values.reduce((acc, cv) => acc.concat(cv), [])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues)\n }\n}\n","class FeatureImporter {\n /**\n * @param defaults\n * @param {boolean} returnUnknown - If true, and a source value is not found in the importer,\n * a source value will be returned without any change (a passthrough). If false, an Error\n * will be thrown for unknown source values.\n * @return {FeatureImporter}\n */\n constructor (defaults = [], returnUnknown = false) {\n this.hash = {}\n for (let value of defaults) {\n this.map(value, value)\n }\n this.returnUnknown = returnUnknown\n return this\n }\n\n /**\n * Sets mapping between external imported value and one or more library standard values. If an importedValue\n * is already in a hash table, old libraryValue will be overwritten with the new one.\n * @param {string} importedValue - External value\n * @param {Object | Object[] | string | string[]} libraryValue - Library standard value\n */\n map (importedValue, libraryValue) {\n if (!importedValue) {\n throw new Error('Imported value should not be empty.')\n }\n\n if (!libraryValue) {\n throw new Error('Library value should not be empty.')\n }\n\n this.hash[importedValue] = libraryValue\n return this\n }\n\n /**\n * Checks if value is in a map.\n * @param {string} importedValue - A value to test.\n * @returns {boolean} - Tru if value is in a map, false otherwise.\n */\n has (importedValue) {\n return this.hash.hasOwnProperty(importedValue)\n }\n\n /**\n * Returns one or more library standard values that match an external value\n * @param {string} sourceValue - External value\n * @returns {Object | string} One or more of library standard values\n */\n get (sourceValue) {\n if (this.has(sourceValue)) {\n return this.hash[sourceValue]\n } else if (this.returnUnknown) {\n return sourceValue\n } else {\n throw new Error('A value \"' + sourceValue + '\" is not found in the importer.')\n }\n }\n}\nexport default FeatureImporter\n","/**\n * A list of grammatical features that characterizes a language unit. Has some additional service methods,\n * compared with standard storage objects.\n */\nclass FeatureList {\n /**\n * Initializes a feature list.\n * @param {Feature[]} features - Features that build the list (optional, can be set later).\n */\n constructor (features = []) {\n this._features = []\n this._types = {}\n this.add(features)\n }\n\n add (features) {\n if (!features || !Array.isArray(features)) {\n throw new Error('Features must be defined and must come in an array.')\n }\n\n for (let feature of features) {\n this._features.push(feature)\n this._types[feature.type] = feature\n }\n }\n\n /**\n * Returns an array of grouping features.\n * @returns {FeatureType[]} - An array of grouping features.\n */\n get items () {\n return this._features\n }\n\n forEach (callback) {\n this._features.forEach(callback)\n }\n\n /**\n * Returns a feature of a particular type. If such feature does not exist in a list, returns undefined.\n * @param {string} type - Feature type as defined in `types` object.\n * @return {FeatureType | undefined} A feature if a particular type if contains it. Undefined otherwise.\n */\n ofType (type) {\n if (this.hasType(type)) {\n return this._types[type]\n }\n }\n\n /**\n * Checks whether a feature list has a feature of a specific type.\n * @param {string} type - Feature type as defined in `types` object.\n * @return {boolean} Whether a feature list has a feature of a particular type.\n */\n hasType (type) {\n return this._types.hasOwnProperty(type)\n }\n}\nexport default FeatureList\n","import Feature from './feature.js'\nimport FeatureImporter from './feature_importer.js'\nimport LMF from './language_model_factory'\n\n/**\n * @deprecated Use Feature instead\n * Definition class for a (grammatical) feature. Stores type information and (optionally) all possible values of the feature.\n * It serves as a feature generator. If list of possible values is provided, it can generate a Feature object\n * each time a property that corresponds to a feature value is accessed. If no list of possible values provided,\n * a Feature object can be generated with get(value) method.\n *\n * An order of values determines a default sort and grouping order. If two values should have the same order,\n * they should be grouped within an array: value1, [value2, value3], value4. Here 'value2' and 'value3' have\n * the same priority for sorting and grouping.\n */\nclass FeatureType {\n // TODO: value checking\n /**\n * Creates and initializes a Feature Type object.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string[] | string[][]} values - A list of allowed values for this feature type.\n * If an empty array is provided, there will be no\n * allowed values as well as no ordering (can be used for items that do not need or have a simple order,\n * such as footnotes).\n * @param {String | Symbol} language - A language of a feature type.\n */\n constructor (type, values, language) {\n if (!values || !Array.isArray(values)) {\n throw new Error('Values should be an array (or an empty array) of values.')\n }\n if (!language) {\n throw new Error('FeatureType constructor requires a language')\n }\n\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n\n /*\n This is a sort order index for a grammatical feature values. It is determined by the order of values in\n a 'values' array.\n */\n this._orderIndex = []\n this._orderLookup = {}\n\n for (const [index, value] of values.entries()) {\n this._orderIndex.push(value)\n if (Array.isArray(value)) {\n for (let element of value) {\n this[element] = new Feature(this.type, element, this.languageID)\n this._orderLookup[element] = index\n }\n } else {\n this[value] = new Feature(this.type, value, this.languageID)\n this._orderLookup[value] = index\n }\n }\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n /**\n * test to see if this FeatureType allows unrestricted values\n * @returns {boolean} true if unrestricted false if not\n */\n hasUnrestrictedValue () {\n return this.orderedValues.length === 1 && this.orderedValues[0] === FeatureType.UNRESTRICTED_VALUE\n }\n\n /**\n * Return a Feature with an arbitrary value. This value would not be necessarily present among FeatureType values.\n * This can be especially useful for features that do not set: a list of predefined values, such as footnotes.\n * @param value\n * @param {int} sortOrder\n * @returns {Feature}\n */\n get (value, sortOrder = 1) {\n if (value) {\n return new Feature(this.type, [[value, sortOrder]], this.languageID)\n } else {\n throw new Error('A non-empty value should be provided.')\n }\n }\n\n /**\n *\n * @param {string[][]} data - An array of value arrays as: [[value1, sortOrder1], [value2, sortOrder2]]\n * @return {Feature}\n */\n getValues (data) {\n return new Feature(this.type, data, this.languageID)\n }\n\n getFromImporter (importerName, value) {\n let mapped\n try {\n mapped = this.importer[importerName].get(value)\n } catch (e) {\n // quietly catch not found and replace with default\n mapped = this.get(value)\n }\n return mapped\n }\n\n /**\n * Creates and returns a new importer with a specific name. If an importer with this name already exists,\n * an existing Importer object will be returned.\n * @param {string} name - A name of an importer object\n * @returns {Importer} A new or existing Importer object that matches a name provided\n */\n addImporter (name) {\n if (!name) {\n throw new Error('Importer should have a non-empty name.')\n }\n this.importer = this.importer || {}\n this.importer[name] = this.importer[name] || new FeatureImporter()\n return this.importer[name]\n }\n\n /**\n * Return copies of all feature values as Feature objects in a sorted array, according to feature type's sort order.\n * For a similar function that returns strings instead of Feature objects see orderedValues().\n * @returns {Feature[] | Feature[][]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of Feature objects will be returned instead of a single Feature object, as for single feature values.\n */\n get orderedFeatures () {\n return this.orderedValues.map((value) => new Feature(this.type, value, this.languageID))\n }\n\n /**\n * Return all feature values as strings in a sorted array, according to feature type's sort order.\n * This is a main method that specifies a sort order of the feature type. orderedFeatures() relies\n * on this method in providing a sorted array of feature values. If you want to create\n * a custom sort order for a particular feature type that will depend on some options that are not type-related,\n * create a wrapper around this function providing it with options arguments so it will be able to decide\n * in what order those features will be based on those arguments.\n * For a similar function that returns Feature objects instead of strings see orderedValues().\n * @returns {string[]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of strings will be returned instead of a single strings, as for single feature values.\n */\n get orderedValues () {\n return this._orderIndex\n }\n\n /**\n * Returns a lookup table for type values as:\n * {value1: order1, value2: order2}, where order is a sort order of an item. If two items have the same sort order,\n * their order value will be the same.\n * @returns {object}\n */\n get orderLookup () {\n return this._orderLookup\n }\n\n /**\n * Sets an order of grammatical feature values for a grammatical feature. Used mostly for sorting, filtering,\n * and displaying.\n *\n * @param {Feature[] | Feature[][]} values - a list of grammatical features that specify their order for\n * sorting and filtering. Some features can be grouped as [[genders.masculine, genders.feminine], LibLatin.genders.neuter].\n * It means that genders.masculine and genders.feminine belong to the same group. They will have the same index\n * and will be stored inside an _orderIndex as an array. genders.masculine and genders.feminine will be grouped together\n * during filtering and will be in the same bin during sorting.\n *\n */\n set order (values) {\n if (!values || (Array.isArray(values) && values.length === 0)) {\n throw new Error('A non-empty list of values should be provided.')\n }\n\n // If a single value is provided, convert it into an array\n if (!Array.isArray(values)) {\n values = [values]\n }\n\n for (let value of values) {\n if (Array.isArray(value)) {\n for (let element of value) {\n if (!this.hasOwnProperty(element.value)) {\n throw new Error('Trying to order an element with \"' + element.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (element.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + element.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${element.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n } else {\n if (!this.hasOwnProperty(value.value)) {\n throw new Error('Trying to order an element with \"' + value.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (value.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + value.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(value.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${value.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n }\n\n // Erase whatever sort order was set previously\n this._orderLookup = {}\n this._orderIndex = []\n\n // Define a new sort order\n for (const [index, element] of values.entries()) {\n if (Array.isArray(element)) {\n // If it is an array, all values should have the same order\n let elements = []\n for (const subElement of element) {\n this._orderLookup[subElement.value] = index\n elements.push(subElement.value)\n }\n this._orderIndex[index] = elements\n } else {\n // If is a single value\n this._orderLookup[element.value] = index\n this._orderIndex[index] = element.value\n }\n }\n }\n}\nFeatureType.UNRESTRICTED_VALUE = Symbol('unrestricted')\nexport default FeatureType\n","import LanguageModel from './language_model.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class GreekLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_GREEK }\n static get languageCode () { return Constants.STR_LANG_CODE_GRC }\n static get languageCodes () { return [Constants.STR_LANG_CODE_GRC] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_GENERAL_RELATIVE,\n Constants.CLASS_INDEFINITE,\n Constants.CLASS_INTENSIVE,\n Constants.CLASS_INTERROGATIVE,\n Constants.CLASS_PERSONAL,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_RECIPROCAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_RELATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL,\n Constants.NUM_DUAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT,\n Constants.TENSE_AORIST\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_PASSIVE,\n Constants.VOICE_ACTIVE,\n Constants.VOICE_MEDIOPASSIVE,\n Constants.VOICE_MIDDLE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_OPTATIVE,\n Constants.MOOD_IMPERATIVE\n ]\n ],\n [\n // TODO full list of greek dialects\n Feature.types.dialect,\n [\n 'attic',\n 'epic',\n 'doric'\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * @override LanguageModel#grammarFeatures\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.voice]\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {string} word the source word\n * @returns {string} the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type string\n */\n static normalizeWord (word) {\n // we normalize greek to NFC - Normalization Form Canonical Composition\n if (word) {\n return word.normalize('NFC')\n } else {\n return word\n }\n }\n\n /**\n * @override LanguageModel#alternateWordEncodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // the original alpheios code used the following normalizations\n // 1. When looking up a lemma\n // stripped vowel length\n // stripped caps\n // then if failed, tried again with out these\n // 2. when adding to a word list\n // precombined unicode (vowel length/diacritics preserved)\n // 2. When looking up a verb in the verb paradigm tables\n // it set e_normalize to false, otherwise it was true...\n // make sure it's normalized to NFC and in lower case\n let normalized = GreekLanguageModel.normalizeWord(word).toLocaleLowerCase()\n let strippedVowelLength = normalized.replace(\n /[\\u{1FB0}\\u{1FB1}]/ug, '\\u{03B1}').replace(\n /[\\u{1FB8}\\u{1FB9}]/ug, '\\u{0391}').replace(\n /[\\u{1FD0}\\u{1FD1}]/ug, '\\u{03B9}').replace(\n /[\\u{1FD8}\\u{1FD9}]/ug, '\\u{0399}').replace(\n /[\\u{1FE0}\\u{1FE1}]/ug, '\\u{03C5}').replace(\n /[\\u{1FE8}\\u{1FE9}]/ug, '\\u{03A5}').replace(\n /[\\u{00AF}\\u{0304}\\u{0306}]/ug, '')\n let strippedDiaeresis = normalized.replace(\n /\\u{0390}/ug, '\\u{03AF}').replace(\n /\\u{03AA}/ug, '\\u{0399}').replace(\n /\\u{03AB}/ug, '\\u{03A5}').replace(\n /\\u{03B0}/ug, '\\u{03CD}').replace(\n /\\u{03CA}/ug, '\\u{03B9}').replace(\n /\\u{03CB}/ug, '\\u{03C5}').replace(\n /\\u{1FD2}/ug, '\\u{1F76}').replace(\n /\\u{1FD3}/ug, '\\u{1F77}').replace(\n /\\u{1FD7}/ug, '\\u{1FD6}').replace(\n /\\u{1FE2}/ug, '\\u{1F7A}').replace(\n /\\u{1FE3}/ug, '\\u{1F7B}').replace(\n /\\u{1FE7}/ug, '\\u{1FE6}').replace(\n /\\u{1FC1}/ug, '\\u{1FC0}').replace(\n /\\u{1FED}/ug, '\\u{1FEF}').replace(\n /\\u{1FEE}/ug, '\\u{1FFD}').replace(\n /[\\u{00A8}\\u{0308}]/ug, '')\n if (encoding === 'strippedDiaeresis') {\n return [strippedDiaeresis]\n } else {\n return [strippedVowelLength]\n }\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return '.,;:!?\\'\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n * @param {Inflection} inflection - An inflection object\n * @return {Object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n let constraints = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n let formBasedList = [Constants.POFS_PRONOUN, Constants.POFS_NUMERAL, Constants.POFS_ARTICLE]\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if (formBasedList.includes(inflection[Feature.types.part].value)) {\n constraints.fullFormBased = true\n } else {\n constraints.suffixBased = true\n }\n } else {\n console.warn(`Unable to set grammar: part of speech data is missing or is incorrect`, inflection[Feature.types.part])\n }\n\n constraints.pronounClassRequired =\n LanguageModelFactory.compareLanguages(GreekLanguageModel.languageID, inflection.languageID) &&\n inflection.hasOwnProperty(Feature.types.part) &&\n inflection[Feature.types.part].value === Constants.POFS_PRONOUN\n\n return constraints\n }\n\n /**\n * Determines a class of a given word (pronoun) by finding a matching word entry(ies)\n * in a pronoun source info (`forms`) and getting a single or multiple classes of those entries.\n * Some morphological analyzers provide class information that is unreliable or do not\n * provide class information at all. However, class information is essential in\n * deciding in what table should pronouns be grouped. For this, we have to\n * determine pronoun classes using this method.\n * @param {Form[]} forms - An array of known forms of pronouns.\n * @param {string} word - A word we need to find a matching class for.\n * @param {boolean} normalize - Whether normalized forms of words shall be used for comparison.\n * @return {Feature} Matching classes found within a Feature objects. If no matching classes found,\n * returns undefined.\n */\n static getPronounClasses (forms, word, normalize = true) {\n let matchingValues = new Set() // Will eliminate duplicated values\n let matchingForms = forms.filter(\n form => {\n let match = false\n if (form.value) {\n match = normalize\n ? GreekLanguageModel.normalizeWord(form.value) === GreekLanguageModel.normalizeWord(word)\n : form.value === word\n }\n return match\n }\n )\n for (const matchingForm of matchingForms) {\n if (matchingForm.features.hasOwnProperty(Feature.types.grmClass)) {\n for (const value of matchingForm.features[Feature.types.grmClass].values) {\n matchingValues.add(value)\n }\n }\n }\n if (matchingValues.size > 0) {\n return new Feature(Feature.types.grmClass, Array.from(matchingValues), GreekLanguageModel.languageID)\n }\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport * as i18n from './i18n.js'\n\n/**\n * Wrapper class for a (grammatical, usually) feature, such as part of speech or declension. Keeps both value and type information.\n */\nclass GrmFeature {\n /**\n * @deprecated Use Feature instead\n * Initializes a Feature object\n * @param {string | string[]} value - A single feature value or, if this feature could have multiple\n * values, an array of values.\n * Multiple values do not allow to use a sort order. Because of this, it's better to use\n * array of multiple Feature objects with single value each instead of a single Feature object\n * with multiple values.\n * Multiple values are left for backward compatibility only. Please do not use them as they\n * will be removed in the future.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string | symbol} language - A language of a feature, allowed values are specified in 'languages' object.\n * @param {int} sortOrder - an integer used for sorting\n */\n constructor (value, type, language, sortOrder = 1) {\n if (!GrmFeature.types.isAllowed(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!value) {\n throw new Error('Feature should have a non-empty value.')\n }\n if (!type) {\n throw new Error('Feature should have a non-empty type.')\n }\n if (!language) {\n throw new Error('Feature constructor requires a language')\n }\n this.value = value\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n this.sortOrder = sortOrder\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n isEqual (feature) {\n if (Array.isArray(feature.value)) {\n // `feature` is a single object with multiple `value` properties. This feature will be sunset\n // as it does not allow to use sort order on Feature objects.\n if (!Array.isArray(this.value) || this.value.length !== feature.value.length) {\n return false\n }\n let equal = this.type === feature.type && LMF.compareLanguages(this.languageID, feature.languageID)\n equal = equal && this.value.every(function (element, index) {\n return element === feature.value[index]\n })\n return equal\n } else {\n return LMF.compareLanguages(this.languageID, feature.languageID) && this.type === feature.type && this.value === feature.value\n }\n }\n\n isSubsetof (features) {\n if (!Array.isArray(features)) {\n features = [features] // If `features` is a single value, convert it to an array (a more general case)\n }\n // `feature` is an array of feature objects with (possibly) each having a single feature value.\n let languageID = features[0].languageID // Assume all Feature objects have the same language ID\n let type = features[0].type // Assume all Feature objects have the same type\n let values = features.map(f => f.value)\n if (LMF.compareLanguages(this.languageID, languageID) && this.type === type && values.includes(this.value)) {\n return true\n }\n return false\n }\n\n /**\n * examine the feature for a specific value\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values\n */\n hasValue (value) {\n if (Array.isArray(this.value)) {\n return this.value.includes(value)\n } else {\n return this.value === value\n }\n }\n\n /**\n * string representation of a feature\n * @return {string}\n */\n toString () {\n if (Array.isArray(this.value)) {\n return this.value.join(',')\n } else {\n return this.value\n }\n }\n\n /**\n * a locale-specific abbreviation for a feature's values\n * @return {string}\n */\n toLocaleStringAbbr (lang = 'en') {\n if (Array.isArray(this.value)) {\n return this.value.map((v) => this.toLocaleStringAbbr(v, lang))\n } else {\n return i18n.i18n[lang][this.value].abbr\n }\n }\n\n static toFeature (sourceFeature) {\n if (Array.isArray(sourceFeature)) {\n if (!(sourceFeature[0] instanceof Feature)) {\n const type = sourceFeature[0].type\n const languageID = sourceFeature[0].languageID\n const values = sourceFeature.map(v => v.value)\n return new Feature(type, values, languageID)\n }\n } else {\n if (!(sourceFeature instanceof Feature)) {\n return new Feature(sourceFeature.type, sourceFeature.value, sourceFeature.languageID)\n }\n }\n return sourceFeature\n }\n}\n// Should have no spaces in values in order to be used in HTML templates\nGrmFeature.types = {\n word: 'word',\n part: 'part of speech', // Part of speech\n number: 'number',\n 'case': 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n 'class': 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var', // variance?\n isAllowed (value) {\n let v = `${value}`\n return Object.values(this).includes(v)\n }\n}\nexport default GrmFeature\n","import LMF from './language_model_factory'\r\nimport Lexeme from './lexeme.js'\r\nimport Lemma from './lemma.js'\r\n\r\nclass Homonym {\r\n /**\r\n * Initializes a Homonym object.\r\n * @param {Lexeme[]} lexemes - An array of Lexeme objects.\r\n * @param {string} form - the form which produces the homonyms\r\n */\r\n constructor (lexemes, form) {\r\n if (!lexemes || (Array.isArray(lexemes) && lexemes.length === 0)) {\r\n throw new Error('Lexemes data should not be empty.')\r\n }\r\n\r\n if (!Array.isArray(lexemes)) {\r\n throw new Error('Lexeme data should be provided in an array.')\r\n }\r\n\r\n for (let lexeme of lexemes) {\r\n if (!(lexeme instanceof Lexeme)) {\r\n throw new Error('All lexeme data should be of Lexeme object type.')\r\n }\r\n }\r\n\r\n this.lexemes = lexemes\r\n this.targetWord = form\r\n }\r\n\r\n /**\r\n * Creates a simple form of inflection with one lexeme and zero or more inflections\r\n * attached to it. The lexeme will have lemma whose `word` will be set to\r\n * a homonym's target word.\r\n * @param {string} word - A word that will populate homonym's `targetWord` prop and lemma `word` one.\r\n * @param {symbol} languageID - A language identificator as defined in Constants.LANG_XXX.\r\n * @param {Inflection[]} inflections - Zero or more inflection objects that will be attached to the lexeme\r\n * @return {Homonym} A newly created homonym object.\r\n */\r\n static createSimpleForm (word, languageID, inflections = []) {\r\n let lemma = new Lemma(word, languageID)\r\n let lexeme = new Lexeme(lemma, inflections)\r\n return new Homonym([lexeme], word)\r\n }\r\n\r\n static readObject (jsonObject) {\r\n let lexemes = []\r\n if (jsonObject.lexemes) {\r\n for (let lexeme of jsonObject.lexemes) {\r\n lexemes.push(Lexeme.readObject(lexeme))\r\n }\r\n }\r\n let homonym = new Homonym(lexemes)\r\n if (jsonObject.targetWord) {\r\n homonym.targetWord = jsonObject.targetWord\r\n }\r\n return homonym\r\n }\r\n\r\n /**\r\n * Returns a language code of a homonym (ISO 639-3).\r\n * Homonym does not have a language property, only lemmas and inflections do. We assume that all lemmas\r\n * and inflections within the same homonym will have the same language, and we can determine a language\r\n * by using language property of the first lemma. We chan change this logic in the future if we'll need to.\r\n * @returns {string} A language code, as defined in the `languages` object.\r\n */\r\n get language () {\r\n console.warn(`Please use languageID instead`)\r\n return LMF.getLanguageCodeFromId(this.languageID)\r\n }\r\n\r\n /**\r\n * Returns a language ID of a homonym.\r\n * Homonym does not have a languageID property, only lemmas and inflections do. We assume that all lemmas\r\n * and inflections within the same homonym will have the same language, and we can determine a language\r\n * by using languageID property of the first lemma. We chan change this logic in the future if we'll need to.\r\n * @returns {Symbol} A language ID, as defined in the `LANG_` constants.\r\n */\r\n get languageID () {\r\n if (this.lexemes && this.lexemes[0] && this.lexemes[0].lemma && this.lexemes[0].lemma.languageID) {\r\n return this.lexemes[0].lemma.languageID\r\n } else {\r\n throw new Error('Homonym has not been initialized properly. Unable to obtain language ID information.')\r\n }\r\n }\r\n\r\n /**\r\n * Returns a list of all inflections within all lexemes of a homonym\r\n * @return {Inflection[]} An array of inflections\r\n */\r\n get inflections () {\r\n let inflections = []\r\n for (const lexeme of this.lexemes) {\r\n inflections = inflections.concat(lexeme.inflections)\r\n }\r\n return inflections\r\n }\r\n\r\n isDisambiguated () {\r\n return this.lexemes.filter(l => l.disambiguated).length > 0\r\n }\r\n\r\n /**\r\n * Disambiguate homymyn objects with another\r\n * @param {Homonym} base the homonym to use to disambiguate\r\n * @param {Homonym[]} disambiguators the homonyms to use to disambiguate\r\n */\r\n static disambiguate (base, disambiguators) {\r\n if (disambiguators.length === 0) {\r\n // nothing left to disamibugate with\r\n return base\r\n }\r\n let disambiguator = disambiguators.shift()\r\n let lexemes = []\r\n let missedLexemes = []\r\n // iterate through the lexemes in the disambiguator and try\r\n // to disambiguate the existing lexemes with each\r\n for (let otherLexeme of disambiguator.lexemes) {\r\n let lexemeMatched = false\r\n for (let lexeme of base.lexemes) {\r\n let newLex = Lexeme.disambiguate(lexeme, otherLexeme)\r\n lexemes.push(newLex)\r\n if (newLex.disambiguated) {\r\n lexemeMatched = true\r\n }\r\n }\r\n // if we couldn't find a matching lexeme, add the disambigutor's lexemes\r\n // to the list of lexemes for the new Homonym\r\n if (!lexemeMatched) {\r\n otherLexeme.disambiguated = true\r\n missedLexemes.push(otherLexeme)\r\n }\r\n }\r\n // create a new homonym with the disamibugated lexemes\r\n let newHom = new Homonym([...lexemes, ...missedLexemes], base.targetWord)\r\n return Homonym.disambiguate(newHom, disambiguators)\r\n }\r\n}\r\nexport default Homonym\r\n","/**\n * This is a temporary placeholder for an i18n library\n */\nexport const i18n = {\n en: {\n feminine: {\n full: 'feminine',\n abbr: 'f.'\n },\n masculine: {\n full: 'masculine',\n abbr: 'm.'\n },\n neuter: {\n full: 'neuter',\n abbr: 'n.'\n },\n nominative: {\n full: 'nominative',\n abbr: 'nom.'\n },\n accusative: {\n full: 'accusative',\n abbr: 'acc.'\n },\n genitive: {\n full: 'genitive',\n abbr: 'gen.'\n },\n vocative: {\n full: 'vocative',\n abbr: 'voc.'\n },\n ablative: {\n full: 'ablative',\n abbr: 'abl.'\n },\n locative: {\n full: 'locative',\n abbr: 'loc.'\n },\n dative: {\n full: 'dative',\n abbr: 'dat.'\n },\n positive: {\n full: 'positive',\n abbr: 'pos.'\n },\n comparative: {\n full: 'comparative',\n abbr: 'comp.'\n },\n superlative: {\n full: 'superlative',\n abbr: 'super.'\n },\n singular: {\n full: 'singular',\n abbr: 's.'\n },\n plural: {\n full: 'plural',\n abbr: 'p.'\n },\n dual: {\n full: 'dual',\n abbr: 'dl.'\n },\n present: {\n full: 'present',\n abbr: 'pr.'\n },\n imperfect: {\n full: 'imperfect',\n abbr: 'imp.'\n },\n perfect: {\n full: 'perfect',\n abbr: 'perf.'\n },\n pluperfect: {\n full: 'pluperfect',\n abbr: 'pluperf.'\n },\n plusquamperfect: {\n full: 'plusquamperfect',\n abbr: 'pqpf.'\n },\n 'future perfect': {\n full: 'future perfect',\n abbr: 'fut. perf.'\n },\n future: {\n full: 'future',\n abbr: 'fut.'\n },\n aorist: {\n full: 'aorist',\n abbr: 'aor.'\n },\n indicative: {\n full: 'indicative',\n abbr: 'ind.'\n },\n subjunctive: {\n full: 'subjunctive',\n abbr: 'sub.'\n },\n infinitive: {\n full: 'infinitive',\n abbr: 'inf.'\n },\n imperative: {\n full: 'imperative',\n abbr: 'imp.'\n },\n supine: {\n full: 'supine',\n abbr: 'sup.'\n },\n participle: {\n full: 'participle',\n abbr: 'par.'\n },\n optative: {\n full: 'optative',\n abbr: 'opt.'\n },\n active: {\n full: 'active',\n abbr: 'act.'\n },\n passive: {\n full: 'passive',\n abbr: 'pass.'\n },\n middle: {\n full: 'middle',\n abbr: 'mid.'\n },\n mediopassive: {\n full: 'mediopassive',\n abbr: 'mp.'\n },\n deponens: {\n full: 'deponens',\n abbr: 'dep.'\n }\n }\n}\n","import Feature from './feature.js'\nimport LMF from './language_model_factory.js'\nimport * as Constants from './constants.js'\n/*\n Hierarchical structure of return value of a morphological analyzer:\n\n Homonym (a group of words that are written the same way, https://en.wikipedia.org/wiki/Homonym)\n Lexeme 1 (a unit of lexical meaning, https://en.wikipedia.org/wiki/Lexeme)\n Have a lemma and one or more inflections\n Lemma (also called a headword, a canonical form of a group of words https://en.wikipedia.org/wiki/Lemma_(morphology) )\n Inflection 1\n Stem\n Suffix (also called ending)\n Inflection 2\n Stem\n Suffix\n Lexeme 2\n Lemma\n Inflection 1\n Stem\n Suffix\n */\n\n/**\n * Represents an inflection of a word\n */\nclass Inflection {\n /**\n * Initializes an Inflection object.\n * @param {string} stem - A stem of a word.\n * @param {string | symbol} language - A word's language.\n * @param {string} suffix - a suffix of a word\n * @param {prefix} prefix - a prefix of a word\n * @param {example} example - example\n */\n constructor (stem = null, language, suffix = null, prefix = null, example = null) {\n if (!stem && !suffix) {\n throw new Error('At least stem or suffix must be defined')\n }\n if (!language) {\n throw new Error('Language should not be empty.')\n }\n\n if (!LMF.supportsLanguage(language)) {\n throw new Error(`language ${language} not supported.`)\n }\n\n this.stem = stem\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(language))\n this.model = LMF.getLanguageModel(this.languageID)\n this.features = new Set() // Names of features of this inflection\n\n // A grammar constraints object\n this.constraints = {\n fullFormBased: false, // True this inflection stores and requires to use a full form of a word\n suffixBased: false, // True if only suffix is enough to identify this inflection\n obligatoryMatches: [], // Names of features that should be matched in order to include a form or suffix to an inflection table\n optionalMatches: [] // Names of features that will be recorded but are not important for inclusion of a form or suffix to an inflection table\n }\n\n // Suffix may not be present in every word. If missing, it will be set to null.\n this.suffix = suffix\n\n // Prefix may not be present in every word. If missing, it will be set to null.\n this.prefix = prefix\n\n // Example may not be provided\n this.example = example\n }\n\n get form () {\n let form, prefix, suffix, divider, stem\n\n stem = this.stem ? this.stem : ''\n divider = this.stem ? ' - ' : ''\n\n if (this.model.direction === Constants.LANG_DIR_RTL) {\n prefix = this.prefix ? divider + this.prefix : ''\n suffix = this.suffix ? this.suffix + divider : ''\n\n form = suffix + stem + prefix\n } else {\n prefix = this.prefix ? this.prefix + divider : ''\n suffix = this.suffix ? divider + this.suffix : ''\n\n form = prefix + stem + suffix\n }\n\n return form\n }\n\n /**\n * This is a compatibility function for legacy code.\n * @return {String} A language code.\n */\n get language () {\n console.warn(`Please use a \"languageID\" instead of a \"language\"`)\n return this.languageCode\n }\n\n /**\n * Sets grammar properties based on inflection info\n */\n setConstraints () {\n if (this.model.hasOwnProperty('getInflectionConstraints')) {\n let constraintData = this.model.getInflectionConstraints(this)\n this.constraints = Object.assign(this.constraints, constraintData)\n }\n }\n\n compareWithWordDependsOnType (word, className, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n let value\n\n if (!this.constraints.irregularVerb) {\n value = this.constraints.suffixBased ? this.suffix : this.form\n } else {\n if (className === 'Suffix') {\n value = this.suffix\n } else {\n value = this[Feature.types.fullForm] ? this[Feature.types.fullForm].value : this.form\n }\n }\n\n return normalize\n ? model.normalizeWord(value) === model.normalizeWord(word)\n : value === word\n }\n\n compareWithWord (word, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n const value = this.constraints.suffixBased ? this.suffix : this.form\n return normalize\n ? model.normalizeWord(value) === model.normalizeWord(word)\n : value === word\n }\n\n /**\n * Check to see if the supplied inflection can disambiguate this one\n * @param {Inflection} infl Inflection object to be used for disambiguation\n */\n disambiguatedBy (infl) {\n let matched = true\n // an inflection can only be disambiguated by its features\n if (this.features.length === 0 || infl.features.length === 0) {\n matched = false\n }\n // the supplied inflection can be less specific but not more\n if (infl.features.length > this.features.length) {\n matched = false\n }\n for (let feature of infl.features) {\n if (!this[feature] || !this[feature].isEqual(infl[feature])) {\n matched = false\n break\n }\n }\n return matched\n }\n\n static readObject (jsonObject) {\n let inflection =\n new Inflection(\n jsonObject.stem, jsonObject.languageCode, jsonObject.suffix, jsonObject.prefix, jsonObject.example)\n inflection.languageID = LMF.getLanguageIdFromCode(inflection.languageCode)\n return inflection\n }\n\n /**\n * @deprecated Use `addFeature` instead\n * Sets a grammatical feature in an inflection. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n console.warn(`Please use \"addFeature\" instead.`)\n if (!data) {\n throw new Error('Inflection feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n let type = data[0].type\n this[type] = []\n for (let element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('Inflection feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Language \"${element.languageID.toString()}\" of a feature does not match\n a language \"${this.languageID.toString()}\" of an Inflection object.`)\n }\n\n this[type].push(element)\n this.features.add(type)\n }\n }\n\n /**\n * Sets a grammatical feature of an inflection. Feature is stored in a `feature.type` property.\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this[feature.type] = feature\n this.features.add(feature.type)\n }\n\n /**\n * Sets multiple grammatical features of an inflection.\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error(`Features must be in an array`)\n }\n\n for (let feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Checks whether an inflection has a feature with `featureName` name and `featureValue` value\n * @param {string} featureName - A name of a feature\n * @param {string} featureValue - A value of a feature\n * @return {boolean} True if an inflection contains a feature, false otherwise\n */\n hasFeatureValue (featureName, featureValue) {\n if (this.hasOwnProperty(featureName)) {\n return this[featureName].values.includes(featureValue)\n }\n return false\n }\n}\nexport default Inflection\n","class InflectionGroup {\n /**\n * A group of inflections or groups of inflections\n *\n * @param {InflectionGroupingKey} groupingKey features of the inflections in the group\n * @param {Inflection[]|InflectionGroup[]} inflections array of Inflections or InflectionGroups in this group\n */\n constructor (groupingKey, inflections = [], sortKey = null) {\n this.groupingKey = groupingKey\n this.inflections = inflections\n }\n\n /**\n * Add an Inflection or InflectionGroup to the group\n * @param {Inflection|InflectionGroup} inflection\n */\n append (inflection) {\n this.inflections.push(inflection)\n }\n}\nexport default InflectionGroup\n","import Feature from './feature.js'\n\nclass InflectionGroupingKey {\n /**\n * @constructor\n * @param {Inflection} infl inflection with features which are used as a grouping key\n * @param {string[]} features array of feature names which are used as the key\n * @param {Object} extras extra property name and value pairs used in the key\n */\n constructor (infl, features, extras = {}) {\n for (let feature of features) {\n this[feature] = infl[feature]\n }\n Object.assign(this, extras)\n }\n\n /**\n * checks if a feature with a specific value\n * is included in the grouping key\n * @returns {boolean} true if found, false if not\n */\n hasFeatureValue (feature, value) {\n if (this.hasOwnProperty(feature)) {\n return this[feature].values.includes(value)\n }\n return false\n }\n\n /**\n * Return this key as a string\n * @returns {string} string representation of the key\n */\n toString () {\n let values = []\n for (let prop of Object.getOwnPropertyNames(this).sort()) {\n // A prop can be either a Feature object, or a one of the extras of a string type\n let value = (this[prop] instanceof Feature) ? this[prop].values.sort().join(',') : this[prop]\n values.push(value)\n }\n return values.join(' ')\n }\n}\n\nexport default InflectionGroupingKey\n","import * as Constants from './constants.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Feature from './feature.js'\nimport FeatureType from './feature_type.js'\nimport InflectionGroupingKey from './inflection_grouping_key.js'\nimport InflectionGroup from './inflection_group.js'\n\n/**\n * @class LanguageModel is the base class for language-specific behavior\n */\nclass LanguageModel {\n constructor () {\n // This is just to avoid JavaScript Standard error on `context_backward` getter name. Don't need a constructor otherwise\n // TODO: `contextBackward` shall be used instead of `context_backward` wherever it is used\n this.context_backward = LanguageModel.contextBackward\n }\n\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n /**\n * @deprecated\n */\n get contextForward () {\n console.warn(`Please use static \"contextForward\" instead`)\n return this.constructor.contextForward\n }\n\n /**\n * @deprecated\n */\n get contextBackward () {\n console.warn(`Please use static \"contextBackward\" instead`)\n return this.constructor.contextBackward\n }\n\n /**\n * @deprecated\n */\n get direction () {\n console.warn(`Please use static \"direction\" instead`)\n return this.constructor.direction\n }\n\n /**\n * @deprecated\n */\n get baseUnit () {\n console.warn(`Please use static \"baseUnit\" instead`)\n return this.constructor.baseUnit\n }\n\n /**\n * @deprecated\n */\n get features () {\n console.warn(`Please use individual \"getFeatureType\" or static \"features\" instead`)\n return this.constructor.features\n }\n\n /**\n * Returns a list of names of feature types that are defined in a language model.\n * @return {string[]} Names of features that are defined in a model.\n */\n static get featureNames () {\n return this.featureValues.keys()\n }\n\n /**\n * Returns a feature a `featureType` name that is defined for a language. It does not create a new Feature\n * object instance. It returns the one defined in a language model. To get a new instance of a Feature\n * object, use `getFeature` instead.\n * If no feature of `featureType` is defined in a language model, throws an error.\n * @param {string} featureType - A feature type name.\n * @return {Feature} A feature object of requested type.\n */\n static typeFeature (featureType) {\n if (this.typeFeatures.has(featureType)) {\n return this.typeFeatures.get(featureType)\n } else {\n throw new Error(`Type feature \"${featureType}\" is not defined within \"${this}\"`)\n }\n }\n\n /**\n * Returns a map with Feature objects of all features defined in a language. Use this method to get all\n * Feature objects defined in a language model.\n * @return {Map} Feature objects for all features defined within a language in a Map object. The key is\n * a feature type (a string), and the value is a Feature object.\n */\n static get typeFeatures () {\n console.warn(`This getter must be defined in a descendant class`)\n }\n\n static get features () {\n let features = {}\n for (const featureName of this.featureNames) {\n features[featureName] = this.getFeature(featureName)\n }\n return features\n }\n\n static get languageID () {\n return Constants.LANG_UNDEFINED\n }\n\n static get languageCode () {\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Returns an array of language codes that represents the language.\n * @return {String[]} An array of language codes that matches the language.\n */\n static get languageCodes () {\n return []\n }\n\n static get codes () {\n console.warn(`Use static \"languageCodes\" instead`)\n return this.languageCodes\n }\n\n /**\n * @deprecated\n * @return {String[]}\n */\n get codes () {\n console.warn(`Please use a static version of \"codes\" instead`)\n return this.constructor.languageCodes\n }\n\n /**\n * @deprecated\n * @return {string}\n */\n toCode () {\n console.warn(`Please use a static \"languageCode\" instead`)\n return this.constructor.languageCode\n }\n\n /**\n * @deprecated\n * @return {string}\n */\n static toCode () {\n console.warn(`Please use a static \"languageCode\" instead`)\n return this.languageCode\n }\n\n /**\n * Return a list of feature values that are allowed for each feature type\n * @return {Map}\n */\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n [\n Feature.types.part,\n [\n Constants.POFS_ADVERB,\n Constants.POFS_ADVERBIAL,\n Constants.POFS_ADJECTIVE,\n Constants.POFS_ARTICLE,\n Constants.POFS_CONJUNCTION,\n Constants.POFS_EXCLAMATION,\n Constants.POFS_INTERJECTION,\n Constants.POFS_NOUN,\n Constants.POFS_NUMERAL,\n Constants.POFS_PARTICLE,\n Constants.POFS_PREFIX,\n Constants.POFS_PREPOSITION,\n Constants.POFS_PRONOUN,\n Constants.POFS_SUFFIX,\n Constants.POFS_SUPINE,\n Constants.POFS_VERB,\n Constants.POFS_VERB_PARTICIPLE\n ]\n ],\n [\n Feature.types.gender,\n [\n Constants.GEND_MASCULINE,\n Constants.GEND_FEMININE,\n Constants.GEND_NEUTER\n ]\n ],\n [\n Feature.types.type,\n [\n Constants.TYPE_REGULAR,\n Constants.TYPE_IRREGULAR\n ]\n ],\n [\n Feature.types.person,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.age,\n []\n ],\n [\n Feature.types.area,\n []\n ],\n [\n Feature.types.source,\n []\n ],\n [\n Feature.types.frequency,\n []\n ],\n [\n Feature.types.geo,\n []\n ],\n [\n Feature.types.pronunciation,\n []\n ],\n [\n Feature.types.kind,\n []\n ],\n [\n Feature.types.comparison,\n []\n ],\n [\n Feature.types.morph,\n []\n ],\n [\n Feature.types.stemtype,\n []\n ],\n [\n Feature.types.derivtype,\n []\n ]\n ])\n }\n\n /**\n * @deprecated\n * @return {symbol} Returns a language ID\n */\n static get sourceLanguage () {\n console.warn(`Please use languageID directly`)\n return this.languageID\n }\n\n /**\n * @deprecated\n * @return {symbol} Returns a language ID\n */\n get sourceLanguage () {\n console.warn(`Please use languageID directly`)\n return this.constructor.languageID\n }\n\n /**\n * @deprecated\n * @param name\n * @return {FeatureType}\n */\n static getFeatureType (name) {\n console.warn('Please use getFeature instead')\n let featureValues = this.featureValues\n if (featureValues.has(name)) {\n return new FeatureType(name, featureValues.get(name), this.languageID)\n } else {\n throw new Error(`Feature \"${name}\" is not defined`)\n }\n }\n\n /**\n * Returns a new instance of a feature with `featureType`. It uses a feature defined in a language model\n * as a master.\n * @param {string} featureType - A name of a feature type.\n * @return {Feature} - A newly created Feature object.\n */\n static getFeature (featureType) {\n let featureValues = this.featureValues // To cache the values\n if (featureValues.has(featureType)) {\n let allowedValues = featureValues.get(featureType)\n return new Feature(featureType, allowedValues, this.languageID, 1, allowedValues)\n } else {\n throw new Error(`Feature \"${featureType}\" is not defined`)\n }\n }\n\n _initializeFeatures () {\n let features = {}\n for (const featureName of this.constructor.featureValues.keys()) {\n features[featureName] = this.constructor.getFeature(featureName)\n }\n return features\n }\n\n /**\n * @deprecated\n */\n grammarFeatures () {\n console.warn(`Please use a static version of \"grammarFeatures\" instead`)\n return this.constructor.grammarFeatures()\n }\n\n /**\n * Identify the morphological features which should be linked to a grammar.\n * @returns {String[]} Array of Feature types\n */\n static grammarFeatures () {\n return []\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Check to see if the supplied language code is supported by this tool\n * @param {string} code the language code\n * @returns true if supported false if not\n * @type Boolean\n */\n static supportsLanguage (code) {\n return this.languageCodes.includes[code]\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {string} word the source word\n * @returns the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type String\n */\n static normalizeWord (word) {\n return word\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n return []\n }\n\n alternateWordEncodings (word, preceding, following, encoding) {\n console.warn(`Please use static \"alternateWordEncodings\" instead`)\n return this.constructor.alternateWordEncodings(word, preceding, following, encoding)\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return '.,;:!?\\'\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * @deprecated\n * @return {String}\n */\n getPunctuation () {\n console.warn(`Please use a static version of \"getPunctuation\"`)\n return this.constructor.getPunctuation()\n }\n\n toString () {\n return String(this.constructor.languageCode)\n }\n\n isEqual (model) {\n return LanguageModelFactory.compareLanguages(this.languageID, model.languageID)\n }\n\n /*\n There are two types of language identificators: language IDs and language code. Language ID is a symbol constant\n defined in constants.js, such as LANG_LATIN or LANG_GREEK. Language code is a string containing (usually)\n a three-letter language codes such as 'lat' or 'la' for latin. There can be multiple language codes that identify\n the same language, but there is only one unique language ID for each language.\n */\n\n /**\n * Checks whether a language has a particular language code in its list of codes\n * @param {String} languageCode - A language code to check\n * @return {boolean} Whether this language code exists in a language code list\n */\n static hasCode (languageCode) {\n if (this.isLanguageCode(languageCode)) {\n return this.languageCodes.includes(languageCode)\n } else {\n throw new Error(`Format of a \"${languageCode}\" is incorrect`)\n }\n }\n\n /**\n * Tests wither a provided language identificator is a language ID.\n * @param {Symbol | string} language - A language identificator, either a Symbol or a string language code.\n * @return {boolean} True if language identificator provided is a language ID.\n */\n static isLanguageID (language) {\n return (typeof language === 'symbol')\n }\n\n /**\n * Tests wither a provided language identificator is a language code.\n * @param {Symbol | string} language - A language identificator, either a Symbol or a string language code.\n * @return {boolean} - True if language identificator provided is a language code.\n */\n static isLanguageCode (language) {\n return !LanguageModel.isLanguageID(language)\n }\n\n /**\n * @deprecated\n * @param node\n */\n canInflect (node) {\n console.warn(`Please use a static version of \"canInflect\" instead`)\n return this.constructor.canInflect(node)\n }\n\n /**\n * Groups a set of inflections according to a language-specific display paradigm\n * The default groups according to the following logic:\n * 1. groups of groups with unique stem, prefix, suffix, part of speech, declension, dialect and comparison\n * 2. groups of those groups with unique\n * number, if it's an inflection with a grammatical case\n * tense, if it's an inflection with tense but no case (i.e. a verb)\n * verbs without tense or case\n * adverbs\n * everything else\n * 3. groups of those groups with unique voice and tense\n * 4. groups of inflections with unique gender, person, mood, and sort\n */\n static groupInflectionsForDisplay (inflections) {\n let grouped = new Map()\n let aggregated = this.aggregateInflectionsForDisplay(inflections)\n\n // group inflections by part of speech\n for (let infl of aggregated) {\n let groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.part, Feature.types.declension, Feature.types.dialect, Feature.types.comparison],\n {\n prefix: infl.prefix,\n suffix: infl.suffix,\n stem: infl.stem\n }\n )\n let groupingKeyStr = groupingKey.toString()\n if (grouped.has(groupingKeyStr)) {\n grouped.get(groupingKeyStr).append(infl)\n } else {\n grouped.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n\n // iterate through each group key to group the inflections in that group\n for (let kv of grouped) {\n let inflgrp = new Map()\n for (let infl of kv[1].inflections) {\n let keyprop\n let isCaseInflectionSet = false\n if (infl[Feature.types.grmCase]) {\n // grouping on number if case is defined\n keyprop = Feature.types.number\n isCaseInflectionSet = true\n } else if (infl[Feature.types.tense]) {\n // grouping on tense if tense is defined but not case\n keyprop = Feature.types.tense\n } else if (infl[Feature.types.part] === Constants.POFS_VERB) {\n // grouping on no case or tense but a verb\n keyprop = Feature.types.part\n } else if (infl[Feature.types.part] === Constants.POFS_ADVERB) {\n keyprop = Feature.types.part\n // grouping on adverbs without case or tense\n } else {\n keyprop = 'misc'\n // grouping on adverbs without case or tense\n // everything else\n }\n let groupingKey = new InflectionGroupingKey(infl, [keyprop], {isCaseInflectionSet: isCaseInflectionSet})\n let groupingKeyStr = groupingKey.toString()\n if (inflgrp.has(groupingKeyStr)) {\n inflgrp.get(groupingKeyStr).append(infl)\n } else {\n inflgrp.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n // inflgrp is now a map of groups of inflections grouped by\n // inflections with number\n // inflections without number but with tense\n // inflections of verbs without tense\n // inflections of adverbs\n // everything else\n // iterate through each inflection group key to group the inflections in that group by tense and voice\n for (let kv of inflgrp) {\n let nextGroup = new Map()\n let sortOrder = new Map()\n for (let infl of kv[1].inflections) {\n let sortkey = infl[Feature.types.grmCase] ? Math.max(infl[Feature.types.grmCase].items.map(f => f.sortOrder)) : 1\n let groupingKey = new InflectionGroupingKey(infl, [Feature.types.tense, Feature.types.voice])\n let groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl], sortkey))\n sortOrder.set(groupingKeyStr, sortkey)\n }\n }\n kv[1].inflections = []\n let sortedKeys = Array.from(nextGroup.keys()).sort(\n (a, b) => {\n let orderA = sortOrder.get(a)\n let orderB = sortOrder.get(b)\n return orderA > orderB ? -1 : orderB > orderA ? 1 : 0\n }\n )\n for (let groupkey of sortedKeys) {\n kv[1].inflections.push(nextGroup.get(groupkey))\n }\n }\n\n // inflgrp is now a Map of groups of groups of inflections\n\n for (let kv of inflgrp) {\n let groups = kv[1]\n for (let group of groups.inflections) {\n let nextGroup = new Map()\n for (let infl of group.inflections) {\n // set key is case comp gend pers mood sort\n let groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.grmCase, Feature.types.comparison, Feature.types.gender, Feature.types.number, Feature.types.person,\n Feature.types.tense, Feature.types.mood, Feature.types.voice])\n let groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n group.inflections = Array.from(nextGroup.values()) // now a group of inflection groups\n }\n }\n kv[1].inflections = Array.from(inflgrp.values())\n }\n return Array.from(grouped.values())\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n * @param {Inflection[]} inflections an array of inflections\n * @return Inflection[] the aggregated inflections\n */\n static aggregateInflectionsForDisplay (inflections) {\n // default is just to do nothing\n return inflections\n }\n\n /**\n * @deprecated\n * @param inflections\n * @return {*}\n */\n groupInflectionsForDisplay (inflections) {\n console.warn(`Please use a static version of \"groupInflectionsForDisplay\" instead`)\n return this.constructor.groupInflectionsForDisplay(inflections)\n }\n}\n\nexport default LanguageModel\n","import LanguageModel from './language_model.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport * as Constants from './constants.js'\n\nconst MODELS = new Map([\n [ Constants.STR_LANG_CODE_LA, LatinLanguageModel ],\n [ Constants.STR_LANG_CODE_LAT, LatinLanguageModel ],\n [ Constants.STR_LANG_CODE_GRC, GreekLanguageModel ],\n [ Constants.STR_LANG_CODE_ARA, ArabicLanguageModel ],\n [ Constants.STR_LANG_CODE_AR, ArabicLanguageModel ],\n [ Constants.STR_LANG_CODE_PER, PersianLanguageModel ]\n])\n\nclass LanguageModelFactory {\n /**\n * Checks whether a language is supported\n * @param {string | symbol} language - Language as a language ID (symbol) or a language code (string)\n * @return {boolean} True if language is supported, false otherwise\n */\n static supportsLanguage (language) {\n language = (typeof language === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(language) : language\n return MODELS.has(language)\n }\n\n /**\n * Returns a constructor of language model for a specific language ID.\n * @param {symbol} languageID - A language ID of a desired language model.\n * @return {LanguageModel} A language model for a given language ID.\n */\n static getLanguageModel (languageID) {\n let languageCode = LanguageModelFactory.getLanguageCodeFromId(languageID)\n if (MODELS.has(languageCode)) {\n return MODELS.get(languageCode)\n } else {\n // A default value\n return LanguageModel\n }\n }\n\n static getLanguageForCode (code = null) {\n let Model = MODELS.get(code)\n if (Model) {\n return new Model()\n }\n // for now return a default Model\n // TODO may want to throw an error\n return new LanguageModel()\n }\n\n /**\n * Converts an ISO 639-3 language code to a language ID\n * @param {string} languageCode - An ISO 639-3 language code\n * @return {symbol | undefined} A language ID or undefined if language ID is not found\n */\n static getLanguageIdFromCode (languageCode) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.hasCode(languageCode)) {\n return languageModel.languageID\n }\n }\n // Noting found, return a Symbol with an undefined value (to keep return value type the same)\n return Constants.LANG_UNDEFINED\n }\n\n /**\n * Converts a language ID to an default ISO 639-3 language code for that language\n * @param {symbol} languageID - A language ID\n * @return {string | undefined} An ISO 639-3 language code or undefined if language code is not found\n */\n static getLanguageCodeFromId (languageID) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.languageID.toString() === languageID.toString()) {\n return languageModel.languageCode\n }\n }\n // Noting found, return a string with an undefined value (to keep return value type the same)\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Takes either a language ID or a language code and returns an object with both an ID and a code.\n * @param {string | symbol} language - Either a language ID (a Symbol) or a language code (a String).\n * @return {object} An object with the following properties:\n * {symbol} languageID\n * {string} languageCode\n */\n static getLanguageAttrs (language) {\n if (typeof language === 'symbol') {\n // `language` is a language ID\n return {\n languageID: language,\n languageCode: LanguageModelFactory.getLanguageCodeFromId(language)\n }\n } else {\n // `language` is a language code\n return {\n languageID: LanguageModelFactory.getLanguageIdFromCode(language),\n languageCode: language\n }\n }\n }\n\n /**\n * Compares two languages in either a language ID or a language code format. For this, does conversion of\n * language IDs to language code. Because fo this, it will work even for language IDs defined in\n * different modules\n * @param {string | symbol} languageA - Either a language ID (a symbol) or a language code (a string).\n * @param {string | symbol} languageB - Either a language ID (a symbol) or a language code (a string).\n * @return {boolean} True if languages are the same, false otherwise.\n */\n static compareLanguages (languageA, languageB) {\n languageA = (typeof languageA === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageA) : languageA\n languageB = (typeof languageB === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageB) : languageB\n return languageA === languageB\n }\n}\nexport default LanguageModelFactory\n","import LanguageModel from './language_model.js'\nimport Feature from './feature.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class LatinLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_LATIN }\n static get languageCode () { return Constants.STR_LANG_CODE_LAT }\n static get languageCodes () { return [Constants.STR_LANG_CODE_LA, Constants.STR_LANG_CODE_LAT] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_PERSONAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_RELATIVE,\n Constants.CLASS_INTERROGATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_ABLATIVE,\n Constants.CASE_LOCATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH,\n Constants.ORD_5TH\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_ACTIVE,\n Constants.VOICE_PASSIVE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_IMPERATIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_SUPINE,\n Constants.MOOD_GERUNDIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_INFINITIVE\n ]\n ],\n [\n Feature.types.conjugation,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) {\n this.initTypeFeatures()\n }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * @override LanguageModel#grammarFeatures\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.conjugation]\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * Return a normalized version of a word which can be used to compare the word for equality\n * @param {String} word the source word\n * @returns the normalized form of the word (Latin replaces accents and special chars)\n * @type String\n */\n static normalizeWord (word) {\n if (word) {\n word = word.replace(/[\\u00c0\\u00c1\\u00c2\\u00c3\\u00c4\\u0100\\u0102]/g, 'A')\n word = word.replace(/[\\u00c8\\u00c9\\u00ca\\u00cb\\u0112\\u0114]/g, 'E')\n word = word.replace(/[\\u00cc\\u00cd\\u00ce\\u00cf\\u012a\\u012c]/g, 'I')\n word = word.replace(/[\\u00d2\\u00d3\\u00d4\\u00df\\u00d6\\u014c\\u014e]/g, 'O')\n word = word.replace(/[\\u00d9\\u00da\\u00db\\u00dc\\u016a\\u016c]/g, 'U')\n word = word.replace(/[\\u00c6\\u01e2]/g, 'AE')\n word = word.replace(/[\\u0152]/g, 'OE')\n word = word.replace(/[\\u00e0\\u00e1\\u00e2\\u00e3\\u00e4\\u0101\\u0103]/g, 'a')\n word = word.replace(/[\\u00e8\\u00e9\\u00ea\\u00eb\\u0113\\u0115]/g, 'e')\n word = word.replace(/[\\u00ec\\u00ed\\u00ee\\u00ef\\u012b\\u012d\\u0129]/g, 'i')\n word = word.replace(/[\\u00f2\\u00f3\\u00f4\\u00f5\\u00f6\\u014d\\u014f]/g, 'o')\n word = word.replace(/[\\u00f9\\u00fa\\u00fb\\u00fc\\u016b\\u016d]/g, 'u')\n word = word.replace(/[\\u00e6\\u01e3]/g, 'ae')\n word = word.replace(/[\\u0153]/g, 'oe')\n }\n return word\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // Not implemented yet\n return []\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n * @param {Inflection} inflection - An inflection object\n * @return {Object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n let grammar = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if ([Constants.POFS_VERB, Constants.POFS_VERB_PARTICIPLE].includes(inflection[Feature.types.part].value)) {\n grammar.fullFormBased = true\n grammar.suffixBased = true\n } else if (inflection[Feature.types.part].value === Constants.POFS_PRONOUN) {\n grammar.fullFormBased = true\n } else {\n grammar.suffixBased = true\n }\n } else {\n console.warn(`Unable to set grammar: part of speech data is missing or is incorrect`, inflection[Feature.types.part])\n }\n\n return grammar\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport uuidv4 from 'uuid/v4'\n\n/**\n * Lemma, a canonical form of a word.\n */\nclass Lemma {\n /**\n * Initializes a Lemma object.\n * @param {string} word - A word.\n * @param {symbol | string} languageID - A language ID (symbol, please use this) or a language code of a word.\n * @param {string[]} principalParts - the principalParts of a lemma.\n * @param {Object} features - the grammatical features of a lemma.\n\n * @param {Translation} transaltions - translations from python service\n */\n constructor (word, languageID, principalParts = [], features = {}) {\n if (!word) {\n throw new Error('Word should not be empty.')\n }\n\n if (!languageID) {\n throw new Error('Language should not be empty.')\n }\n\n // Compatibility code for something providing languageCode instead of languageID\n this.languageID = undefined\n this.languageCode = undefined\n ;({languageID: this.languageID, languageCode: this.languageCode} = LMF.getLanguageAttrs(languageID))\n\n this.word = word\n this.principalParts = principalParts\n this.features = {}\n\n this.ID = uuidv4()\n }\n\n get language () {\n console.warn(`Please use \"languageID\" instead of \"language\"`)\n return this.languageCode\n }\n\n static readObject (jsonObject) {\n return new Lemma(jsonObject.word, jsonObject.language, jsonObject.principalParts, jsonObject.pronunciation)\n }\n\n /**\n * @deprecated Please use `addFeature` instead.\n * Sets a grammatical feature for a lemma. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n console.warn(`Please use \"addFeature\" instead`)\n if (!data) {\n throw new Error('feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n let type = data[0].type\n this.features[type] = []\n for (let element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error('Language \"' + element.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[type].push(element)\n }\n }\n\n /**\n * Sets a grammatical feature of a lemma. Feature is stored in a `feature.type` property.\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[feature.type] = feature\n }\n\n /**\n * Sets multiple grammatical features of a lemma.\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error(`Features must be in an array`)\n }\n\n for (let feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Sets a translation from python service.\n * @param {Translation} translation - A translation object\n */\n addTranslation (translation) {\n if (!translation) {\n throw new Error('translation data cannot be empty.')\n }\n\n if (translation.constructor.name !== 'Translation') {\n throw new Error('translation data must be a Translation object.')\n }\n\n this.translation = translation\n }\n\n /**\n * Test to see if two lemmas are full homonyms\n * @param {Lemma} lemma the lemma to compare\n * @return {Boolean} true or false\n */\n isFullHomonym (lemma) {\n // returns true if the word and part of speech match\n return this.word === lemma.word &&\n this.features[Feature.types.part] &&\n lemma.features[Feature.types.part] &&\n this.features[Feature.types.part].isEqual(lemma.features[Feature.types.part])\n }\n}\n\nexport default Lemma\n","import Lemma from './lemma.js'\r\nimport Inflection from './inflection.js'\r\nimport DefinitionSet from './definition-set'\r\nimport LMF from './language_model_factory'\r\n\r\n/**\r\n * A basic unit of lexical meaning. Contains a primary Lemma object, one or more Inflection objects\r\n * and a DefinitionSet\r\n */\r\nclass Lexeme {\r\n /**\r\n * Initializes a Lexeme object.\r\n * @param {Lemma} lemma - A lemma object.\r\n * @param {Inflection[]} inflections - An array of inflections.\r\n * @param {DefinitionSet} meaning - A set of definitions.\r\n */\r\n constructor (lemma, inflections, meaning = null) {\r\n if (!lemma) {\r\n throw new Error('Lemma should not be empty.')\r\n }\r\n\r\n if (!(lemma instanceof Lemma)) {\r\n throw new Error('Lemma should be of Lemma object type.')\r\n }\r\n\r\n if (!inflections) {\r\n throw new Error('Inflections data should not be empty.')\r\n }\r\n\r\n if (!Array.isArray(inflections)) {\r\n throw new Error('Inflection data should be provided in an array.')\r\n }\r\n\r\n for (let inflection of inflections) {\r\n if (!(inflection instanceof Inflection)) {\r\n throw new Error('All inflection data should be of Inflection object type.')\r\n }\r\n }\r\n\r\n if (meaning !== null && !(meaning instanceof DefinitionSet)) {\r\n throw new Error('Meaning should be of DefinitionSet object type.')\r\n }\r\n\r\n this.lemma = lemma\r\n this.altLemmas = []\r\n this.inflections = []\r\n inflections.forEach(i => { this.addInflection(i) })\r\n this.meaning = meaning || new DefinitionSet(this.lemma.word, this.lemma.languageID)\r\n this.disambiguated = false\r\n }\r\n\r\n /**\r\n * add an inflection to the lexeme\r\n * @param {Inflection} inflection\r\n */\r\n addInflection (inflection) {\r\n inflection.lemma = this.lemma\r\n this.inflections.push(inflection)\r\n }\r\n\r\n /**\r\n * add an alternative lemma to the lexeme\r\n * @param {Lemma} lemma\r\n */\r\n addAltLemma (lemma) {\r\n this.altLemmas.push(lemma)\r\n }\r\n\r\n /**\r\n * test to see if a lexeme is populated with meaningful data\r\n * Returns true if any of these are true:\r\n * its lemma has morphological features defined\r\n * it has one ore more definitions supplied in the meaning\r\n * it has one ore more inflections\r\n * @return {boolean}\r\n */\r\n isPopulated () {\r\n return Object.entries(this.lemma.features).length > 0 ||\r\n !this.meaning.isEmpty() ||\r\n this.inflections.length > 0\r\n }\r\n\r\n /**\r\n * disambiguate with another supplied Lexeme\r\n * @param {Lexeme} lexeme the lexeme to be disambiguated\r\n * @param {Lexeme} disambiguator the lexeme to use to disambiguate\r\n * @return {Lexeme} a new lexeme, if disamibugation was successful disambiguated flag will be set on it\r\n */\r\n static disambiguate (lexeme, disambiguator) {\r\n let newLexeme = new Lexeme(lexeme.lemma, lexeme.inflections, lexeme.meaning)\r\n if (lexeme.lemma.isFullHomonym(disambiguator.lemma) && disambiguator.inflections.length > 0) {\r\n newLexeme.disambiguated = true\r\n let keepInflections = []\r\n // iterate through this lexemes inflections and keep only thoes that are disambiguatedBy by the supplied lexeme's inflection\r\n // we want to keep the original inflections rather than just replacing them\r\n // because the original inflections may have more information\r\n for (let inflection of newLexeme.inflections) {\r\n for (let disambiguatorInflection of disambiguator.inflections) {\r\n if (inflection.disambiguatedBy(disambiguatorInflection)) {\r\n keepInflections.push(inflection)\r\n }\r\n }\r\n }\r\n newLexeme.inflections = keepInflections\r\n // if we couldn't match any existing inflections, then add the disambiguated one\r\n if (newLexeme.inflections.length === 0) {\r\n for (let infl of disambiguator.inflections) {\r\n newLexeme.addInflection(infl)\r\n }\r\n }\r\n }\r\n return newLexeme\n }\r\n\r\n getGroupedInflections () {\r\n let lm = LMF.getLanguageModel(this.lemma.languageID)\r\n return lm.groupInflectionsForDisplay(this.inflections)\r\n }\r\n\r\n static readObject (jsonObject) {\r\n let lemma = Lemma.readObject(jsonObject.lemma)\r\n let inflections = []\r\n for (let inflection of jsonObject.inflections) {\r\n inflections.push(Inflection.readObject(inflection))\r\n }\r\n\r\n let lexeme = new Lexeme(lemma, inflections)\r\n lexeme.meaning = DefinitionSet.readObject(jsonObject.meaning)\r\n return lexeme\r\n }\r\n\r\n /**\r\n * Get a sort function for an array of lexemes which applies a primary and secondary\r\n * sort logic using the sort order specified for each feature. Sorts in descending order -\r\n * higher sort order means it should come first\r\n * @param {string} primary feature name to use as primary sort key\r\n * @param {string} secondary feature name to use as secondary sort key\r\n * @returns {Function} function which can be passed to Array.sort\r\n */\r\n static getSortByTwoLemmaFeatures (primary, secondary) {\r\n return (a, b) => {\r\n if ((a.lemma.features[primary] && b.lemma.features[primary]) ||\r\n (!a.lemma.features[primary] && !b.lemma.features[[primary]])) {\r\n let primarySort\r\n if (a.lemma.features[primary] && b.lemma.features[primary]) {\r\n // if both lemmas have the primary sort key, then sort\r\n primarySort = a.lemma.features[primary].compareTo(b.lemma.features[primary])\r\n } else {\r\n // if neither lemma has the primary sort key, then the primary sort is equal\r\n primarySort = 0\r\n }\r\n if (primarySort !== 0) {\r\n return primarySort\r\n } else if (a.lemma.features[secondary] && b.lemma.features[secondary]) {\r\n return a.lemma.features[secondary].compareTo(b.lemma.features[secondary])\r\n } else if (a.lemma.features[secondary] && !b.lemma.features[secondary]) {\r\n return -1\r\n } else if (!a.lemma.features[secondary] && b.lemma.features[secondary]) {\r\n return 1\r\n } else {\r\n // neither have the secondary sort key so they are equal\r\n return 0\r\n }\r\n } else if (a.lemma.features[primary] && !b.lemma.features[primary]) {\r\n return -1\r\n } else if (!a.lemma.features[primary] && b.lemma.features[primary]) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n }\r\n}\r\nexport default Lexeme\r\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class PersianLanguageModel is the lass for Persian specific behavior\n */\nexport default class PersianLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_PERSIAN }\n\n static get languageCode () { return Constants.STR_LANG_CODE_PER }\n\n static get languageCodes () { return [Constants.STR_LANG_CODE_PER, Constants.STR_LANG_CODE_FAS, Constants.STR_LANG_CODE_FA, Constants.STR_LANG_CODE_FA_IR] }\n\n static get contextForward () { return 0 }\n\n static get contextBackward () { return 0 }\n\n static get direction () { return Constants.LANG_DIR_RTL }\n\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\n * for the current node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Returns alternate encodings for a word\n * @param {string} word the word\n * @param {string} preceding optional preceding word\n * @param {string} following optional following word\n * @param {string} encoding optional encoding name to filter the response to\n * @returns {Array} an array of alternate encodings\n */\n static alternateWordEncodings (word, preceding = null, following = null, encoding = null) {\n // Not implemented yet\n return []\n }\n\n /**\n * Get a list of valid puncutation for this language\n * @returns {String} a string containing valid puncutation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u201C\\u201D\\u0387\\u00B7\\n\\r\"\n }\n}\n","/**\n * An abstraction of an Alpheios resource provider\n */\nclass ResourceProvider {\n /**\n * @constructor\n * @param {string} uri - a unique resource identifier for this provider\n * @param {string} rights - rights text\n * @param {Map} rightsTranslations - optional map of translated rights text - keys should be language of text, values the text\n */\n constructor (uri = '', rights = '', rightsTranslations = new Map([['default', rights]])) {\n this.uri = uri\n this.rights = rightsTranslations\n if (!this.rights.has('default')) {\n this.rights.set('default', rights)\n }\n }\n\n /**\n * @return a string representation of the resource provider, in the default language\n */\n toString () {\n return this.rights.get('default')\n }\n\n /**\n * Produce a string representation of the resource provider, in the requested locale if available\n * @param {string} languageCode\n * @return a string representation of the resource provider, in the requested locale if available\n */\n toLocaleString (languageCode) {\n return this.rights.get(languageCode) || this.rights.get('default')\n }\n\n static getProxy (provider = null, target = {}) {\n return new Proxy(target, {\n get: function (target, name) {\n return name === 'provider' ? provider : target[name]\n }\n })\n }\n}\n\nexport default ResourceProvider\n","/**\n * stores a scope of lemma translations from python service\n * Contains a primary Lemma object\n */\nclass Translation {\n /**\n * Initializes a Translation object.\n * @param {Lemma} lemma - A lemma object.\n * @param [] meanings - A set of definitions.\n\n */\n constructor (lemma, languageCode, translations = []) {\n if (!lemma) {\n throw new Error('Lemma should not be empty.')\n }\n this.lemmaWord = lemma.word\n this.languageCode = languageCode\n this.glosses = translations\n }\n\n static readTranslationFromJSONList (lemma, languageCode, translationsList) {\n if (!translationsList || !Array.isArray(translationsList)) {\n throw new Error('Recieved not proper translation list', translationsList)\n }\n let curTranslations = translationsList.find(function (element) { return element.in === lemma.word })\n return new Translation(lemma, languageCode, curTranslations.translations)\n }\n\n static loadTranslations (lemma, languageCode, translationsList) {\n lemma.addTranslation(this.readTranslationFromJSONList(lemma, languageCode, translationsList))\n }\n}\nexport default Translation\n","module.exports = require(\"crypto\");"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/alpheios-data-models.node.min.js b/dist/alpheios-data-models.node.min.js index 413f2bf..f946704 100644 --- a/dist/alpheios-data-models.node.min.js +++ b/dist/alpheios-data-models.node.min.js @@ -1 +1 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(global,function(){return function(e){var t={};function r(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,a){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(a,n,function(t){return e[t]}.bind(null,n));return a},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}([function(e,t,r){var a=r(1),n=r(3);e.exports=function(e,t,r){var u=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var i=(e=e||{}).random||(e.rng||a)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t)for(var o=0;o<16;++o)t[u+o]=i[o];return t||n(i)}},function(e,t,r){var a=r(2);e.exports=function(){return a.randomBytes(16)}},function(e,t){e.exports=require("crypto")},function(e,t){for(var r=[],a=0;a<256;++a)r[a]=(a+256).toString(16).substr(1);e.exports=function(e,t){var a=t||0,n=r;return[n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]]].join("")}},function(e,t,r){"use strict";r.r(t);var a={};r.r(a),r.d(a,"LANG_UNIT_WORD",function(){return n}),r.d(a,"LANG_UNIT_CHAR",function(){return u}),r.d(a,"LANG_DIR_LTR",function(){return i}),r.d(a,"LANG_DIR_RTL",function(){return o}),r.d(a,"LANG_UNDEFINED",function(){return s}),r.d(a,"LANG_LATIN",function(){return l}),r.d(a,"LANG_GREEK",function(){return c}),r.d(a,"LANG_ARABIC",function(){return f}),r.d(a,"LANG_PERSIAN",function(){return g}),r.d(a,"STR_LANG_CODE_UNDEFINED",function(){return d}),r.d(a,"STR_LANG_CODE_LAT",function(){return p}),r.d(a,"STR_LANG_CODE_LA",function(){return h}),r.d(a,"STR_LANG_CODE_GRC",function(){return m}),r.d(a,"STR_LANG_CODE_ARA",function(){return _}),r.d(a,"STR_LANG_CODE_AR",function(){return E}),r.d(a,"STR_LANG_CODE_FAS",function(){return I}),r.d(a,"STR_LANG_CODE_PER",function(){return y}),r.d(a,"STR_LANG_CODE_FA_IR",function(){return A}),r.d(a,"STR_LANG_CODE_FA",function(){return v}),r.d(a,"POFS_ADJECTIVE",function(){return F}),r.d(a,"POFS_ADVERB",function(){return S}),r.d(a,"POFS_ADVERBIAL",function(){return w}),r.d(a,"POFS_ARTICLE",function(){return C}),r.d(a,"POFS_CONJUNCTION",function(){return D}),r.d(a,"POFS_EXCLAMATION",function(){return b}),r.d(a,"POFS_INTERJECTION",function(){return L}),r.d(a,"POFS_NOUN",function(){return T}),r.d(a,"POFS_NOUN_PROPER",function(){return O}),r.d(a,"POFS_NUMERAL",function(){return N}),r.d(a,"POFS_PARTICLE",function(){return V}),r.d(a,"POFS_PREFIX",function(){return P}),r.d(a,"POFS_PREPOSITION",function(){return R}),r.d(a,"POFS_PRONOUN",function(){return M}),r.d(a,"POFS_SUFFIX",function(){return x}),r.d(a,"POFS_GERUNDIVE",function(){return U}),r.d(a,"POFS_SUPINE",function(){return j}),r.d(a,"POFS_VERB",function(){return G}),r.d(a,"POFS_VERB_PARTICIPLE",function(){return B}),r.d(a,"GEND_MASCULINE",function(){return k}),r.d(a,"GEND_FEMININE",function(){return W}),r.d(a,"GEND_NEUTER",function(){return q}),r.d(a,"GEND_COMMON",function(){return H}),r.d(a,"GEND_ANIMATE",function(){return K}),r.d(a,"GEND_INANIMATE",function(){return $}),r.d(a,"GEND_PERSONAL_MASCULINE",function(){return z}),r.d(a,"GEND_ANIMATE_MASCULINE",function(){return J}),r.d(a,"GEND_INANIMATE_MASCULINE",function(){return X}),r.d(a,"COMP_POSITIVE",function(){return Q}),r.d(a,"COMP_COMPARITIVE",function(){return Y}),r.d(a,"COMP_SUPERLATIVE",function(){return Z}),r.d(a,"CASE_ABESSIVE",function(){return ee}),r.d(a,"CASE_ABLATIVE",function(){return te}),r.d(a,"CASE_ABSOLUTIVE",function(){return re}),r.d(a,"CASE_ACCUSATIVE",function(){return ae}),r.d(a,"CASE_ADDIRECTIVE",function(){return ne}),r.d(a,"CASE_ADELATIVE",function(){return ue}),r.d(a,"CASE_ADESSIVE",function(){return ie}),r.d(a,"CASE_ADVERBIAL",function(){return oe}),r.d(a,"CASE_ALLATIVE",function(){return se}),r.d(a,"CASE_ANTESSIVE",function(){return le}),r.d(a,"CASE_APUDESSIVE",function(){return ce}),r.d(a,"CASE_AVERSIVE",function(){return fe}),r.d(a,"CASE_BENEFACTIVE",function(){return ge}),r.d(a,"CASE_CARITIVE",function(){return de}),r.d(a,"CASE_CAUSAL",function(){return pe}),r.d(a,"CASE_CAUSAL_FINAL",function(){return he}),r.d(a,"CASE_COMITATIVE",function(){return me}),r.d(a,"CASE_DATIVE",function(){return _e}),r.d(a,"CASE_DELATIVE",function(){return Ee}),r.d(a,"CASE_DIRECT",function(){return Ie}),r.d(a,"CASE_DISTRIBUTIVE",function(){return ye}),r.d(a,"CASE_DISTRIBUTIVE_TEMPORAL",function(){return Ae}),r.d(a,"CASE_ELATIVE",function(){return ve}),r.d(a,"CASE_ERGATIVE",function(){return Fe}),r.d(a,"CASE_ESSIVE",function(){return Se}),r.d(a,"CASE_ESSIVE_FORMAL",function(){return we}),r.d(a,"CASE_ESSIVE_MODAL",function(){return Ce}),r.d(a,"CASE_EQUATIVE",function(){return De}),r.d(a,"CASE_EVITATIVE",function(){return be}),r.d(a,"CASE_EXESSIVE",function(){return Le}),r.d(a,"CASE_FINAL",function(){return Te}),r.d(a,"CASE_FORMAL",function(){return Oe}),r.d(a,"CASE_GENITIVE",function(){return Ne}),r.d(a,"CASE_ILLATIVE",function(){return Ve}),r.d(a,"CASE_INELATIVE",function(){return Pe}),r.d(a,"CASE_INESSIVE",function(){return Re}),r.d(a,"CASE_INSTRUCTIVE",function(){return Me}),r.d(a,"CASE_INSTRUMENTAL",function(){return xe}),r.d(a,"CASE_INSTRUMENTAL_COMITATIVE",function(){return Ue}),r.d(a,"CASE_INTRANSITIVE",function(){return je}),r.d(a,"CASE_LATIVE",function(){return Ge}),r.d(a,"CASE_LOCATIVE",function(){return Be}),r.d(a,"CASE_MODAL",function(){return ke}),r.d(a,"CASE_MULTIPLICATIVE",function(){return We}),r.d(a,"CASE_NOMINATIVE",function(){return qe}),r.d(a,"CASE_PARTITIVE",function(){return He}),r.d(a,"CASE_PEGATIVE",function(){return Ke}),r.d(a,"CASE_PERLATIVE",function(){return $e}),r.d(a,"CASE_POSSESSIVE",function(){return ze}),r.d(a,"CASE_POSTELATIVE",function(){return Je}),r.d(a,"CASE_POSTDIRECTIVE",function(){return Xe}),r.d(a,"CASE_POSTESSIVE",function(){return Qe}),r.d(a,"CASE_POSTPOSITIONAL",function(){return Ye}),r.d(a,"CASE_PREPOSITIONAL",function(){return Ze}),r.d(a,"CASE_PRIVATIVE",function(){return et}),r.d(a,"CASE_PROLATIVE",function(){return tt}),r.d(a,"CASE_PROSECUTIVE",function(){return rt}),r.d(a,"CASE_PROXIMATIVE",function(){return at}),r.d(a,"CASE_SEPARATIVE",function(){return nt}),r.d(a,"CASE_SOCIATIVE",function(){return ut}),r.d(a,"CASE_SUBDIRECTIVE",function(){return it}),r.d(a,"CASE_SUBESSIVE",function(){return ot}),r.d(a,"CASE_SUBELATIVE",function(){return st}),r.d(a,"CASE_SUBLATIVE",function(){return lt}),r.d(a,"CASE_SUPERDIRECTIVE",function(){return ct}),r.d(a,"CASE_SUPERESSIVE",function(){return ft}),r.d(a,"CASE_SUPERLATIVE",function(){return gt}),r.d(a,"CASE_SUPPRESSIVE",function(){return dt}),r.d(a,"CASE_TEMPORAL",function(){return pt}),r.d(a,"CASE_TERMINATIVE",function(){return ht}),r.d(a,"CASE_TRANSLATIVE",function(){return mt}),r.d(a,"CASE_VIALIS",function(){return _t}),r.d(a,"CASE_VOCATIVE",function(){return Et}),r.d(a,"MOOD_ADMIRATIVE",function(){return It}),r.d(a,"MOOD_COHORTATIVE",function(){return yt}),r.d(a,"MOOD_CONDITIONAL",function(){return At}),r.d(a,"MOOD_DECLARATIVE",function(){return vt}),r.d(a,"MOOD_DUBITATIVE",function(){return Ft}),r.d(a,"MOOD_ENERGETIC",function(){return St}),r.d(a,"MOOD_EVENTIVE",function(){return wt}),r.d(a,"MOOD_GENERIC",function(){return Ct}),r.d(a,"MOOD_GERUNDIVE",function(){return Dt}),r.d(a,"MOOD_HYPOTHETICAL",function(){return bt}),r.d(a,"MOOD_IMPERATIVE",function(){return Lt}),r.d(a,"MOOD_INDICATIVE",function(){return Tt}),r.d(a,"MOOD_INFERENTIAL",function(){return Ot}),r.d(a,"MOOD_INFINITIVE",function(){return Nt}),r.d(a,"MOOD_INTERROGATIVE",function(){return Vt}),r.d(a,"MOOD_JUSSIVE",function(){return Pt}),r.d(a,"MOOD_NEGATIVE",function(){return Rt}),r.d(a,"MOOD_OPTATIVE",function(){return Mt}),r.d(a,"MOOD_PARTICIPLE",function(){return xt}),r.d(a,"MOOD_PRESUMPTIVE",function(){return Ut}),r.d(a,"MOOD_RENARRATIVE",function(){return jt}),r.d(a,"MOOD_SUBJUNCTIVE",function(){return Gt}),r.d(a,"MOOD_SUPINE",function(){return Bt}),r.d(a,"NUM_SINGULAR",function(){return kt}),r.d(a,"NUM_PLURAL",function(){return Wt}),r.d(a,"NUM_DUAL",function(){return qt}),r.d(a,"NUM_TRIAL",function(){return Ht}),r.d(a,"NUM_PAUCAL",function(){return Kt}),r.d(a,"NUM_SINGULATIVE",function(){return $t}),r.d(a,"NUM_COLLECTIVE",function(){return zt}),r.d(a,"NUM_DISTRIBUTIVE_PLURAL",function(){return Jt}),r.d(a,"NRL_CARDINAL",function(){return Xt}),r.d(a,"NRL_ORDINAL",function(){return Qt}),r.d(a,"NRL_DISTRIBUTIVE",function(){return Yt}),r.d(a,"NURL_NUMERAL_ADVERB",function(){return Zt}),r.d(a,"ORD_1ST",function(){return er}),r.d(a,"ORD_2ND",function(){return tr}),r.d(a,"ORD_3RD",function(){return rr}),r.d(a,"ORD_4TH",function(){return ar}),r.d(a,"ORD_5TH",function(){return nr}),r.d(a,"ORD_6TH",function(){return ur}),r.d(a,"ORD_7TH",function(){return ir}),r.d(a,"ORD_8TH",function(){return or}),r.d(a,"ORD_9TH",function(){return sr}),r.d(a,"TENSE_AORIST",function(){return lr}),r.d(a,"TENSE_FUTURE",function(){return cr}),r.d(a,"TENSE_FUTURE_PERFECT",function(){return fr}),r.d(a,"TENSE_IMPERFECT",function(){return gr}),r.d(a,"TENSE_PAST_ABSOLUTE",function(){return dr}),r.d(a,"TENSE_PERFECT",function(){return pr}),r.d(a,"TENSE_PLUPERFECT",function(){return hr}),r.d(a,"TENSE_PRESENT",function(){return mr}),r.d(a,"VKIND_TO_BE",function(){return _r}),r.d(a,"VKIND_COMPOUNDS_OF_TO_BE",function(){return Er}),r.d(a,"VKIND_TAKING_ABLATIVE",function(){return Ir}),r.d(a,"VKIND_TAKING_DATIVE",function(){return yr}),r.d(a,"VKIND_TAKING_GENITIVE",function(){return Ar}),r.d(a,"VKIND_TRANSITIVE",function(){return vr}),r.d(a,"VKIND_INTRANSITIVE",function(){return Fr}),r.d(a,"VKIND_IMPERSONAL",function(){return Sr}),r.d(a,"VKIND_DEPONENT",function(){return wr}),r.d(a,"VKIND_SEMIDEPONENT",function(){return Cr}),r.d(a,"VKIND_PERFECT_DEFINITE",function(){return Dr}),r.d(a,"VOICE_ACTIVE",function(){return br}),r.d(a,"VOICE_PASSIVE",function(){return Lr}),r.d(a,"VOICE_MEDIOPASSIVE",function(){return Tr}),r.d(a,"VOICE_IMPERSONAL_PASSIVE",function(){return Or}),r.d(a,"VOICE_MIDDLE",function(){return Nr}),r.d(a,"VOICE_ANTIPASSIVE",function(){return Vr}),r.d(a,"VOICE_REFLEXIVE",function(){return Pr}),r.d(a,"VOICE_RECIPROCAL",function(){return Rr}),r.d(a,"VOICE_CAUSATIVE",function(){return Mr}),r.d(a,"VOICE_ADJUTATIVE",function(){return xr}),r.d(a,"VOICE_APPLICATIVE",function(){return Ur}),r.d(a,"VOICE_CIRCUMSTANTIAL",function(){return jr}),r.d(a,"VOICE_DEPONENT",function(){return Gr}),r.d(a,"TYPE_IRREGULAR",function(){return Br}),r.d(a,"TYPE_REGULAR",function(){return kr}),r.d(a,"CLASS_PERSONAL",function(){return Wr}),r.d(a,"CLASS_REFLEXIVE",function(){return qr}),r.d(a,"CLASS_POSSESSIVE",function(){return Hr}),r.d(a,"CLASS_DEMONSTRATIVE",function(){return Kr}),r.d(a,"CLASS_RELATIVE",function(){return $r}),r.d(a,"CLASS_INTERROGATIVE",function(){return zr}),r.d(a,"CLASS_GENERAL_RELATIVE",function(){return Jr}),r.d(a,"CLASS_INDEFINITE",function(){return Xr}),r.d(a,"CLASS_INTENSIVE",function(){return Qr}),r.d(a,"CLASS_RECIPROCAL",function(){return Yr});const n=Symbol("word"),u=Symbol("char"),i=Symbol("ltr"),o=Symbol("rtl"),s=Symbol("undefined"),l=Symbol("latin"),c=Symbol("greek"),f=Symbol("arabic"),g=Symbol("persian"),d="undefined",p="lat",h="la",m="grc",_="ara",E="ar",I="fas",y="per",A="fa-IR",v="fa",F="adjective",S="adverb",w="adverbial",C="article",D="conjunction",b="exclamation",L="interjection",T="noun",O="proper noun",N="numeral",V="particle",P="prefix",R="preposition",M="pronoun",x="suffix",U="gerundive",j="supine",G="verb",B="verb participle",k="masculine",W="feminine",q="neuter",H="common",K="animate",$="inanimate",z="personal masculine",J="animate masculine",X="inanimate masculine",Q="positive",Y="comparative",Z="superlative",ee="abessive",te="ablative",re="absolutive",ae="accusative",ne="addirective",ue="adelative",ie="adessive",oe="adverbial",se="allative",le="antessive",ce="apudessive",fe="aversive",ge="benefactive",de="caritive",pe="causal",he="causal-final",me="comitative",_e="dative",Ee="delative",Ie="direct",ye="distributive",Ae="distributive-temporal",ve="elative",Fe="ergative",Se="essive",we="essive-formal",Ce="essive-modal",De="equative",be="evitative",Le="exessive",Te="final",Oe="formal",Ne="genitive",Ve="illative",Pe="inelative",Re="inessive",Me="instructive",xe="instrumental",Ue="instrumental-comitative",je="intransitive",Ge="lative",Be="locative",ke="modal",We="multiplicative",qe="nominative",He="partitive",Ke="pegative",$e="perlative",ze="possessive",Je="postelative",Xe="postdirective",Qe="postessive",Ye="postpositional",Ze="prepositional",et="privative",tt="prolative",rt="prosecutive",at="proximative",nt="separative",ut="sociative",it="subdirective",ot="subessive",st="subelative",lt="sublative",ct="superdirective",ft="superessive",gt="superlative",dt="suppressive",pt="temporal",ht="terminative",mt="translative",_t="vialis",Et="vocative",It="admirative",yt="cohortative",At="conditional",vt="declarative",Ft="dubitative",St="energetic",wt="eventive",Ct="generic",Dt="gerundive",bt="hypothetical",Lt="imperative",Tt="indicative",Ot="inferential",Nt="infinitive",Vt="interrogative",Pt="jussive",Rt="negative",Mt="optative",xt="participle",Ut="presumptive",jt="renarrative",Gt="subjunctive",Bt="supine",kt="singular",Wt="plural",qt="dual",Ht="trial",Kt="paucal",$t="singulative",zt="collective",Jt="distributive plural",Xt="cardinal",Qt="ordinal",Yt="distributive",Zt="numeral adverb",er="1st",tr="2nd",rr="3rd",ar="4th",nr="5th",ur="6th",ir="7th",or="8th",sr="9th",lr="aorist",cr="future",fr="future perfect",gr="imperfect",dr="past absolute",pr="perfect",hr="pluperfect",mr="present",_r="to be",Er="compounds of to be",Ir="taking ablative",yr="taking dative",Ar="taking genitive",vr="transitive",Fr="intransitive",Sr="impersonal",wr="deponent",Cr="semideponent",Dr="perfect definite",br="active",Lr="passive",Tr="mediopassive",Or="impersonal passive",Nr="middle",Vr="antipassive",Pr="reflexive",Rr="reciprocal",Mr="causative",xr="adjutative",Ur="applicative",jr="circumstantial",Gr="deponent",Br="irregular",kr="regular",Wr="personal",qr="reflexive",Hr="possessive",Kr="demonstrative",$r="relative",zr="interrogative",Jr="general relative",Xr="indefinite",Qr="intensive",Yr="reciprocal";class Definition{constructor(e,t,r,a){this.text=e,this.language=t,this.format=r,this.lemmaText=a}static readObject(e){return new Definition(e.text,e.language,e.format,e.lemmaText)}}var Zr=Definition;class definition_set_DefinitionSet{constructor(e,t){this.lemmaWord=e,this.languageID=t,this.shortDefs=[],this.fullDefs=[]}static readObject(e){let t=new definition_set_DefinitionSet(e.lemmaWord,e.languageID);for(let r of e.shortDefs)t.shortDefs.push(Zr.readObject(r));for(let r of e.fullDefs)t.fullDefs.push(Zr.readObject(r));return t}isEmpty(){return 0===this.shortDefs.length&&0===this.fullDefs.length}appendShortDefs(e){return e&&(Array.isArray(e)||(e=[e]),this.shortDefs=this.shortDefs.concat(e)),this.shortDefs}clearShortDefs(){this.shortDefs=[]}appendFullDefs(e){return e&&(Array.isArray(e)||(e=[e]),this.fullDefs=this.fullDefs.concat(e)),this.fullDefs}clearFullDefs(){this.fullDefs=[]}}var ea=class{constructor(e=[],t=!1){this.hash={};for(let t of e)this.map(t,t);return this.returnUnknown=t,this}map(e,t){if(!e)throw new Error("Imported value should not be empty.");if(!t)throw new Error("Library value should not be empty.");return this.hash[e]=t,this}has(e){return this.hash.hasOwnProperty(e)}get(e){if(this.has(e))return this.hash[e];if(this.returnUnknown)return e;throw new Error('A value "'+e+'" is not found in the importer.')}};class feature_type_FeatureType{constructor(e,t,r){if(!t||!Array.isArray(t))throw new Error("Values should be an array (or an empty array) of values.");if(!r)throw new Error("FeatureType constructor requires a language");this.type=e,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(r)),this._orderIndex=[],this._orderLookup={};for(const[e,r]of t.entries())if(this._orderIndex.push(r),Array.isArray(r))for(let t of r)this[t]=new feature_Feature(this.type,t,this.languageID),this._orderLookup[t]=e;else this[r]=new feature_Feature(this.type,r,this.languageID),this._orderLookup[r]=e}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}hasUnrestrictedValue(){return 1===this.orderedValues.length&&this.orderedValues[0]===feature_type_FeatureType.UNRESTRICTED_VALUE}get(e,t=1){if(e)return new feature_Feature(this.type,[[e,t]],this.languageID);throw new Error("A non-empty value should be provided.")}getValues(e){return new feature_Feature(this.type,e,this.languageID)}getFromImporter(e,t){let r;try{r=this.importer[e].get(t)}catch(e){r=this.get(t)}return r}addImporter(e){if(!e)throw new Error("Importer should have a non-empty name.");return this.importer=this.importer||{},this.importer[e]=this.importer[e]||new ea,this.importer[e]}get orderedFeatures(){return this.orderedValues.map(e=>new feature_Feature(this.type,e,this.languageID))}get orderedValues(){return this._orderIndex}get orderLookup(){return this._orderLookup}set order(e){if(!e||Array.isArray(e)&&0===e.length)throw new Error("A non-empty list of values should be provided.");Array.isArray(e)||(e=[e]);for(let t of e)if(Array.isArray(t))for(let e of t){if(!this.hasOwnProperty(e.value))throw new Error('Trying to order an element with "'+e.value+'" value that is not stored in a "'+this.type+'" type.');if(e.type!==this.type)throw new Error('Trying to order an element with type "'+e.type+'" that is different from "'+this.type+'".');if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error(`Trying to order an element with language "${e.languageID.toString()}" that is different from "${this.languageID.toString()}"`)}else{if(!this.hasOwnProperty(t.value))throw new Error('Trying to order an element with "'+t.value+'" value that is not stored in a "'+this.type+'" type.');if(t.type!==this.type)throw new Error('Trying to order an element with type "'+t.type+'" that is different from "'+this.type+'".');if(!pa.compareLanguages(t.languageID,this.languageID))throw new Error(`Trying to order an element with language "${t.languageID.toString()}" that is different from "${this.languageID.toString()}"`)}this._orderLookup={},this._orderIndex=[];for(const[t,r]of e.entries())if(Array.isArray(r)){let e=[];for(const a of r)this._orderLookup[a.value]=t,e.push(a.value);this._orderIndex[t]=e}else this._orderLookup[r.value]=t,this._orderIndex[t]=r.value}}feature_type_FeatureType.UNRESTRICTED_VALUE=Symbol("unrestricted");var ta=feature_type_FeatureType;var ra=class{constructor(e,t,r={}){for(let r of t)this[r]=e[r];Object.assign(this,r)}hasFeatureValue(e,t){return!!this.hasOwnProperty(e)&&this[e].values.includes(t)}toString(){let e=[];for(let t of Object.getOwnPropertyNames(this).sort()){let r=this[t]instanceof feature_Feature?this[t].values.sort().join(","):this[t];e.push(r)}return e.join(" ")}};var aa=class{constructor(e,t=[],r=null){this.groupingKey=e,this.inflections=t}append(e){this.inflections.push(e)}};class language_model_LanguageModel{constructor(){this.context_backward=language_model_LanguageModel.contextBackward}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}get contextForward(){return console.warn('Please use static "contextForward" instead'),this.constructor.contextForward}get contextBackward(){return console.warn('Please use static "contextBackward" instead'),this.constructor.contextBackward}get direction(){return console.warn('Please use static "direction" instead'),this.constructor.direction}get baseUnit(){return console.warn('Please use static "baseUnit" instead'),this.constructor.baseUnit}get features(){return console.warn('Please use individual "getFeatureType" or static "features" instead'),this.constructor.features}static get featureNames(){return this.featureValues.keys()}static typeFeature(e){if(this.typeFeatures.has(e))return this.typeFeatures.get(e);throw new Error(`Type feature "${e}" is not defined within "${this}"`)}static get typeFeatures(){console.warn("This getter must be defined in a descendant class")}static get features(){let e={};for(const t of this.featureNames)e[t]=this.getFeature(t);return e}static get languageID(){return s}static get languageCode(){return d}static get languageCodes(){return[]}static get codes(){return console.warn('Use static "languageCodes" instead'),this.languageCodes}get codes(){return console.warn('Please use a static version of "codes" instead'),this.constructor.languageCodes}toCode(){return console.warn('Please use a static "languageCode" instead'),this.constructor.languageCode}static toCode(){return console.warn('Please use a static "languageCode" instead'),this.languageCode}static get featureValues(){return new Map([[feature_Feature.types.part,[S,w,F,C,D,b,L,T,N,V,P,R,M,x,j,G,B]],[feature_Feature.types.gender,[k,W,q]],[feature_Feature.types.type,[kr,Br]],[feature_Feature.types.person,[er,tr,rr]],[feature_Feature.types.age,[]],[feature_Feature.types.area,[]],[feature_Feature.types.source,[]],[feature_Feature.types.frequency,[]],[feature_Feature.types.geo,[]],[feature_Feature.types.pronunciation,[]],[feature_Feature.types.kind,[]],[feature_Feature.types.comparison,[]],[feature_Feature.types.morph,[]],[feature_Feature.types.stemtype,[]],[feature_Feature.types.derivtype,[]]])}static get sourceLanguage(){return console.warn("Please use languageID directly"),this.languageID}get sourceLanguage(){return console.warn("Please use languageID directly"),this.constructor.languageID}static getFeatureType(e){console.warn("Please use getFeature instead");let t=this.featureValues;if(t.has(e))return new ta(e,t.get(e),this.languageID);throw new Error(`Feature "${e}" is not defined`)}static getFeature(e){let t=this.featureValues;if(t.has(e)){let r=t.get(e);return new feature_Feature(e,r,this.languageID,1,r)}throw new Error(`Feature "${e}" is not defined`)}_initializeFeatures(){let e={};for(const t of this.constructor.featureValues.keys())e[t]=this.constructor.getFeature(t);return e}grammarFeatures(){return console.warn('Please use a static version of "grammarFeatures" instead'),this.constructor.grammarFeatures()}static grammarFeatures(){return[]}static canInflect(e){return!1}static supportsLanguage(e){return this.languageCodes.includes[e]}static normalizeWord(e){return e}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}alternateWordEncodings(e,t,r,a){return console.warn('Please use static "alternateWordEncodings" instead'),this.constructor.alternateWordEncodings(e,t,r,a)}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}getPunctuation(){return console.warn('Please use a static version of "getPunctuation"'),this.constructor.getPunctuation()}toString(){return String(this.constructor.languageCode)}isEqual(e){return pa.compareLanguages(this.languageID,e.languageID)}static hasCode(e){if(this.isLanguageCode(e))return this.languageCodes.includes(e);throw new Error(`Format of a "${e}" is incorrect`)}static isLanguageID(e){return"symbol"==typeof e}static isLanguageCode(e){return!language_model_LanguageModel.isLanguageID(e)}canInflect(e){return console.warn('Please use a static version of "canInflect" instead'),this.constructor.canInflect(e)}static groupInflectionsForDisplay(e){let t=new Map,r=this.aggregateInflectionsForDisplay(e);for(let e of r){let r=new ra(e,[feature_Feature.types.part,feature_Feature.types.declension,feature_Feature.types.dialect,feature_Feature.types.comparison],{prefix:e.prefix,suffix:e.suffix,stem:e.stem}),a=r.toString();t.has(a)?t.get(a).append(e):t.set(a,new aa(r,[e]))}for(let e of t){let t=new Map;for(let r of e[1].inflections){let e,a=!1;r[feature_Feature.types.grmCase]?(e=feature_Feature.types.number,a=!0):e=r[feature_Feature.types.tense]?feature_Feature.types.tense:r[feature_Feature.types.part]===G?feature_Feature.types.part:r[feature_Feature.types.part]===S?feature_Feature.types.part:"misc";let n=new ra(r,[e],{isCaseInflectionSet:a}),u=n.toString();t.has(u)?t.get(u).append(r):t.set(u,new aa(n,[r]))}for(let e of t){let t=new Map,r=new Map;for(let a of e[1].inflections){let e=a[feature_Feature.types.grmCase]?Math.max(a[feature_Feature.types.grmCase].items.map(e=>e.sortOrder)):1,n=new ra(a,[feature_Feature.types.tense,feature_Feature.types.voice]),u=n.toString();t.has(u)?t.get(u).append(a):(t.set(u,new aa(n,[a],e)),r.set(u,e))}e[1].inflections=[];let a=Array.from(t.keys()).sort((e,t)=>{let a=r.get(e),n=r.get(t);return a>n?-1:n>a?1:0});for(let r of a)e[1].inflections.push(t.get(r))}for(let e of t){let t=e[1];for(let e of t.inflections){let t=new Map;for(let r of e.inflections){let e=new ra(r,[feature_Feature.types.grmCase,feature_Feature.types.comparison,feature_Feature.types.gender,feature_Feature.types.number,feature_Feature.types.person,feature_Feature.types.tense,feature_Feature.types.mood,feature_Feature.types.voice]),a=e.toString();t.has(a)?t.get(a).append(r):t.set(a,new aa(e,[r]))}e.inflections=Array.from(t.values())}}e[1].inflections=Array.from(t.values())}return Array.from(t.values())}static aggregateInflectionsForDisplay(e){return e}groupInflectionsForDisplay(e){return console.warn('Please use a static version of "groupInflectionsForDisplay" instead'),this.constructor.groupInflectionsForDisplay(e)}}var na=language_model_LanguageModel;let ua=new Map,ia=!1;class latin_language_model_LatinLanguageModel extends na{static get languageID(){return l}static get languageCode(){return p}static get languageCodes(){return[h,p]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}static get featureValues(){return new Map([...na.featureValues,[feature_Feature.types.grmClass,[Wr,qr,Hr,Kr,$r,zr]],[feature_Feature.types.number,[kt,Wt]],[feature_Feature.types.grmCase,[qe,Ne,_e,ae,te,Be,Et]],[feature_Feature.types.declension,[er,tr,rr,ar,nr]],[feature_Feature.types.tense,[mr,gr,cr,pr,hr,fr]],[feature_Feature.types.voice,[br,Lr]],[feature_Feature.types.mood,[Tt,Gt,Lt,xt,Bt,Dt,xt,Nt]],[feature_Feature.types.conjugation,[er,tr,rr,ar]]])}static get typeFeatures(){return ia||this.initTypeFeatures(),ua}static initTypeFeatures(){for(const e of this.featureNames)ua.set(e,this.getFeature(e));ia=!0}static grammarFeatures(){return[feature_Feature.types.part,feature_Feature.types.grmCase,feature_Feature.types.mood,feature_Feature.types.declension,feature_Feature.types.tense,feature_Feature.types.conjugation]}static canInflect(e){return!0}static normalizeWord(e){return e&&(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/[\u00c0\u00c1\u00c2\u00c3\u00c4\u0100\u0102]/g,"A")).replace(/[\u00c8\u00c9\u00ca\u00cb\u0112\u0114]/g,"E")).replace(/[\u00cc\u00cd\u00ce\u00cf\u012a\u012c]/g,"I")).replace(/[\u00d2\u00d3\u00d4\u00df\u00d6\u014c\u014e]/g,"O")).replace(/[\u00d9\u00da\u00db\u00dc\u016a\u016c]/g,"U")).replace(/[\u00c6\u01e2]/g,"AE")).replace(/[\u0152]/g,"OE")).replace(/[\u00e0\u00e1\u00e2\u00e3\u00e4\u0101\u0103]/g,"a")).replace(/[\u00e8\u00e9\u00ea\u00eb\u0113\u0115]/g,"e")).replace(/[\u00ec\u00ed\u00ee\u00ef\u012b\u012d\u0129]/g,"i")).replace(/[\u00f2\u00f3\u00f4\u00f5\u00f6\u014d\u014f]/g,"o")).replace(/[\u00f9\u00fa\u00fb\u00fc\u016b\u016d]/g,"u")).replace(/[\u00e6\u01e3]/g,"ae")).replace(/[\u0153]/g,"oe")),e}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static getInflectionConstraints(e){let t={fullFormBased:!1,suffixBased:!1,pronounClassRequired:!1};return e.hasOwnProperty(feature_Feature.types.part)?[G,B].includes(e[feature_Feature.types.part].value)?(t.fullFormBased=!0,t.suffixBased=!0):e[feature_Feature.types.part].value===M?t.fullFormBased=!0:t.suffixBased=!0:console.warn("Unable to set grammar: part of speech data is missing or is incorrect",e[feature_Feature.types.part]),t}}let oa=new Map,sa=!1;class greek_language_model_GreekLanguageModel extends na{static get languageID(){return c}static get languageCode(){return m}static get languageCodes(){return[m]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}static get featureValues(){return new Map([...na.featureValues,[feature_Feature.types.grmClass,[Kr,Jr,Xr,Qr,zr,Wr,Hr,Yr,qr,$r]],[feature_Feature.types.number,[kt,Wt,qt]],[feature_Feature.types.grmCase,[qe,Ne,_e,ae,Et]],[feature_Feature.types.declension,[er,tr,rr]],[feature_Feature.types.tense,[mr,gr,cr,pr,hr,fr,lr]],[feature_Feature.types.voice,[Lr,br,Tr,Nr]],[feature_Feature.types.mood,[Tt,Gt,Mt,Lt]],[feature_Feature.types.dialect,["attic","epic","doric"]]])}static get typeFeatures(){return sa||this.initTypeFeatures(),oa}static initTypeFeatures(){for(const e of this.featureNames)oa.set(e,this.getFeature(e));sa=!0}static canInflect(e){return!0}static grammarFeatures(){return[feature_Feature.types.part,feature_Feature.types.grmCase,feature_Feature.types.mood,feature_Feature.types.declension,feature_Feature.types.tense,feature_Feature.types.voice]}static normalizeWord(e){return e?e.normalize("NFC"):e}static alternateWordEncodings(e,t=null,r=null,a=null){let n=greek_language_model_GreekLanguageModel.normalizeWord(e).toLocaleLowerCase(),u=n.replace(/[\u{1FB0}\u{1FB1}]/gu,"α").replace(/[\u{1FB8}\u{1FB9}]/gu,"Α").replace(/[\u{1FD0}\u{1FD1}]/gu,"ι").replace(/[\u{1FD8}\u{1FD9}]/gu,"Ι").replace(/[\u{1FE0}\u{1FE1}]/gu,"υ").replace(/[\u{1FE8}\u{1FE9}]/gu,"Υ").replace(/[\u{00AF}\u{0304}\u{0306}]/gu,""),i=n.replace(/\u{0390}/gu,"ί").replace(/\u{03AA}/gu,"Ι").replace(/\u{03AB}/gu,"Υ").replace(/\u{03B0}/gu,"ύ").replace(/\u{03CA}/gu,"ι").replace(/\u{03CB}/gu,"υ").replace(/\u{1FD2}/gu,"ὶ").replace(/\u{1FD3}/gu,"ί").replace(/\u{1FD7}/gu,"ῖ").replace(/\u{1FE2}/gu,"ὺ").replace(/\u{1FE3}/gu,"ύ").replace(/\u{1FE7}/gu,"ῦ").replace(/\u{1FC1}/gu,"῀").replace(/\u{1FED}/gu,"`").replace(/\u{1FEE}/gu,"´").replace(/[\u{00A8}\u{0308}]/gu,"");return"strippedDiaeresis"===a?[i]:[u]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static getInflectionConstraints(e){let t={fullFormBased:!1,suffixBased:!1,pronounClassRequired:!1},r=[M,N,C];return e.hasOwnProperty(feature_Feature.types.part)?r.includes(e[feature_Feature.types.part].value)?t.fullFormBased=!0:t.suffixBased=!0:console.warn("Unable to set grammar: part of speech data is missing or is incorrect",e[feature_Feature.types.part]),t.pronounClassRequired=pa.compareLanguages(greek_language_model_GreekLanguageModel.languageID,e.languageID)&&e.hasOwnProperty(feature_Feature.types.part)&&e[feature_Feature.types.part].value===M,t}static getPronounClasses(e,t,r=!0){let a=new Set,n=e.filter(e=>{let a=!1;return e.value&&(a=r?greek_language_model_GreekLanguageModel.normalizeWord(e.value)===greek_language_model_GreekLanguageModel.normalizeWord(t):e.value===t),a});for(const e of n)if(e.features.hasOwnProperty(feature_Feature.types.grmClass))for(const t of e.features[feature_Feature.types.grmClass].values)a.add(t);if(a.size>0)return new feature_Feature(feature_Feature.types.grmClass,Array.from(a),greek_language_model_GreekLanguageModel.languageID)}}let la=new Map,ca=!1;class arabic_language_model_ArabicLanguageModel extends na{static get languageID(){return f}static get languageCode(){return _}static get languageCodes(){return[_,E]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return o}static get baseUnit(){return n}static get typeFeatures(){return ca||this.initTypeFeatures(),la}static initTypeFeatures(){for(const e of this.featureNames)la.set(e,this.getFeature(e));ca=!0}static canInflect(e){return!1}static alternateWordEncodings(e,t=null,r=null,a=null){let n=e.replace(/[\u{064B}\u{064C}\u{064D}\u{0640}]/gu,""),u=n.replace(/[\u{0622}\u{0623}\u{0625}]/gu,"ا"),i=u.replace(/[\u{064E}\u{064F}\u{0650}\u{0670}\u{0671}]/gu,""),o=i.replace(/\u{0651}/gu,""),s=o.replace(/\u{0652}/gu,""),l=s.replace(/\u{0627}/gu,""),c=new Map([["tanwin",n],["hamza",u],["harakat",i],["shadda",o],["sukun",s],["alef",l]]);return null!==a&&c.has(a)?[c.get(a)]:Array.from(c.values())}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static aggregateInflectionsForDisplay(e){let t=[],r={[T]:[],[F]:[],[O]:[]};for(let a of e)a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/ADJ[uaiNK]/)?r[F].push(a):a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/NOUN[uaiNK]/)?r[T].push(a):a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)?r[O].push(a):(a.example=null,t.push(a));for(let e of Object.keys(r)){1!==t.filter(t=>t[feature_Feature.types.part].value===e).length&&t.push(...r[e])}return t}}let fa=new Map,ga=!1;class persian_language_model_PersianLanguageModel extends na{static get languageID(){return g}static get languageCode(){return y}static get languageCodes(){return[y,I,v,A]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return o}static get baseUnit(){return n}static get typeFeatures(){return ga||this.initTypeFeatures(),fa}static initTypeFeatures(){for(const e of this.featureNames)fa.set(e,this.getFeature(e));ga=!0}static canInflect(e){return!1}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}}const da=new Map([[h,latin_language_model_LatinLanguageModel],[p,latin_language_model_LatinLanguageModel],[m,greek_language_model_GreekLanguageModel],[_,arabic_language_model_ArabicLanguageModel],[E,arabic_language_model_ArabicLanguageModel],[y,persian_language_model_PersianLanguageModel]]);class language_model_factory_LanguageModelFactory{static supportsLanguage(e){return e="symbol"==typeof e?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e):e,da.has(e)}static getLanguageModel(e){let t=language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e);return da.has(t)?da.get(t):na}static getLanguageForCode(e=null){let t=da.get(e);return t?new t:new na}static getLanguageIdFromCode(e){for(const t of da.values())if(t.hasCode(e))return t.languageID;return s}static getLanguageCodeFromId(e){for(const t of da.values())if(t.languageID.toString()===e.toString())return t.languageCode;return d}static getLanguageAttrs(e){return"symbol"==typeof e?{languageID:e,languageCode:language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e)}:{languageID:language_model_factory_LanguageModelFactory.getLanguageIdFromCode(e),languageCode:e}}static compareLanguages(e,t){return(e="symbol"==typeof e?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e):e)===(t="symbol"==typeof t?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(t):t)}}var pa=language_model_factory_LanguageModelFactory;const ha={en:{feminine:{full:"feminine",abbr:"f."},masculine:{full:"masculine",abbr:"m."},neuter:{full:"neuter",abbr:"n."},nominative:{full:"nominative",abbr:"nom."},accusative:{full:"accusative",abbr:"acc."},genitive:{full:"genitive",abbr:"gen."},vocative:{full:"vocative",abbr:"voc."},ablative:{full:"ablative",abbr:"abl."},locative:{full:"locative",abbr:"loc."},dative:{full:"dative",abbr:"dat."},positive:{full:"positive",abbr:"pos."},comparative:{full:"comparative",abbr:"comp."},superlative:{full:"superlative",abbr:"super."},singular:{full:"singular",abbr:"s."},plural:{full:"plural",abbr:"p."},dual:{full:"dual",abbr:"dl."},present:{full:"present",abbr:"pr."},imperfect:{full:"imperfect",abbr:"imp."},perfect:{full:"perfect",abbr:"perf."},pluperfect:{full:"pluperfect",abbr:"pluperf."},plusquamperfect:{full:"plusquamperfect",abbr:"pqpf."},"future perfect":{full:"future perfect",abbr:"fut. perf."},future:{full:"future",abbr:"fut."},aorist:{full:"aorist",abbr:"aor."},indicative:{full:"indicative",abbr:"ind."},subjunctive:{full:"subjunctive",abbr:"sub."},infinitive:{full:"infinitive",abbr:"inf."},imperative:{full:"imperative",abbr:"imp."},supine:{full:"supine",abbr:"sup."},participle:{full:"participle",abbr:"par."},optative:{full:"optative",abbr:"opt."},active:{full:"active",abbr:"act."},passive:{full:"passive",abbr:"pass."},middle:{full:"middle",abbr:"mid."},mediopassive:{full:"mediopassive",abbr:"mp."},deponens:{full:"deponens",abbr:"dep."}}};class feature_Feature{constructor(e,t,r,a=1,n=[]){if(!feature_Feature.isAllowedType(e))throw new Error('Features of "'+e+'" type are not supported.');if(!t)throw new Error("Feature should have a non-empty value(s).");if(!r)throw new Error("No language ID is provided");this.type=e,this.languageID=r,this.sortOrder=a,this.allowedValues=n,this._data=feature_Feature.dataValuesFromInput(t),this.sort()}static dataValuesFromInput(e){let t;return(t=Array.isArray(e)?Array.isArray(e[0])?e:e.map((t,r)=>[t,e.length-r]):[[e,this.defaultSortOrder]]).map(e=>({value:e[0],sortOrder:Number.parseInt(e[1])}))}static newFromFtr(e){}static get types(){return{word:"word",fullForm:"full form",hdwd:"headword",part:"part of speech",number:"number",case:"case",grmCase:"case",declension:"declension",gender:"gender",type:"type",class:"class",grmClass:"class",conjugation:"conjugation",comparison:"comparison",tense:"tense",voice:"voice",mood:"mood",person:"person",frequency:"frequency",meaning:"meaning",source:"source",footnote:"footnote",dialect:"dialect",note:"note",pronunciation:"pronunciation",age:"age",area:"area",geo:"geo",kind:"kind",derivtype:"derivtype",stemtype:"stemtype",morph:"morph",var:"var"}}static isAllowedType(e){return Object.values(this.types).includes(`${e}`)}static get defaultSortOrder(){return 1}static get joinSeparator(){return" "}static get defaultImporterName(){return"default"}get allowsUnrestrictedValues(){return 0===this.allowedValues.length}sort(){this._data.sort((e,t)=>e.sortOrder!==t.sortOrder?t.sortOrder-e.sortOrder:e.value.localeCompare(t.value))}compareTo(e){return e._data[0].sortOrder-this._data[0].sortOrder}get items(){return this._data}get value(){return this.values.join(this.constructor.joinSeparator)}get values(){return this._data.map(e=>e.value)}getValue(e){return this._data.find(t=>t.value===e)}get valQty(){return this._data.length}get isEmpty(){return 0===this.valQty}get isSingle(){return 1===this.valQty}get isMultiple(){return this.valQty>1}toString(){return this.value}hasValue(e){return this.values.includes(e)}hasValues(e){let t=!0;for(let r of e)t=t&&this.hasValue(r);return t}hasSomeValues(e){let t=!1;for(let r of e)t=t||this.hasValue(r);return t}get valuesUnrestricted(){return 0===this.allowedValues.length}isEqual(e){return this.type===e.type&&pa.compareLanguages(this.languageID,e.languageID)&&this.value===e.value}addValue(e,t=this.constructor.defaultSortOrder){return this.hasValue(e)?console.warn(`Value "${e}" already exists. If you want to change it, use "getValue" to access it directly.`):(this._data.push({value:e,sortOrder:t}),this.sort()),this}addValues(e){let t=this.constructor.dataValuesFromInput(e),r=t.map(e=>e.value);return this.hasSomeValues(r)?console.warn(`One or several values from "${r}" already exist. If you want to change it, use "getValue" to access a value directly.`):(this._data=this._data.concat(t),this.sort()),this}removeValue(e){console.warn("This feature is not implemented yet")}createFeature(e,t=this.constructor.defaultSortOrder){return new feature_Feature(this.type,[[e,t]],this.languageID,this.sortOrder,this.allowedValues)}createFeatures(e){return new feature_Feature(this.type,e,this.languageID,this.sortOrder,this.allowedValues)}get ownFeatures(){return this.values.map(e=>new feature_Feature(this.type,e,this.languageID,1,this.allowedValues))}getCopy(){let e=this._data.map(e=>[e.value,e.sortOrder]);return new feature_Feature(this.type,e,this.languageID,this.sortOrder,this.allowedValues.slice())}toLocaleStringAbbr(e="en"){return this.values.map(t=>ha[e][t]?ha[e][t].abbr:t).join(this.constructor.joinSeparator)}addImporter(e=new ea,t=this.constructor.defaultImporterName){return this.importers||(this.importers=new Map),this.importers.set(t,e),e}getImporter(e=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(e))throw new Error(`Importer "${e}" does not exist`);return this.importers.get(e)}addFromImporter(e,t=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(t))throw new Error(`Importer "${t}" does not exist`);const r=this.importers.get(t);return e=this.constructor.dataValuesFromInput(e),this._data.push(...e.map(e=>({value:r.get(e.value),sortOrder:e.sortOrder}))),this.sort(),this}createFromImporter(e,t=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(t))throw new Error(`Importer "${t}" does not exist`);const r=this.importers.get(t);Array.isArray(e)||(e=[e]);let a=e.map(e=>r.get(e));return a=a.reduce((e,t)=>e.concat(t),[]),new feature_Feature(this.type,a,this.languageID,this.sortOrder,this.allowedValues)}}class grm_feature_GrmFeature{constructor(e,t,r,a=1){if(!grm_feature_GrmFeature.types.isAllowed(t))throw new Error('Features of "'+t+'" type are not supported.');if(!e)throw new Error("Feature should have a non-empty value.");if(!t)throw new Error("Feature should have a non-empty type.");if(!r)throw new Error("Feature constructor requires a language");this.value=e,this.type=t,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(r)),this.sortOrder=a}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}isEqual(e){if(Array.isArray(e.value)){if(!Array.isArray(this.value)||this.value.length!==e.value.length)return!1;let t=this.type===e.type&&pa.compareLanguages(this.languageID,e.languageID);return t=t&&this.value.every(function(t,r){return t===e.value[r]})}return pa.compareLanguages(this.languageID,e.languageID)&&this.type===e.type&&this.value===e.value}isSubsetof(e){Array.isArray(e)||(e=[e]);let t=e[0].languageID,r=e[0].type,a=e.map(e=>e.value);return!(!pa.compareLanguages(this.languageID,t)||this.type!==r||!a.includes(this.value))}hasValue(e){return Array.isArray(this.value)?this.value.includes(e):this.value===e}toString(){return Array.isArray(this.value)?this.value.join(","):this.value}toLocaleStringAbbr(e="en"){return Array.isArray(this.value)?this.value.map(t=>this.toLocaleStringAbbr(t,e)):ha[e][this.value].abbr}static toFeature(e){if(Array.isArray(e)){if(!(e[0]instanceof feature_Feature)){const t=e[0].type,r=e[0].languageID,a=e.map(e=>e.value);return new feature_Feature(t,a,r)}}else if(!(e instanceof feature_Feature))return new feature_Feature(e.type,e.value,e.languageID);return e}}grm_feature_GrmFeature.types={word:"word",part:"part of speech",number:"number",case:"case",grmCase:"case",declension:"declension",gender:"gender",type:"type",class:"class",grmClass:"class",conjugation:"conjugation",comparison:"comparison",tense:"tense",voice:"voice",mood:"mood",person:"person",frequency:"frequency",meaning:"meaning",source:"source",footnote:"footnote",dialect:"dialect",note:"note",pronunciation:"pronunciation",age:"age",area:"area",geo:"geo",kind:"kind",derivtype:"derivtype",stemtype:"stemtype",morph:"morph",var:"var",isAllowed(e){let t=`${e}`;return Object.values(this).includes(t)}};var ma=grm_feature_GrmFeature;var _a=class{constructor(e=[]){this._features=[],this._types={},this.add(e)}add(e){if(!e||!Array.isArray(e))throw new Error("Features must be defined and must come in an array.");for(let t of e)this._features.push(t),this._types[t.type]=t}get items(){return this._features}forEach(e){this._features.forEach(e)}ofType(e){if(this.hasType(e))return this._types[e]}hasType(e){return this._types.hasOwnProperty(e)}},Ea=r(0),Ia=r.n(Ea);class lemma_Lemma{constructor(e,t,r=[],a={}){if(!e)throw new Error("Word should not be empty.");if(!t)throw new Error("Language should not be empty.");this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(t)),this.word=e,this.principalParts=r,this.features={},this.ID=Ia()()}get language(){return console.warn('Please use "languageID" instead of "language"'),this.languageCode}static readObject(e){return new lemma_Lemma(e.word,e.language,e.principalParts,e.pronunciation)}set feature(e){if(console.warn('Please use "addFeature" instead'),!e)throw new Error("feature data cannot be empty.");Array.isArray(e)||(e=[e]);let t=e[0].type;this.features[t]=[];for(let r of e){if(!(r instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(r.languageID,this.languageID))throw new Error('Language "'+r.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this.features[t].push(r)}}addFeature(e){if(!e)throw new Error("feature data cannot be empty.");if(!(e instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error('Language "'+e.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this.features[e.type]=e}addFeatures(e){if(!Array.isArray(e))throw new Error("Features must be in an array");for(let t of e)this.addFeature(t)}addTranslation(e){if(!e)throw new Error("translation data cannot be empty.");if("Translation"!==e.constructor.name)throw new Error("translation data must be a Translation object.");this.translation=e}isFullHomonym(e){return this.word===e.word&&this.features[feature_Feature.types.part]&&e.features[feature_Feature.types.part]&&this.features[feature_Feature.types.part].isEqual(e.features[feature_Feature.types.part])}}var ya=lemma_Lemma;class inflection_Inflection{constructor(e=null,t,r=null,a=null,n=null){if(!e&&!r)throw new Error("At least stem or suffix must be defined");if(!t)throw new Error("Language should not be empty.");if(!pa.supportsLanguage(t))throw new Error(`language ${t} not supported.`);this.stem=e,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(t)),this.model=pa.getLanguageModel(this.languageID),this.features=new Set,this.constraints={fullFormBased:!1,suffixBased:!1,obligatoryMatches:[],optionalMatches:[]},this.suffix=r,this.prefix=a,this.example=n}get form(){let e,t,r,a,n;return n=this.stem?this.stem:"",a=this.stem?" - ":"",this.model.direction===o?(t=this.prefix?a+this.prefix:"",e=(r=this.suffix?this.suffix+a:"")+n+t):e=(t=this.prefix?this.prefix+a:"")+n+(r=this.suffix?a+this.suffix:""),e}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}setConstraints(){if(this.model.hasOwnProperty("getInflectionConstraints")){let e=this.model.getInflectionConstraints(this);this.constraints=Object.assign(this.constraints,e)}}compareWithWordDependsOnType(e,t,r=!0){const a=pa.getLanguageModel(this.languageID);let n;return n=this.constraints.irregularVerb?"Suffix"===t?this.suffix:this[feature_Feature.types.fullForm]?this[feature_Feature.types.fullForm].value:this.form:this.constraints.suffixBased?this.suffix:this.form,r?a.normalizeWord(n)===a.normalizeWord(e):n===e}compareWithWord(e,t=!0){const r=pa.getLanguageModel(this.languageID),a=this.constraints.suffixBased?this.suffix:this.form;return t?r.normalizeWord(a)===r.normalizeWord(e):a===e}disambiguatedBy(e){let t=!0;0!==this.features.length&&0!==e.features.length||(t=!1),e.features.length>this.features.length&&(t=!1);for(let r of e.features)if(!this[r]||!this[r].isEqual(e[r])){t=!1;break}return t}static readObject(e){let t=new inflection_Inflection(e.stem,e.languageCode,e.suffix,e.prefix,e.example);return t.languageID=pa.getLanguageIdFromCode(t.languageCode),t}set feature(e){if(console.warn('Please use "addFeature" instead.'),!e)throw new Error("Inflection feature data cannot be empty.");Array.isArray(e)||(e=[e]);let t=e[0].type;this[t]=[];for(let r of e){if(!(r instanceof feature_Feature))throw new Error("Inflection feature data must be a Feature object.");if(!pa.compareLanguages(r.languageID,this.languageID))throw new Error(`Language "${r.languageID.toString()}" of a feature does not match\n a language "${this.languageID.toString()}" of an Inflection object.`);this[t].push(r),this.features.add(t)}}addFeature(e){if(!e)throw new Error("feature data cannot be empty.");if(!(e instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error('Language "'+e.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this[e.type]=e,this.features.add(e.type)}addFeatures(e){if(!Array.isArray(e))throw new Error("Features must be in an array");for(let t of e)this.addFeature(t)}hasFeatureValue(e,t){return!!this.hasOwnProperty(e)&&this[e].values.includes(t)}}var Aa=inflection_Inflection;class lexeme_Lexeme{constructor(e,t,r=null){if(!e)throw new Error("Lemma should not be empty.");if(!(e instanceof ya))throw new Error("Lemma should be of Lemma object type.");if(!t)throw new Error("Inflections data should not be empty.");if(!Array.isArray(t))throw new Error("Inflection data should be provided in an array.");for(let e of t)if(!(e instanceof Aa))throw new Error("All inflection data should be of Inflection object type.");if(null!==r&&!(r instanceof definition_set_DefinitionSet))throw new Error("Meaning should be of DefinitionSet object type.");this.lemma=e,this.inflections=[],t.forEach(e=>{this.addInflection(e)}),this.meaning=r||new definition_set_DefinitionSet(this.lemma.word,this.lemma.languageID),this.disambiguated=!1}addInflection(e){e.lemma=this.lemma,this.inflections.push(e)}isPopulated(){return Object.entries(this.lemma.features).length>0||!this.meaning.isEmpty()||this.inflections.length>0}static disambiguate(e,t){let r=new lexeme_Lexeme(e.lemma,e.inflections,e.meaning);if(e.lemma.isFullHomonym(t.lemma)&&t.inflections.length>0){r.disambiguated=!0;let e=[];for(let a of r.inflections)for(let r of t.inflections)a.disambiguatedBy(r)&&e.push(a);if(r.inflections=e,0===r.inflections.length)for(let e of t.inflections)r.addInflection(e)}return r}getGroupedInflections(){return pa.getLanguageModel(this.lemma.languageID).groupInflectionsForDisplay(this.inflections)}static readObject(e){let t=ya.readObject(e.lemma),r=[];for(let t of e.inflections)r.push(Aa.readObject(t));let a=new lexeme_Lexeme(t,r);return a.meaning=definition_set_DefinitionSet.readObject(e.meaning),a}static getSortByTwoLemmaFeatures(e,t){return(r,a)=>{if(r.lemma.features[e]&&a.lemma.features[e]||!r.lemma.features[e]&&!a.lemma.features[[e]]){let n;return 0!==(n=r.lemma.features[e]&&a.lemma.features[e]?r.lemma.features[e].compareTo(a.lemma.features[e]):0)?n:r.lemma.features[t]&&a.lemma.features[t]?r.lemma.features[t].compareTo(a.lemma.features[t]):r.lemma.features[t]&&!a.lemma.features[t]?-1:!r.lemma.features[t]&&a.lemma.features[t]?1:0}return r.lemma.features[e]&&!a.lemma.features[e]?-1:!r.lemma.features[e]&&a.lemma.features[e]?1:0}}}var va=lexeme_Lexeme;class homonym_Homonym{constructor(e,t){if(!e||Array.isArray(e)&&0===e.length)throw new Error("Lexemes data should not be empty.");if(!Array.isArray(e))throw new Error("Lexeme data should be provided in an array.");for(let t of e)if(!(t instanceof va))throw new Error("All lexeme data should be of Lexeme object type.");this.lexemes=e,this.targetWord=t}static createSimpleForm(e,t,r=[]){let a=new ya(e,t),n=new va(a,r);return new homonym_Homonym([n],e)}static readObject(e){let t=[];if(e.lexemes)for(let r of e.lexemes)t.push(va.readObject(r));let r=new homonym_Homonym(t);return e.targetWord&&(r.targetWord=e.targetWord),r}get language(){return console.warn("Please use languageID instead"),pa.getLanguageCodeFromId(this.languageID)}get languageID(){if(this.lexemes&&this.lexemes[0]&&this.lexemes[0].lemma&&this.lexemes[0].lemma.languageID)return this.lexemes[0].lemma.languageID;throw new Error("Homonym has not been initialized properly. Unable to obtain language ID information.")}get inflections(){let e=[];for(const t of this.lexemes)e=e.concat(t.inflections);return e}isDisambiguated(){return this.lexemes.filter(e=>e.disambiguated).length>0}static disambiguate(e,t){if(0===t.length)return e;let r=t.shift(),a=[],n=[];for(let t of r.lexemes){let r=!1;for(let n of e.lexemes){let e=va.disambiguate(n,t);a.push(e),e.disambiguated&&(r=!0)}r||(t.disambiguated=!0,n.push(t))}let u=new homonym_Homonym([...a,...n],e.targetWord);return homonym_Homonym.disambiguate(u,t)}}var Fa=homonym_Homonym;var Sa=class{constructor(e="",t="",r=new Map([["default",t]])){this.uri=e,this.rights=r,this.rights.has("default")||this.rights.set("default",t)}toString(){return this.rights.get("default")}toLocaleString(e){return this.rights.get(e)||this.rights.get("default")}static getProxy(e=null,t={}){return new Proxy(t,{get:function(t,r){return"provider"===r?e:t[r]}})}};class Translation{constructor(e,t,r=[]){if(!e)throw new Error("Lemma should not be empty.");this.lemmaWord=e.word,this.languageCode=t,this.glosses=r}static readTranslationFromJSONList(e,t,r){if(!r||!Array.isArray(r))throw new Error("Recieved not proper translation list",r);let a=r.find(function(t){return t.in===e.word});return new Translation(e,t,a.translations)}static loadTranslations(e,t,r){e.addTranslation(this.readTranslationFromJSONList(e,t,r))}}var wa=Translation;r.d(t,"Constants",function(){return a}),r.d(t,"Definition",function(){return Zr}),r.d(t,"DefinitionSet",function(){return definition_set_DefinitionSet}),r.d(t,"Feature",function(){return feature_Feature}),r.d(t,"GrmFeature",function(){return ma}),r.d(t,"FeatureType",function(){return ta}),r.d(t,"FeatureList",function(){return _a}),r.d(t,"FeatureImporter",function(){return ea}),r.d(t,"Inflection",function(){return Aa}),r.d(t,"LanguageModelFactory",function(){return pa}),r.d(t,"Homonym",function(){return Fa}),r.d(t,"Lexeme",function(){return va}),r.d(t,"Lemma",function(){return ya}),r.d(t,"LatinLanguageModel",function(){return latin_language_model_LatinLanguageModel}),r.d(t,"GreekLanguageModel",function(){return greek_language_model_GreekLanguageModel}),r.d(t,"ArabicLanguageModel",function(){return arabic_language_model_ArabicLanguageModel}),r.d(t,"PersianLanguageModel",function(){return persian_language_model_PersianLanguageModel}),r.d(t,"ResourceProvider",function(){return Sa}),r.d(t,"Translation",function(){return wa})}])}); \ No newline at end of file +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(global,function(){return function(e){var t={};function r(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,a){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(a,n,function(t){return e[t]}.bind(null,n));return a},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}([function(e,t,r){var a=r(1),n=r(3);e.exports=function(e,t,r){var u=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var i=(e=e||{}).random||(e.rng||a)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t)for(var s=0;s<16;++s)t[u+s]=i[s];return t||n(i)}},function(e,t,r){var a=r(2);e.exports=function(){return a.randomBytes(16)}},function(e,t){e.exports=require("crypto")},function(e,t){for(var r=[],a=0;a<256;++a)r[a]=(a+256).toString(16).substr(1);e.exports=function(e,t){var a=t||0,n=r;return[n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],"-",n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]],n[e[a++]]].join("")}},function(e,t,r){"use strict";r.r(t);var a={};r.r(a),r.d(a,"LANG_UNIT_WORD",function(){return n}),r.d(a,"LANG_UNIT_CHAR",function(){return u}),r.d(a,"LANG_DIR_LTR",function(){return i}),r.d(a,"LANG_DIR_RTL",function(){return s}),r.d(a,"LANG_UNDEFINED",function(){return o}),r.d(a,"LANG_LATIN",function(){return l}),r.d(a,"LANG_GREEK",function(){return c}),r.d(a,"LANG_ARABIC",function(){return f}),r.d(a,"LANG_PERSIAN",function(){return d}),r.d(a,"STR_LANG_CODE_UNDEFINED",function(){return g}),r.d(a,"STR_LANG_CODE_LAT",function(){return p}),r.d(a,"STR_LANG_CODE_LA",function(){return h}),r.d(a,"STR_LANG_CODE_GRC",function(){return m}),r.d(a,"STR_LANG_CODE_ARA",function(){return _}),r.d(a,"STR_LANG_CODE_AR",function(){return E}),r.d(a,"STR_LANG_CODE_FAS",function(){return I}),r.d(a,"STR_LANG_CODE_PER",function(){return y}),r.d(a,"STR_LANG_CODE_FA_IR",function(){return A}),r.d(a,"STR_LANG_CODE_FA",function(){return v}),r.d(a,"POFS_ADJECTIVE",function(){return F}),r.d(a,"POFS_ADVERB",function(){return S}),r.d(a,"POFS_ADVERBIAL",function(){return w}),r.d(a,"POFS_ARTICLE",function(){return C}),r.d(a,"POFS_CONJUNCTION",function(){return D}),r.d(a,"POFS_EXCLAMATION",function(){return b}),r.d(a,"POFS_INTERJECTION",function(){return L}),r.d(a,"POFS_NOUN",function(){return T}),r.d(a,"POFS_NOUN_PROPER",function(){return O}),r.d(a,"POFS_NUMERAL",function(){return N}),r.d(a,"POFS_PARTICLE",function(){return V}),r.d(a,"POFS_PREFIX",function(){return P}),r.d(a,"POFS_PREPOSITION",function(){return R}),r.d(a,"POFS_PRONOUN",function(){return M}),r.d(a,"POFS_SUFFIX",function(){return x}),r.d(a,"POFS_GERUNDIVE",function(){return U}),r.d(a,"POFS_SUPINE",function(){return j}),r.d(a,"POFS_VERB",function(){return G}),r.d(a,"POFS_VERB_PARTICIPLE",function(){return B}),r.d(a,"GEND_MASCULINE",function(){return k}),r.d(a,"GEND_FEMININE",function(){return W}),r.d(a,"GEND_NEUTER",function(){return q}),r.d(a,"GEND_COMMON",function(){return H}),r.d(a,"GEND_ANIMATE",function(){return K}),r.d(a,"GEND_INANIMATE",function(){return $}),r.d(a,"GEND_PERSONAL_MASCULINE",function(){return z}),r.d(a,"GEND_ANIMATE_MASCULINE",function(){return J}),r.d(a,"GEND_INANIMATE_MASCULINE",function(){return X}),r.d(a,"COMP_POSITIVE",function(){return Q}),r.d(a,"COMP_COMPARITIVE",function(){return Y}),r.d(a,"COMP_SUPERLATIVE",function(){return Z}),r.d(a,"CASE_ABESSIVE",function(){return ee}),r.d(a,"CASE_ABLATIVE",function(){return te}),r.d(a,"CASE_ABSOLUTIVE",function(){return re}),r.d(a,"CASE_ACCUSATIVE",function(){return ae}),r.d(a,"CASE_ADDIRECTIVE",function(){return ne}),r.d(a,"CASE_ADELATIVE",function(){return ue}),r.d(a,"CASE_ADESSIVE",function(){return ie}),r.d(a,"CASE_ADVERBIAL",function(){return se}),r.d(a,"CASE_ALLATIVE",function(){return oe}),r.d(a,"CASE_ANTESSIVE",function(){return le}),r.d(a,"CASE_APUDESSIVE",function(){return ce}),r.d(a,"CASE_AVERSIVE",function(){return fe}),r.d(a,"CASE_BENEFACTIVE",function(){return de}),r.d(a,"CASE_CARITIVE",function(){return ge}),r.d(a,"CASE_CAUSAL",function(){return pe}),r.d(a,"CASE_CAUSAL_FINAL",function(){return he}),r.d(a,"CASE_COMITATIVE",function(){return me}),r.d(a,"CASE_DATIVE",function(){return _e}),r.d(a,"CASE_DELATIVE",function(){return Ee}),r.d(a,"CASE_DIRECT",function(){return Ie}),r.d(a,"CASE_DISTRIBUTIVE",function(){return ye}),r.d(a,"CASE_DISTRIBUTIVE_TEMPORAL",function(){return Ae}),r.d(a,"CASE_ELATIVE",function(){return ve}),r.d(a,"CASE_ERGATIVE",function(){return Fe}),r.d(a,"CASE_ESSIVE",function(){return Se}),r.d(a,"CASE_ESSIVE_FORMAL",function(){return we}),r.d(a,"CASE_ESSIVE_MODAL",function(){return Ce}),r.d(a,"CASE_EQUATIVE",function(){return De}),r.d(a,"CASE_EVITATIVE",function(){return be}),r.d(a,"CASE_EXESSIVE",function(){return Le}),r.d(a,"CASE_FINAL",function(){return Te}),r.d(a,"CASE_FORMAL",function(){return Oe}),r.d(a,"CASE_GENITIVE",function(){return Ne}),r.d(a,"CASE_ILLATIVE",function(){return Ve}),r.d(a,"CASE_INELATIVE",function(){return Pe}),r.d(a,"CASE_INESSIVE",function(){return Re}),r.d(a,"CASE_INSTRUCTIVE",function(){return Me}),r.d(a,"CASE_INSTRUMENTAL",function(){return xe}),r.d(a,"CASE_INSTRUMENTAL_COMITATIVE",function(){return Ue}),r.d(a,"CASE_INTRANSITIVE",function(){return je}),r.d(a,"CASE_LATIVE",function(){return Ge}),r.d(a,"CASE_LOCATIVE",function(){return Be}),r.d(a,"CASE_MODAL",function(){return ke}),r.d(a,"CASE_MULTIPLICATIVE",function(){return We}),r.d(a,"CASE_NOMINATIVE",function(){return qe}),r.d(a,"CASE_PARTITIVE",function(){return He}),r.d(a,"CASE_PEGATIVE",function(){return Ke}),r.d(a,"CASE_PERLATIVE",function(){return $e}),r.d(a,"CASE_POSSESSIVE",function(){return ze}),r.d(a,"CASE_POSTELATIVE",function(){return Je}),r.d(a,"CASE_POSTDIRECTIVE",function(){return Xe}),r.d(a,"CASE_POSTESSIVE",function(){return Qe}),r.d(a,"CASE_POSTPOSITIONAL",function(){return Ye}),r.d(a,"CASE_PREPOSITIONAL",function(){return Ze}),r.d(a,"CASE_PRIVATIVE",function(){return et}),r.d(a,"CASE_PROLATIVE",function(){return tt}),r.d(a,"CASE_PROSECUTIVE",function(){return rt}),r.d(a,"CASE_PROXIMATIVE",function(){return at}),r.d(a,"CASE_SEPARATIVE",function(){return nt}),r.d(a,"CASE_SOCIATIVE",function(){return ut}),r.d(a,"CASE_SUBDIRECTIVE",function(){return it}),r.d(a,"CASE_SUBESSIVE",function(){return st}),r.d(a,"CASE_SUBELATIVE",function(){return ot}),r.d(a,"CASE_SUBLATIVE",function(){return lt}),r.d(a,"CASE_SUPERDIRECTIVE",function(){return ct}),r.d(a,"CASE_SUPERESSIVE",function(){return ft}),r.d(a,"CASE_SUPERLATIVE",function(){return dt}),r.d(a,"CASE_SUPPRESSIVE",function(){return gt}),r.d(a,"CASE_TEMPORAL",function(){return pt}),r.d(a,"CASE_TERMINATIVE",function(){return ht}),r.d(a,"CASE_TRANSLATIVE",function(){return mt}),r.d(a,"CASE_VIALIS",function(){return _t}),r.d(a,"CASE_VOCATIVE",function(){return Et}),r.d(a,"MOOD_ADMIRATIVE",function(){return It}),r.d(a,"MOOD_COHORTATIVE",function(){return yt}),r.d(a,"MOOD_CONDITIONAL",function(){return At}),r.d(a,"MOOD_DECLARATIVE",function(){return vt}),r.d(a,"MOOD_DUBITATIVE",function(){return Ft}),r.d(a,"MOOD_ENERGETIC",function(){return St}),r.d(a,"MOOD_EVENTIVE",function(){return wt}),r.d(a,"MOOD_GENERIC",function(){return Ct}),r.d(a,"MOOD_GERUNDIVE",function(){return Dt}),r.d(a,"MOOD_HYPOTHETICAL",function(){return bt}),r.d(a,"MOOD_IMPERATIVE",function(){return Lt}),r.d(a,"MOOD_INDICATIVE",function(){return Tt}),r.d(a,"MOOD_INFERENTIAL",function(){return Ot}),r.d(a,"MOOD_INFINITIVE",function(){return Nt}),r.d(a,"MOOD_INTERROGATIVE",function(){return Vt}),r.d(a,"MOOD_JUSSIVE",function(){return Pt}),r.d(a,"MOOD_NEGATIVE",function(){return Rt}),r.d(a,"MOOD_OPTATIVE",function(){return Mt}),r.d(a,"MOOD_PARTICIPLE",function(){return xt}),r.d(a,"MOOD_PRESUMPTIVE",function(){return Ut}),r.d(a,"MOOD_RENARRATIVE",function(){return jt}),r.d(a,"MOOD_SUBJUNCTIVE",function(){return Gt}),r.d(a,"MOOD_SUPINE",function(){return Bt}),r.d(a,"NUM_SINGULAR",function(){return kt}),r.d(a,"NUM_PLURAL",function(){return Wt}),r.d(a,"NUM_DUAL",function(){return qt}),r.d(a,"NUM_TRIAL",function(){return Ht}),r.d(a,"NUM_PAUCAL",function(){return Kt}),r.d(a,"NUM_SINGULATIVE",function(){return $t}),r.d(a,"NUM_COLLECTIVE",function(){return zt}),r.d(a,"NUM_DISTRIBUTIVE_PLURAL",function(){return Jt}),r.d(a,"NRL_CARDINAL",function(){return Xt}),r.d(a,"NRL_ORDINAL",function(){return Qt}),r.d(a,"NRL_DISTRIBUTIVE",function(){return Yt}),r.d(a,"NURL_NUMERAL_ADVERB",function(){return Zt}),r.d(a,"ORD_1ST",function(){return er}),r.d(a,"ORD_2ND",function(){return tr}),r.d(a,"ORD_3RD",function(){return rr}),r.d(a,"ORD_4TH",function(){return ar}),r.d(a,"ORD_5TH",function(){return nr}),r.d(a,"ORD_6TH",function(){return ur}),r.d(a,"ORD_7TH",function(){return ir}),r.d(a,"ORD_8TH",function(){return sr}),r.d(a,"ORD_9TH",function(){return or}),r.d(a,"TENSE_AORIST",function(){return lr}),r.d(a,"TENSE_FUTURE",function(){return cr}),r.d(a,"TENSE_FUTURE_PERFECT",function(){return fr}),r.d(a,"TENSE_IMPERFECT",function(){return dr}),r.d(a,"TENSE_PAST_ABSOLUTE",function(){return gr}),r.d(a,"TENSE_PERFECT",function(){return pr}),r.d(a,"TENSE_PLUPERFECT",function(){return hr}),r.d(a,"TENSE_PRESENT",function(){return mr}),r.d(a,"VKIND_TO_BE",function(){return _r}),r.d(a,"VKIND_COMPOUNDS_OF_TO_BE",function(){return Er}),r.d(a,"VKIND_TAKING_ABLATIVE",function(){return Ir}),r.d(a,"VKIND_TAKING_DATIVE",function(){return yr}),r.d(a,"VKIND_TAKING_GENITIVE",function(){return Ar}),r.d(a,"VKIND_TRANSITIVE",function(){return vr}),r.d(a,"VKIND_INTRANSITIVE",function(){return Fr}),r.d(a,"VKIND_IMPERSONAL",function(){return Sr}),r.d(a,"VKIND_DEPONENT",function(){return wr}),r.d(a,"VKIND_SEMIDEPONENT",function(){return Cr}),r.d(a,"VKIND_PERFECT_DEFINITE",function(){return Dr}),r.d(a,"VOICE_ACTIVE",function(){return br}),r.d(a,"VOICE_PASSIVE",function(){return Lr}),r.d(a,"VOICE_MEDIOPASSIVE",function(){return Tr}),r.d(a,"VOICE_IMPERSONAL_PASSIVE",function(){return Or}),r.d(a,"VOICE_MIDDLE",function(){return Nr}),r.d(a,"VOICE_ANTIPASSIVE",function(){return Vr}),r.d(a,"VOICE_REFLEXIVE",function(){return Pr}),r.d(a,"VOICE_RECIPROCAL",function(){return Rr}),r.d(a,"VOICE_CAUSATIVE",function(){return Mr}),r.d(a,"VOICE_ADJUTATIVE",function(){return xr}),r.d(a,"VOICE_APPLICATIVE",function(){return Ur}),r.d(a,"VOICE_CIRCUMSTANTIAL",function(){return jr}),r.d(a,"VOICE_DEPONENT",function(){return Gr}),r.d(a,"TYPE_IRREGULAR",function(){return Br}),r.d(a,"TYPE_REGULAR",function(){return kr}),r.d(a,"CLASS_PERSONAL",function(){return Wr}),r.d(a,"CLASS_REFLEXIVE",function(){return qr}),r.d(a,"CLASS_POSSESSIVE",function(){return Hr}),r.d(a,"CLASS_DEMONSTRATIVE",function(){return Kr}),r.d(a,"CLASS_RELATIVE",function(){return $r}),r.d(a,"CLASS_INTERROGATIVE",function(){return zr}),r.d(a,"CLASS_GENERAL_RELATIVE",function(){return Jr}),r.d(a,"CLASS_INDEFINITE",function(){return Xr}),r.d(a,"CLASS_INTENSIVE",function(){return Qr}),r.d(a,"CLASS_RECIPROCAL",function(){return Yr});const n=Symbol("word"),u=Symbol("char"),i=Symbol("ltr"),s=Symbol("rtl"),o=Symbol("undefined"),l=Symbol("latin"),c=Symbol("greek"),f=Symbol("arabic"),d=Symbol("persian"),g="undefined",p="lat",h="la",m="grc",_="ara",E="ar",I="fas",y="per",A="fa-IR",v="fa",F="adjective",S="adverb",w="adverbial",C="article",D="conjunction",b="exclamation",L="interjection",T="noun",O="proper noun",N="numeral",V="particle",P="prefix",R="preposition",M="pronoun",x="suffix",U="gerundive",j="supine",G="verb",B="verb participle",k="masculine",W="feminine",q="neuter",H="common",K="animate",$="inanimate",z="personal masculine",J="animate masculine",X="inanimate masculine",Q="positive",Y="comparative",Z="superlative",ee="abessive",te="ablative",re="absolutive",ae="accusative",ne="addirective",ue="adelative",ie="adessive",se="adverbial",oe="allative",le="antessive",ce="apudessive",fe="aversive",de="benefactive",ge="caritive",pe="causal",he="causal-final",me="comitative",_e="dative",Ee="delative",Ie="direct",ye="distributive",Ae="distributive-temporal",ve="elative",Fe="ergative",Se="essive",we="essive-formal",Ce="essive-modal",De="equative",be="evitative",Le="exessive",Te="final",Oe="formal",Ne="genitive",Ve="illative",Pe="inelative",Re="inessive",Me="instructive",xe="instrumental",Ue="instrumental-comitative",je="intransitive",Ge="lative",Be="locative",ke="modal",We="multiplicative",qe="nominative",He="partitive",Ke="pegative",$e="perlative",ze="possessive",Je="postelative",Xe="postdirective",Qe="postessive",Ye="postpositional",Ze="prepositional",et="privative",tt="prolative",rt="prosecutive",at="proximative",nt="separative",ut="sociative",it="subdirective",st="subessive",ot="subelative",lt="sublative",ct="superdirective",ft="superessive",dt="superlative",gt="suppressive",pt="temporal",ht="terminative",mt="translative",_t="vialis",Et="vocative",It="admirative",yt="cohortative",At="conditional",vt="declarative",Ft="dubitative",St="energetic",wt="eventive",Ct="generic",Dt="gerundive",bt="hypothetical",Lt="imperative",Tt="indicative",Ot="inferential",Nt="infinitive",Vt="interrogative",Pt="jussive",Rt="negative",Mt="optative",xt="participle",Ut="presumptive",jt="renarrative",Gt="subjunctive",Bt="supine",kt="singular",Wt="plural",qt="dual",Ht="trial",Kt="paucal",$t="singulative",zt="collective",Jt="distributive plural",Xt="cardinal",Qt="ordinal",Yt="distributive",Zt="numeral adverb",er="1st",tr="2nd",rr="3rd",ar="4th",nr="5th",ur="6th",ir="7th",sr="8th",or="9th",lr="aorist",cr="future",fr="future perfect",dr="imperfect",gr="past absolute",pr="perfect",hr="pluperfect",mr="present",_r="to be",Er="compounds of to be",Ir="taking ablative",yr="taking dative",Ar="taking genitive",vr="transitive",Fr="intransitive",Sr="impersonal",wr="deponent",Cr="semideponent",Dr="perfect definite",br="active",Lr="passive",Tr="mediopassive",Or="impersonal passive",Nr="middle",Vr="antipassive",Pr="reflexive",Rr="reciprocal",Mr="causative",xr="adjutative",Ur="applicative",jr="circumstantial",Gr="deponent",Br="irregular",kr="regular",Wr="personal",qr="reflexive",Hr="possessive",Kr="demonstrative",$r="relative",zr="interrogative",Jr="general relative",Xr="indefinite",Qr="intensive",Yr="reciprocal";class Definition{constructor(e,t,r,a){this.text=e,this.language=t,this.format=r,this.lemmaText=a}static readObject(e){return new Definition(e.text,e.language,e.format,e.lemmaText)}}var Zr=Definition;class definition_set_DefinitionSet{constructor(e,t){this.lemmaWord=e,this.languageID=t,this.shortDefs=[],this.fullDefs=[]}static readObject(e){let t=new definition_set_DefinitionSet(e.lemmaWord,e.languageID);for(let r of e.shortDefs)t.shortDefs.push(Zr.readObject(r));for(let r of e.fullDefs)t.fullDefs.push(Zr.readObject(r));return t}isEmpty(){return 0===this.shortDefs.length&&0===this.fullDefs.length}appendShortDefs(e){return e&&(Array.isArray(e)||(e=[e]),this.shortDefs=this.shortDefs.concat(e)),this.shortDefs}clearShortDefs(){this.shortDefs=[]}appendFullDefs(e){return e&&(Array.isArray(e)||(e=[e]),this.fullDefs=this.fullDefs.concat(e)),this.fullDefs}clearFullDefs(){this.fullDefs=[]}}var ea=class{constructor(e=[],t=!1){this.hash={};for(let t of e)this.map(t,t);return this.returnUnknown=t,this}map(e,t){if(!e)throw new Error("Imported value should not be empty.");if(!t)throw new Error("Library value should not be empty.");return this.hash[e]=t,this}has(e){return this.hash.hasOwnProperty(e)}get(e){if(this.has(e))return this.hash[e];if(this.returnUnknown)return e;throw new Error('A value "'+e+'" is not found in the importer.')}};class feature_type_FeatureType{constructor(e,t,r){if(!t||!Array.isArray(t))throw new Error("Values should be an array (or an empty array) of values.");if(!r)throw new Error("FeatureType constructor requires a language");this.type=e,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(r)),this._orderIndex=[],this._orderLookup={};for(const[e,r]of t.entries())if(this._orderIndex.push(r),Array.isArray(r))for(let t of r)this[t]=new feature_Feature(this.type,t,this.languageID),this._orderLookup[t]=e;else this[r]=new feature_Feature(this.type,r,this.languageID),this._orderLookup[r]=e}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}hasUnrestrictedValue(){return 1===this.orderedValues.length&&this.orderedValues[0]===feature_type_FeatureType.UNRESTRICTED_VALUE}get(e,t=1){if(e)return new feature_Feature(this.type,[[e,t]],this.languageID);throw new Error("A non-empty value should be provided.")}getValues(e){return new feature_Feature(this.type,e,this.languageID)}getFromImporter(e,t){let r;try{r=this.importer[e].get(t)}catch(e){r=this.get(t)}return r}addImporter(e){if(!e)throw new Error("Importer should have a non-empty name.");return this.importer=this.importer||{},this.importer[e]=this.importer[e]||new ea,this.importer[e]}get orderedFeatures(){return this.orderedValues.map(e=>new feature_Feature(this.type,e,this.languageID))}get orderedValues(){return this._orderIndex}get orderLookup(){return this._orderLookup}set order(e){if(!e||Array.isArray(e)&&0===e.length)throw new Error("A non-empty list of values should be provided.");Array.isArray(e)||(e=[e]);for(let t of e)if(Array.isArray(t))for(let e of t){if(!this.hasOwnProperty(e.value))throw new Error('Trying to order an element with "'+e.value+'" value that is not stored in a "'+this.type+'" type.');if(e.type!==this.type)throw new Error('Trying to order an element with type "'+e.type+'" that is different from "'+this.type+'".');if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error(`Trying to order an element with language "${e.languageID.toString()}" that is different from "${this.languageID.toString()}"`)}else{if(!this.hasOwnProperty(t.value))throw new Error('Trying to order an element with "'+t.value+'" value that is not stored in a "'+this.type+'" type.');if(t.type!==this.type)throw new Error('Trying to order an element with type "'+t.type+'" that is different from "'+this.type+'".');if(!pa.compareLanguages(t.languageID,this.languageID))throw new Error(`Trying to order an element with language "${t.languageID.toString()}" that is different from "${this.languageID.toString()}"`)}this._orderLookup={},this._orderIndex=[];for(const[t,r]of e.entries())if(Array.isArray(r)){let e=[];for(const a of r)this._orderLookup[a.value]=t,e.push(a.value);this._orderIndex[t]=e}else this._orderLookup[r.value]=t,this._orderIndex[t]=r.value}}feature_type_FeatureType.UNRESTRICTED_VALUE=Symbol("unrestricted");var ta=feature_type_FeatureType;var ra=class{constructor(e,t,r={}){for(let r of t)this[r]=e[r];Object.assign(this,r)}hasFeatureValue(e,t){return!!this.hasOwnProperty(e)&&this[e].values.includes(t)}toString(){let e=[];for(let t of Object.getOwnPropertyNames(this).sort()){let r=this[t]instanceof feature_Feature?this[t].values.sort().join(","):this[t];e.push(r)}return e.join(" ")}};var aa=class{constructor(e,t=[],r=null){this.groupingKey=e,this.inflections=t}append(e){this.inflections.push(e)}};class language_model_LanguageModel{constructor(){this.context_backward=language_model_LanguageModel.contextBackward}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}get contextForward(){return console.warn('Please use static "contextForward" instead'),this.constructor.contextForward}get contextBackward(){return console.warn('Please use static "contextBackward" instead'),this.constructor.contextBackward}get direction(){return console.warn('Please use static "direction" instead'),this.constructor.direction}get baseUnit(){return console.warn('Please use static "baseUnit" instead'),this.constructor.baseUnit}get features(){return console.warn('Please use individual "getFeatureType" or static "features" instead'),this.constructor.features}static get featureNames(){return this.featureValues.keys()}static typeFeature(e){if(this.typeFeatures.has(e))return this.typeFeatures.get(e);throw new Error(`Type feature "${e}" is not defined within "${this}"`)}static get typeFeatures(){console.warn("This getter must be defined in a descendant class")}static get features(){let e={};for(const t of this.featureNames)e[t]=this.getFeature(t);return e}static get languageID(){return o}static get languageCode(){return g}static get languageCodes(){return[]}static get codes(){return console.warn('Use static "languageCodes" instead'),this.languageCodes}get codes(){return console.warn('Please use a static version of "codes" instead'),this.constructor.languageCodes}toCode(){return console.warn('Please use a static "languageCode" instead'),this.constructor.languageCode}static toCode(){return console.warn('Please use a static "languageCode" instead'),this.languageCode}static get featureValues(){return new Map([[feature_Feature.types.part,[S,w,F,C,D,b,L,T,N,V,P,R,M,x,j,G,B]],[feature_Feature.types.gender,[k,W,q]],[feature_Feature.types.type,[kr,Br]],[feature_Feature.types.person,[er,tr,rr]],[feature_Feature.types.age,[]],[feature_Feature.types.area,[]],[feature_Feature.types.source,[]],[feature_Feature.types.frequency,[]],[feature_Feature.types.geo,[]],[feature_Feature.types.pronunciation,[]],[feature_Feature.types.kind,[]],[feature_Feature.types.comparison,[]],[feature_Feature.types.morph,[]],[feature_Feature.types.stemtype,[]],[feature_Feature.types.derivtype,[]]])}static get sourceLanguage(){return console.warn("Please use languageID directly"),this.languageID}get sourceLanguage(){return console.warn("Please use languageID directly"),this.constructor.languageID}static getFeatureType(e){console.warn("Please use getFeature instead");let t=this.featureValues;if(t.has(e))return new ta(e,t.get(e),this.languageID);throw new Error(`Feature "${e}" is not defined`)}static getFeature(e){let t=this.featureValues;if(t.has(e)){let r=t.get(e);return new feature_Feature(e,r,this.languageID,1,r)}throw new Error(`Feature "${e}" is not defined`)}_initializeFeatures(){let e={};for(const t of this.constructor.featureValues.keys())e[t]=this.constructor.getFeature(t);return e}grammarFeatures(){return console.warn('Please use a static version of "grammarFeatures" instead'),this.constructor.grammarFeatures()}static grammarFeatures(){return[]}static canInflect(e){return!1}static supportsLanguage(e){return this.languageCodes.includes[e]}static normalizeWord(e){return e}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}alternateWordEncodings(e,t,r,a){return console.warn('Please use static "alternateWordEncodings" instead'),this.constructor.alternateWordEncodings(e,t,r,a)}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}getPunctuation(){return console.warn('Please use a static version of "getPunctuation"'),this.constructor.getPunctuation()}toString(){return String(this.constructor.languageCode)}isEqual(e){return pa.compareLanguages(this.languageID,e.languageID)}static hasCode(e){if(this.isLanguageCode(e))return this.languageCodes.includes(e);throw new Error(`Format of a "${e}" is incorrect`)}static isLanguageID(e){return"symbol"==typeof e}static isLanguageCode(e){return!language_model_LanguageModel.isLanguageID(e)}canInflect(e){return console.warn('Please use a static version of "canInflect" instead'),this.constructor.canInflect(e)}static groupInflectionsForDisplay(e){let t=new Map,r=this.aggregateInflectionsForDisplay(e);for(let e of r){let r=new ra(e,[feature_Feature.types.part,feature_Feature.types.declension,feature_Feature.types.dialect,feature_Feature.types.comparison],{prefix:e.prefix,suffix:e.suffix,stem:e.stem}),a=r.toString();t.has(a)?t.get(a).append(e):t.set(a,new aa(r,[e]))}for(let e of t){let t=new Map;for(let r of e[1].inflections){let e,a=!1;r[feature_Feature.types.grmCase]?(e=feature_Feature.types.number,a=!0):e=r[feature_Feature.types.tense]?feature_Feature.types.tense:r[feature_Feature.types.part]===G?feature_Feature.types.part:r[feature_Feature.types.part]===S?feature_Feature.types.part:"misc";let n=new ra(r,[e],{isCaseInflectionSet:a}),u=n.toString();t.has(u)?t.get(u).append(r):t.set(u,new aa(n,[r]))}for(let e of t){let t=new Map,r=new Map;for(let a of e[1].inflections){let e=a[feature_Feature.types.grmCase]?Math.max(a[feature_Feature.types.grmCase].items.map(e=>e.sortOrder)):1,n=new ra(a,[feature_Feature.types.tense,feature_Feature.types.voice]),u=n.toString();t.has(u)?t.get(u).append(a):(t.set(u,new aa(n,[a],e)),r.set(u,e))}e[1].inflections=[];let a=Array.from(t.keys()).sort((e,t)=>{let a=r.get(e),n=r.get(t);return a>n?-1:n>a?1:0});for(let r of a)e[1].inflections.push(t.get(r))}for(let e of t){let t=e[1];for(let e of t.inflections){let t=new Map;for(let r of e.inflections){let e=new ra(r,[feature_Feature.types.grmCase,feature_Feature.types.comparison,feature_Feature.types.gender,feature_Feature.types.number,feature_Feature.types.person,feature_Feature.types.tense,feature_Feature.types.mood,feature_Feature.types.voice]),a=e.toString();t.has(a)?t.get(a).append(r):t.set(a,new aa(e,[r]))}e.inflections=Array.from(t.values())}}e[1].inflections=Array.from(t.values())}return Array.from(t.values())}static aggregateInflectionsForDisplay(e){return e}groupInflectionsForDisplay(e){return console.warn('Please use a static version of "groupInflectionsForDisplay" instead'),this.constructor.groupInflectionsForDisplay(e)}}var na=language_model_LanguageModel;let ua=new Map,ia=!1;class latin_language_model_LatinLanguageModel extends na{static get languageID(){return l}static get languageCode(){return p}static get languageCodes(){return[h,p]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}static get featureValues(){return new Map([...na.featureValues,[feature_Feature.types.grmClass,[Wr,qr,Hr,Kr,$r,zr]],[feature_Feature.types.number,[kt,Wt]],[feature_Feature.types.grmCase,[qe,Ne,_e,ae,te,Be,Et]],[feature_Feature.types.declension,[er,tr,rr,ar,nr]],[feature_Feature.types.tense,[mr,dr,cr,pr,hr,fr]],[feature_Feature.types.voice,[br,Lr]],[feature_Feature.types.mood,[Tt,Gt,Lt,xt,Bt,Dt,xt,Nt]],[feature_Feature.types.conjugation,[er,tr,rr,ar]]])}static get typeFeatures(){return ia||this.initTypeFeatures(),ua}static initTypeFeatures(){for(const e of this.featureNames)ua.set(e,this.getFeature(e));ia=!0}static grammarFeatures(){return[feature_Feature.types.part,feature_Feature.types.grmCase,feature_Feature.types.mood,feature_Feature.types.declension,feature_Feature.types.tense,feature_Feature.types.conjugation]}static canInflect(e){return!0}static normalizeWord(e){return e&&(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/[\u00c0\u00c1\u00c2\u00c3\u00c4\u0100\u0102]/g,"A")).replace(/[\u00c8\u00c9\u00ca\u00cb\u0112\u0114]/g,"E")).replace(/[\u00cc\u00cd\u00ce\u00cf\u012a\u012c]/g,"I")).replace(/[\u00d2\u00d3\u00d4\u00df\u00d6\u014c\u014e]/g,"O")).replace(/[\u00d9\u00da\u00db\u00dc\u016a\u016c]/g,"U")).replace(/[\u00c6\u01e2]/g,"AE")).replace(/[\u0152]/g,"OE")).replace(/[\u00e0\u00e1\u00e2\u00e3\u00e4\u0101\u0103]/g,"a")).replace(/[\u00e8\u00e9\u00ea\u00eb\u0113\u0115]/g,"e")).replace(/[\u00ec\u00ed\u00ee\u00ef\u012b\u012d\u0129]/g,"i")).replace(/[\u00f2\u00f3\u00f4\u00f5\u00f6\u014d\u014f]/g,"o")).replace(/[\u00f9\u00fa\u00fb\u00fc\u016b\u016d]/g,"u")).replace(/[\u00e6\u01e3]/g,"ae")).replace(/[\u0153]/g,"oe")),e}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static getInflectionConstraints(e){let t={fullFormBased:!1,suffixBased:!1,pronounClassRequired:!1};return e.hasOwnProperty(feature_Feature.types.part)?[G,B].includes(e[feature_Feature.types.part].value)?(t.fullFormBased=!0,t.suffixBased=!0):e[feature_Feature.types.part].value===M?t.fullFormBased=!0:t.suffixBased=!0:console.warn("Unable to set grammar: part of speech data is missing or is incorrect",e[feature_Feature.types.part]),t}}let sa=new Map,oa=!1;class greek_language_model_GreekLanguageModel extends na{static get languageID(){return c}static get languageCode(){return m}static get languageCodes(){return[m]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return i}static get baseUnit(){return n}static get featureValues(){return new Map([...na.featureValues,[feature_Feature.types.grmClass,[Kr,Jr,Xr,Qr,zr,Wr,Hr,Yr,qr,$r]],[feature_Feature.types.number,[kt,Wt,qt]],[feature_Feature.types.grmCase,[qe,Ne,_e,ae,Et]],[feature_Feature.types.declension,[er,tr,rr]],[feature_Feature.types.tense,[mr,dr,cr,pr,hr,fr,lr]],[feature_Feature.types.voice,[Lr,br,Tr,Nr]],[feature_Feature.types.mood,[Tt,Gt,Mt,Lt]],[feature_Feature.types.dialect,["attic","epic","doric"]]])}static get typeFeatures(){return oa||this.initTypeFeatures(),sa}static initTypeFeatures(){for(const e of this.featureNames)sa.set(e,this.getFeature(e));oa=!0}static canInflect(e){return!0}static grammarFeatures(){return[feature_Feature.types.part,feature_Feature.types.grmCase,feature_Feature.types.mood,feature_Feature.types.declension,feature_Feature.types.tense,feature_Feature.types.voice]}static normalizeWord(e){return e?e.normalize("NFC"):e}static alternateWordEncodings(e,t=null,r=null,a=null){let n=greek_language_model_GreekLanguageModel.normalizeWord(e).toLocaleLowerCase(),u=n.replace(/[\u{1FB0}\u{1FB1}]/gu,"α").replace(/[\u{1FB8}\u{1FB9}]/gu,"Α").replace(/[\u{1FD0}\u{1FD1}]/gu,"ι").replace(/[\u{1FD8}\u{1FD9}]/gu,"Ι").replace(/[\u{1FE0}\u{1FE1}]/gu,"υ").replace(/[\u{1FE8}\u{1FE9}]/gu,"Υ").replace(/[\u{00AF}\u{0304}\u{0306}]/gu,""),i=n.replace(/\u{0390}/gu,"ί").replace(/\u{03AA}/gu,"Ι").replace(/\u{03AB}/gu,"Υ").replace(/\u{03B0}/gu,"ύ").replace(/\u{03CA}/gu,"ι").replace(/\u{03CB}/gu,"υ").replace(/\u{1FD2}/gu,"ὶ").replace(/\u{1FD3}/gu,"ί").replace(/\u{1FD7}/gu,"ῖ").replace(/\u{1FE2}/gu,"ὺ").replace(/\u{1FE3}/gu,"ύ").replace(/\u{1FE7}/gu,"ῦ").replace(/\u{1FC1}/gu,"῀").replace(/\u{1FED}/gu,"`").replace(/\u{1FEE}/gu,"´").replace(/[\u{00A8}\u{0308}]/gu,"");return"strippedDiaeresis"===a?[i]:[u]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static getInflectionConstraints(e){let t={fullFormBased:!1,suffixBased:!1,pronounClassRequired:!1},r=[M,N,C];return e.hasOwnProperty(feature_Feature.types.part)?r.includes(e[feature_Feature.types.part].value)?t.fullFormBased=!0:t.suffixBased=!0:console.warn("Unable to set grammar: part of speech data is missing or is incorrect",e[feature_Feature.types.part]),t.pronounClassRequired=pa.compareLanguages(greek_language_model_GreekLanguageModel.languageID,e.languageID)&&e.hasOwnProperty(feature_Feature.types.part)&&e[feature_Feature.types.part].value===M,t}static getPronounClasses(e,t,r=!0){let a=new Set,n=e.filter(e=>{let a=!1;return e.value&&(a=r?greek_language_model_GreekLanguageModel.normalizeWord(e.value)===greek_language_model_GreekLanguageModel.normalizeWord(t):e.value===t),a});for(const e of n)if(e.features.hasOwnProperty(feature_Feature.types.grmClass))for(const t of e.features[feature_Feature.types.grmClass].values)a.add(t);if(a.size>0)return new feature_Feature(feature_Feature.types.grmClass,Array.from(a),greek_language_model_GreekLanguageModel.languageID)}}let la=new Map,ca=!1;class arabic_language_model_ArabicLanguageModel extends na{static get languageID(){return f}static get languageCode(){return _}static get languageCodes(){return[_,E]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return s}static get baseUnit(){return n}static get typeFeatures(){return ca||this.initTypeFeatures(),la}static initTypeFeatures(){for(const e of this.featureNames)la.set(e,this.getFeature(e));ca=!0}static canInflect(e){return!1}static alternateWordEncodings(e,t=null,r=null,a=null){let n=e.replace(/[\u{064B}\u{064C}\u{064D}\u{0640}]/gu,""),u=n.replace(/[\u{0622}\u{0623}\u{0625}]/gu,"ا"),i=u.replace(/[\u{064E}\u{064F}\u{0650}\u{0670}\u{0671}]/gu,""),s=i.replace(/\u{0651}/gu,""),o=s.replace(/\u{0652}/gu,""),l=o.replace(/\u{0627}/gu,""),c=new Map([["tanwin",n],["hamza",u],["harakat",i],["shadda",s],["sukun",o],["alef",l]]);return null!==a&&c.has(a)?[c.get(a)]:Array.from(c.values())}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}static aggregateInflectionsForDisplay(e){let t=[],r={[T]:[],[F]:[],[O]:[]};for(let a of e)a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/ADJ[uaiNK]/)?r[F].push(a):a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/NOUN[uaiNK]/)?r[T].push(a):a[feature_Feature.types.morph]&&a[feature_Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)?r[O].push(a):(a.example=null,t.push(a));for(let e of Object.keys(r)){1!==t.filter(t=>t[feature_Feature.types.part].value===e).length&&t.push(...r[e])}return t}}let fa=new Map,da=!1;class persian_language_model_PersianLanguageModel extends na{static get languageID(){return d}static get languageCode(){return y}static get languageCodes(){return[y,I,v,A]}static get contextForward(){return 0}static get contextBackward(){return 0}static get direction(){return s}static get baseUnit(){return n}static get typeFeatures(){return da||this.initTypeFeatures(),fa}static initTypeFeatures(){for(const e of this.featureNames)fa.set(e,this.getFeature(e));da=!0}static canInflect(e){return!1}static alternateWordEncodings(e,t=null,r=null,a=null){return[]}static getPunctuation(){return".,;:!?'\"(){}\\[\\]<>/\\ ‐‑‒–—―‘’“”··\n\r"}}const ga=new Map([[h,latin_language_model_LatinLanguageModel],[p,latin_language_model_LatinLanguageModel],[m,greek_language_model_GreekLanguageModel],[_,arabic_language_model_ArabicLanguageModel],[E,arabic_language_model_ArabicLanguageModel],[y,persian_language_model_PersianLanguageModel]]);class language_model_factory_LanguageModelFactory{static supportsLanguage(e){return e="symbol"==typeof e?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e):e,ga.has(e)}static getLanguageModel(e){let t=language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e);return ga.has(t)?ga.get(t):na}static getLanguageForCode(e=null){let t=ga.get(e);return t?new t:new na}static getLanguageIdFromCode(e){for(const t of ga.values())if(t.hasCode(e))return t.languageID;return o}static getLanguageCodeFromId(e){for(const t of ga.values())if(t.languageID.toString()===e.toString())return t.languageCode;return g}static getLanguageAttrs(e){return"symbol"==typeof e?{languageID:e,languageCode:language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e)}:{languageID:language_model_factory_LanguageModelFactory.getLanguageIdFromCode(e),languageCode:e}}static compareLanguages(e,t){return(e="symbol"==typeof e?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(e):e)===(t="symbol"==typeof t?language_model_factory_LanguageModelFactory.getLanguageCodeFromId(t):t)}}var pa=language_model_factory_LanguageModelFactory;const ha={en:{feminine:{full:"feminine",abbr:"f."},masculine:{full:"masculine",abbr:"m."},neuter:{full:"neuter",abbr:"n."},nominative:{full:"nominative",abbr:"nom."},accusative:{full:"accusative",abbr:"acc."},genitive:{full:"genitive",abbr:"gen."},vocative:{full:"vocative",abbr:"voc."},ablative:{full:"ablative",abbr:"abl."},locative:{full:"locative",abbr:"loc."},dative:{full:"dative",abbr:"dat."},positive:{full:"positive",abbr:"pos."},comparative:{full:"comparative",abbr:"comp."},superlative:{full:"superlative",abbr:"super."},singular:{full:"singular",abbr:"s."},plural:{full:"plural",abbr:"p."},dual:{full:"dual",abbr:"dl."},present:{full:"present",abbr:"pr."},imperfect:{full:"imperfect",abbr:"imp."},perfect:{full:"perfect",abbr:"perf."},pluperfect:{full:"pluperfect",abbr:"pluperf."},plusquamperfect:{full:"plusquamperfect",abbr:"pqpf."},"future perfect":{full:"future perfect",abbr:"fut. perf."},future:{full:"future",abbr:"fut."},aorist:{full:"aorist",abbr:"aor."},indicative:{full:"indicative",abbr:"ind."},subjunctive:{full:"subjunctive",abbr:"sub."},infinitive:{full:"infinitive",abbr:"inf."},imperative:{full:"imperative",abbr:"imp."},supine:{full:"supine",abbr:"sup."},participle:{full:"participle",abbr:"par."},optative:{full:"optative",abbr:"opt."},active:{full:"active",abbr:"act."},passive:{full:"passive",abbr:"pass."},middle:{full:"middle",abbr:"mid."},mediopassive:{full:"mediopassive",abbr:"mp."},deponens:{full:"deponens",abbr:"dep."}}};class feature_Feature{constructor(e,t,r,a=1,n=[]){if(!feature_Feature.isAllowedType(e))throw new Error('Features of "'+e+'" type are not supported.');if(!t)throw new Error("Feature should have a non-empty value(s).");if(!r)throw new Error("No language ID is provided");this.type=e,this.languageID=r,this.sortOrder=a,this.allowedValues=n,this._data=feature_Feature.dataValuesFromInput(t),this.sort()}static dataValuesFromInput(e){let t;return(t=Array.isArray(e)?Array.isArray(e[0])?e:e.map((t,r)=>[t,e.length-r]):[[e,this.defaultSortOrder]]).map(e=>({value:e[0],sortOrder:Number.parseInt(e[1])}))}static newFromFtr(e){}static get types(){return{word:"word",fullForm:"full form",hdwd:"headword",part:"part of speech",number:"number",case:"case",grmCase:"case",declension:"declension",gender:"gender",type:"type",class:"class",grmClass:"class",conjugation:"conjugation",comparison:"comparison",tense:"tense",voice:"voice",mood:"mood",person:"person",frequency:"frequency",meaning:"meaning",source:"source",footnote:"footnote",dialect:"dialect",note:"note",pronunciation:"pronunciation",age:"age",area:"area",geo:"geo",kind:"kind",derivtype:"derivtype",stemtype:"stemtype",morph:"morph",var:"var"}}static isAllowedType(e){return Object.values(this.types).includes(`${e}`)}static get defaultSortOrder(){return 1}static get joinSeparator(){return" "}static get defaultImporterName(){return"default"}get allowsUnrestrictedValues(){return 0===this.allowedValues.length}sort(){this._data.sort((e,t)=>e.sortOrder!==t.sortOrder?t.sortOrder-e.sortOrder:e.value.localeCompare(t.value))}compareTo(e){return e?e._data[0].sortOrder-this._data[0].sortOrder:-1}get items(){return this._data}get value(){return this.values.join(this.constructor.joinSeparator)}get values(){return this._data.map(e=>e.value)}getValue(e){return this._data.find(t=>t.value===e)}get valQty(){return this._data.length}get isEmpty(){return 0===this.valQty}get isSingle(){return 1===this.valQty}get isMultiple(){return this.valQty>1}toString(){return this.value}hasValue(e){return this.values.includes(e)}hasValues(e){let t=!0;for(let r of e)t=t&&this.hasValue(r);return t}hasSomeValues(e){let t=!1;for(let r of e)t=t||this.hasValue(r);return t}get valuesUnrestricted(){return 0===this.allowedValues.length}isEqual(e){return this.type===e.type&&pa.compareLanguages(this.languageID,e.languageID)&&this.value===e.value}addValue(e,t=this.constructor.defaultSortOrder){return this.hasValue(e)?console.warn(`Value "${e}" already exists. If you want to change it, use "getValue" to access it directly.`):(this._data.push({value:e,sortOrder:t}),this.sort()),this}addValues(e){let t=this.constructor.dataValuesFromInput(e),r=t.map(e=>e.value);return this.hasSomeValues(r)?console.warn(`One or several values from "${r}" already exist. If you want to change it, use "getValue" to access a value directly.`):(this._data=this._data.concat(t),this.sort()),this}removeValue(e){console.warn("This feature is not implemented yet")}createFeature(e,t=this.constructor.defaultSortOrder){return new feature_Feature(this.type,[[e,t]],this.languageID,this.sortOrder,this.allowedValues)}createFeatures(e){return new feature_Feature(this.type,e,this.languageID,this.sortOrder,this.allowedValues)}get ownFeatures(){return this.values.map(e=>new feature_Feature(this.type,e,this.languageID,1,this.allowedValues))}getCopy(){let e=this._data.map(e=>[e.value,e.sortOrder]);return new feature_Feature(this.type,e,this.languageID,this.sortOrder,this.allowedValues.slice())}toLocaleStringAbbr(e="en"){return this.values.map(t=>ha[e][t]?ha[e][t].abbr:t).join(this.constructor.joinSeparator)}addImporter(e=new ea,t=this.constructor.defaultImporterName){return this.importers||(this.importers=new Map),this.importers.set(t,e),e}getImporter(e=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(e))throw new Error(`Importer "${e}" does not exist`);return this.importers.get(e)}addFromImporter(e,t=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(t))throw new Error(`Importer "${t}" does not exist`);const r=this.importers.get(t);return e=this.constructor.dataValuesFromInput(e),this._data.push(...e.map(e=>({value:r.get(e.value),sortOrder:e.sortOrder}))),this.sort(),this}createFromImporter(e,t=this.constructor.defaultImporterName){if(!this.importers||!this.importers.has(t))throw new Error(`Importer "${t}" does not exist`);const r=this.importers.get(t);Array.isArray(e)||(e=[e]);let a=e.map(e=>r.get(e));return a=a.reduce((e,t)=>e.concat(t),[]),new feature_Feature(this.type,a,this.languageID,this.sortOrder,this.allowedValues)}}class grm_feature_GrmFeature{constructor(e,t,r,a=1){if(!grm_feature_GrmFeature.types.isAllowed(t))throw new Error('Features of "'+t+'" type are not supported.');if(!e)throw new Error("Feature should have a non-empty value.");if(!t)throw new Error("Feature should have a non-empty type.");if(!r)throw new Error("Feature constructor requires a language");this.value=e,this.type=t,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(r)),this.sortOrder=a}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}isEqual(e){if(Array.isArray(e.value)){if(!Array.isArray(this.value)||this.value.length!==e.value.length)return!1;let t=this.type===e.type&&pa.compareLanguages(this.languageID,e.languageID);return t=t&&this.value.every(function(t,r){return t===e.value[r]})}return pa.compareLanguages(this.languageID,e.languageID)&&this.type===e.type&&this.value===e.value}isSubsetof(e){Array.isArray(e)||(e=[e]);let t=e[0].languageID,r=e[0].type,a=e.map(e=>e.value);return!(!pa.compareLanguages(this.languageID,t)||this.type!==r||!a.includes(this.value))}hasValue(e){return Array.isArray(this.value)?this.value.includes(e):this.value===e}toString(){return Array.isArray(this.value)?this.value.join(","):this.value}toLocaleStringAbbr(e="en"){return Array.isArray(this.value)?this.value.map(t=>this.toLocaleStringAbbr(t,e)):ha[e][this.value].abbr}static toFeature(e){if(Array.isArray(e)){if(!(e[0]instanceof feature_Feature)){const t=e[0].type,r=e[0].languageID,a=e.map(e=>e.value);return new feature_Feature(t,a,r)}}else if(!(e instanceof feature_Feature))return new feature_Feature(e.type,e.value,e.languageID);return e}}grm_feature_GrmFeature.types={word:"word",part:"part of speech",number:"number",case:"case",grmCase:"case",declension:"declension",gender:"gender",type:"type",class:"class",grmClass:"class",conjugation:"conjugation",comparison:"comparison",tense:"tense",voice:"voice",mood:"mood",person:"person",frequency:"frequency",meaning:"meaning",source:"source",footnote:"footnote",dialect:"dialect",note:"note",pronunciation:"pronunciation",age:"age",area:"area",geo:"geo",kind:"kind",derivtype:"derivtype",stemtype:"stemtype",morph:"morph",var:"var",isAllowed(e){let t=`${e}`;return Object.values(this).includes(t)}};var ma=grm_feature_GrmFeature;var _a=class{constructor(e=[]){this._features=[],this._types={},this.add(e)}add(e){if(!e||!Array.isArray(e))throw new Error("Features must be defined and must come in an array.");for(let t of e)this._features.push(t),this._types[t.type]=t}get items(){return this._features}forEach(e){this._features.forEach(e)}ofType(e){if(this.hasType(e))return this._types[e]}hasType(e){return this._types.hasOwnProperty(e)}},Ea=r(0),Ia=r.n(Ea);class lemma_Lemma{constructor(e,t,r=[],a={}){if(!e)throw new Error("Word should not be empty.");if(!t)throw new Error("Language should not be empty.");this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(t)),this.word=e,this.principalParts=r,this.features={},this.ID=Ia()()}get language(){return console.warn('Please use "languageID" instead of "language"'),this.languageCode}static readObject(e){return new lemma_Lemma(e.word,e.language,e.principalParts,e.pronunciation)}set feature(e){if(console.warn('Please use "addFeature" instead'),!e)throw new Error("feature data cannot be empty.");Array.isArray(e)||(e=[e]);let t=e[0].type;this.features[t]=[];for(let r of e){if(!(r instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(r.languageID,this.languageID))throw new Error('Language "'+r.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this.features[t].push(r)}}addFeature(e){if(!e)throw new Error("feature data cannot be empty.");if(!(e instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error('Language "'+e.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this.features[e.type]=e}addFeatures(e){if(!Array.isArray(e))throw new Error("Features must be in an array");for(let t of e)this.addFeature(t)}addTranslation(e){if(!e)throw new Error("translation data cannot be empty.");if("Translation"!==e.constructor.name)throw new Error("translation data must be a Translation object.");this.translation=e}isFullHomonym(e){return this.word===e.word&&this.features[feature_Feature.types.part]&&e.features[feature_Feature.types.part]&&this.features[feature_Feature.types.part].isEqual(e.features[feature_Feature.types.part])}}var ya=lemma_Lemma;class inflection_Inflection{constructor(e=null,t,r=null,a=null,n=null){if(!e&&!r)throw new Error("At least stem or suffix must be defined");if(!t)throw new Error("Language should not be empty.");if(!pa.supportsLanguage(t))throw new Error(`language ${t} not supported.`);this.stem=e,this.languageID=void 0,this.languageCode=void 0,({languageID:this.languageID,languageCode:this.languageCode}=pa.getLanguageAttrs(t)),this.model=pa.getLanguageModel(this.languageID),this.features=new Set,this.constraints={fullFormBased:!1,suffixBased:!1,obligatoryMatches:[],optionalMatches:[]},this.suffix=r,this.prefix=a,this.example=n}get form(){let e,t,r,a,n;return n=this.stem?this.stem:"",a=this.stem?" - ":"",this.model.direction===s?(t=this.prefix?a+this.prefix:"",e=(r=this.suffix?this.suffix+a:"")+n+t):e=(t=this.prefix?this.prefix+a:"")+n+(r=this.suffix?a+this.suffix:""),e}get language(){return console.warn('Please use a "languageID" instead of a "language"'),this.languageCode}setConstraints(){if(this.model.hasOwnProperty("getInflectionConstraints")){let e=this.model.getInflectionConstraints(this);this.constraints=Object.assign(this.constraints,e)}}compareWithWordDependsOnType(e,t,r=!0){const a=pa.getLanguageModel(this.languageID);let n;return n=this.constraints.irregularVerb?"Suffix"===t?this.suffix:this[feature_Feature.types.fullForm]?this[feature_Feature.types.fullForm].value:this.form:this.constraints.suffixBased?this.suffix:this.form,r?a.normalizeWord(n)===a.normalizeWord(e):n===e}compareWithWord(e,t=!0){const r=pa.getLanguageModel(this.languageID),a=this.constraints.suffixBased?this.suffix:this.form;return t?r.normalizeWord(a)===r.normalizeWord(e):a===e}disambiguatedBy(e){let t=!0;0!==this.features.length&&0!==e.features.length||(t=!1),e.features.length>this.features.length&&(t=!1);for(let r of e.features)if(!this[r]||!this[r].isEqual(e[r])){t=!1;break}return t}static readObject(e){let t=new inflection_Inflection(e.stem,e.languageCode,e.suffix,e.prefix,e.example);return t.languageID=pa.getLanguageIdFromCode(t.languageCode),t}set feature(e){if(console.warn('Please use "addFeature" instead.'),!e)throw new Error("Inflection feature data cannot be empty.");Array.isArray(e)||(e=[e]);let t=e[0].type;this[t]=[];for(let r of e){if(!(r instanceof feature_Feature))throw new Error("Inflection feature data must be a Feature object.");if(!pa.compareLanguages(r.languageID,this.languageID))throw new Error(`Language "${r.languageID.toString()}" of a feature does not match\n a language "${this.languageID.toString()}" of an Inflection object.`);this[t].push(r),this.features.add(t)}}addFeature(e){if(!e)throw new Error("feature data cannot be empty.");if(!(e instanceof feature_Feature))throw new Error("feature data must be a Feature object.");if(!pa.compareLanguages(e.languageID,this.languageID))throw new Error('Language "'+e.languageID.toString()+'" of a feature does not match a language "'+this.languageID.toString()+'" of a Lemma object.');this[e.type]=e,this.features.add(e.type)}addFeatures(e){if(!Array.isArray(e))throw new Error("Features must be in an array");for(let t of e)this.addFeature(t)}hasFeatureValue(e,t){return!!this.hasOwnProperty(e)&&this[e].values.includes(t)}}var Aa=inflection_Inflection;class lexeme_Lexeme{constructor(e,t,r=null){if(!e)throw new Error("Lemma should not be empty.");if(!(e instanceof ya))throw new Error("Lemma should be of Lemma object type.");if(!t)throw new Error("Inflections data should not be empty.");if(!Array.isArray(t))throw new Error("Inflection data should be provided in an array.");for(let e of t)if(!(e instanceof Aa))throw new Error("All inflection data should be of Inflection object type.");if(null!==r&&!(r instanceof definition_set_DefinitionSet))throw new Error("Meaning should be of DefinitionSet object type.");this.lemma=e,this.altLemmas=[],this.inflections=[],t.forEach(e=>{this.addInflection(e)}),this.meaning=r||new definition_set_DefinitionSet(this.lemma.word,this.lemma.languageID),this.disambiguated=!1}addInflection(e){e.lemma=this.lemma,this.inflections.push(e)}addAltLemma(e){this.altLemmas.push(e)}isPopulated(){return Object.entries(this.lemma.features).length>0||!this.meaning.isEmpty()||this.inflections.length>0}static disambiguate(e,t){let r=new lexeme_Lexeme(e.lemma,e.inflections,e.meaning);if(e.lemma.isFullHomonym(t.lemma)&&t.inflections.length>0){r.disambiguated=!0;let e=[];for(let a of r.inflections)for(let r of t.inflections)a.disambiguatedBy(r)&&e.push(a);if(r.inflections=e,0===r.inflections.length)for(let e of t.inflections)r.addInflection(e)}return r}getGroupedInflections(){return pa.getLanguageModel(this.lemma.languageID).groupInflectionsForDisplay(this.inflections)}static readObject(e){let t=ya.readObject(e.lemma),r=[];for(let t of e.inflections)r.push(Aa.readObject(t));let a=new lexeme_Lexeme(t,r);return a.meaning=definition_set_DefinitionSet.readObject(e.meaning),a}static getSortByTwoLemmaFeatures(e,t){return(r,a)=>{if(r.lemma.features[e]&&a.lemma.features[e]||!r.lemma.features[e]&&!a.lemma.features[[e]]){let n;return 0!==(n=r.lemma.features[e]&&a.lemma.features[e]?r.lemma.features[e].compareTo(a.lemma.features[e]):0)?n:r.lemma.features[t]&&a.lemma.features[t]?r.lemma.features[t].compareTo(a.lemma.features[t]):r.lemma.features[t]&&!a.lemma.features[t]?-1:!r.lemma.features[t]&&a.lemma.features[t]?1:0}return r.lemma.features[e]&&!a.lemma.features[e]?-1:!r.lemma.features[e]&&a.lemma.features[e]?1:0}}}var va=lexeme_Lexeme;class homonym_Homonym{constructor(e,t){if(!e||Array.isArray(e)&&0===e.length)throw new Error("Lexemes data should not be empty.");if(!Array.isArray(e))throw new Error("Lexeme data should be provided in an array.");for(let t of e)if(!(t instanceof va))throw new Error("All lexeme data should be of Lexeme object type.");this.lexemes=e,this.targetWord=t}static createSimpleForm(e,t,r=[]){let a=new ya(e,t),n=new va(a,r);return new homonym_Homonym([n],e)}static readObject(e){let t=[];if(e.lexemes)for(let r of e.lexemes)t.push(va.readObject(r));let r=new homonym_Homonym(t);return e.targetWord&&(r.targetWord=e.targetWord),r}get language(){return console.warn("Please use languageID instead"),pa.getLanguageCodeFromId(this.languageID)}get languageID(){if(this.lexemes&&this.lexemes[0]&&this.lexemes[0].lemma&&this.lexemes[0].lemma.languageID)return this.lexemes[0].lemma.languageID;throw new Error("Homonym has not been initialized properly. Unable to obtain language ID information.")}get inflections(){let e=[];for(const t of this.lexemes)e=e.concat(t.inflections);return e}isDisambiguated(){return this.lexemes.filter(e=>e.disambiguated).length>0}static disambiguate(e,t){if(0===t.length)return e;let r=t.shift(),a=[],n=[];for(let t of r.lexemes){let r=!1;for(let n of e.lexemes){let e=va.disambiguate(n,t);a.push(e),e.disambiguated&&(r=!0)}r||(t.disambiguated=!0,n.push(t))}let u=new homonym_Homonym([...a,...n],e.targetWord);return homonym_Homonym.disambiguate(u,t)}}var Fa=homonym_Homonym;var Sa=class{constructor(e="",t="",r=new Map([["default",t]])){this.uri=e,this.rights=r,this.rights.has("default")||this.rights.set("default",t)}toString(){return this.rights.get("default")}toLocaleString(e){return this.rights.get(e)||this.rights.get("default")}static getProxy(e=null,t={}){return new Proxy(t,{get:function(t,r){return"provider"===r?e:t[r]}})}};class Translation{constructor(e,t,r=[]){if(!e)throw new Error("Lemma should not be empty.");this.lemmaWord=e.word,this.languageCode=t,this.glosses=r}static readTranslationFromJSONList(e,t,r){if(!r||!Array.isArray(r))throw new Error("Recieved not proper translation list",r);let a=r.find(function(t){return t.in===e.word});return new Translation(e,t,a.translations)}static loadTranslations(e,t,r){e.addTranslation(this.readTranslationFromJSONList(e,t,r))}}var wa=Translation;r.d(t,"Constants",function(){return a}),r.d(t,"Definition",function(){return Zr}),r.d(t,"DefinitionSet",function(){return definition_set_DefinitionSet}),r.d(t,"Feature",function(){return feature_Feature}),r.d(t,"GrmFeature",function(){return ma}),r.d(t,"FeatureType",function(){return ta}),r.d(t,"FeatureList",function(){return _a}),r.d(t,"FeatureImporter",function(){return ea}),r.d(t,"Inflection",function(){return Aa}),r.d(t,"LanguageModelFactory",function(){return pa}),r.d(t,"Homonym",function(){return Fa}),r.d(t,"Lexeme",function(){return va}),r.d(t,"Lemma",function(){return ya}),r.d(t,"LatinLanguageModel",function(){return latin_language_model_LatinLanguageModel}),r.d(t,"GreekLanguageModel",function(){return greek_language_model_GreekLanguageModel}),r.d(t,"ArabicLanguageModel",function(){return arabic_language_model_ArabicLanguageModel}),r.d(t,"PersianLanguageModel",function(){return persian_language_model_PersianLanguageModel}),r.d(t,"ResourceProvider",function(){return Sa}),r.d(t,"Translation",function(){return wa})}])}); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5586042..8dedaba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15737 +1,15689 @@ -{ - "name": "alpheios-data-models", - "version": "1.1.9", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.44" - } - }, - "@babel/generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", - "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44", - "jsesc": "^2.5.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", - "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", - "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", - "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "@babel/template": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", - "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "lodash": "^4.2.0" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true - } - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", - "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/generator": "7.0.0-beta.44", - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", - "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "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 - } - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", - "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==", - "dev": true - }, - "@types/jest": { - "version": "23.1.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.1.5.tgz", - "integrity": "sha512-GlN74UAcT2i+G4BzVVI/aHip0HDXZaiY11VEjHzAz74+dB3hIeM5lJmnnZx4acxxinK9lT+uEH1Vsa5aWj6w4Q==", - "dev": true - }, - "@vue/component-compiler-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.2.0.tgz", - "integrity": "sha512-pS4zlcdD7BvedyB+IfiTfrbi6C977UMIfulSk8r6uL0BU46ZE2+fUj/zbSNSfVxeaj9ElmnSni5OMwF9np+b+w==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^6.0.20", - "postcss-selector-parser": "^3.1.1", - "prettier": "1.13.7", - "source-map": "^0.5.6", - "vue-template-es2015-compiler": "^1.6.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "@webassemblyjs/ast": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", - "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "debug": "^3.1.0", - "mamacro": "^0.0.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", - "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", - "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", - "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", - "dev": true, - "requires": { - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", - "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.5.13" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", - "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", - "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "mamacro": "^0.0.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", - "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", - "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "@webassemblyjs/ieee754": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", - "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", - "dev": true, - "requires": { - "ieee754": "^1.1.11" - } - }, - "@webassemblyjs/leb128": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", - "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", - "dev": true, - "requires": { - "long": "4.0.0" - }, - "dependencies": { - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - } - } - }, - "@webassemblyjs/utf8": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", - "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", - "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/helper-wasm-section": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "@webassemblyjs/wast-printer": "1.5.13", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", - "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", - "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", - "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", - "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/floating-point-hex-parser": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-code-frame": "1.5.13", - "@webassemblyjs/helper-fsm": "1.5.13", - "long": "^3.2.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", - "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "long": "^3.2.0" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "acorn-globals": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", - "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ajv-errors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", - "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", - "dev": true - }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "alpheios-node-build": { - "version": "github:alpheios-project/node-build#36a0eb70c704f49580a8a1f8a64a112120834611", - "from": "github:alpheios-project/node-build", - "dev": true, - "requires": { - "babel-core": "^6.26.3", - "babel-eslint": "^8.2.6", - "babel-jest": "^23.4.0", - "babel-loader": "^7.1.5", - "babel-plugin-dynamic-import-node": "^2.0.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", - "babel-plugin-transform-runtime": "^6.22.0", - "babel-preset-env": "^1.7.0", - "babel-register": "^6.22.0", - "chalk": "^2.4.1", - "clean-webpack-plugin": "^0.1.19", - "copy-webpack-plugin": "^4.5.2", - "css-loader": "^1.0.0", - "eslint": "^5.2.0", - "eslint-plugin-import": "^2.11.0", - "extract-text-webpack-plugin": "^3.0.2", - "file-loader": "^1.1.11", - "friendly-errors-webpack-plugin": "^1.7.0", - "fs": "0.0.1-security", - "html-webpack-plugin": "^3.2.0", - "imagemin": "^6.0.0", - "imagemin-jpegtran": "^5.0.2", - "imagemin-optipng": "^5.2.1", - "imagemin-svgo": "^7.0.0", - "mini-css-extract-plugin": "^0.4.1", - "node-sass": "^4.9.2", - "optimize-css-assets-webpack-plugin": "^5.0.0", - "parallel-webpack": "^2.3.0", - "path": "^0.12.7", - "postcss-import": "^11.0.0", - "postcss-loader": "^2.1.6", - "raw-loader": "^0.5.1", - "sass-loader": "^7.0.3", - "semver": "^5.5.0", - "source-map-loader": "^0.2.3", - "style-loader": "^0.21.0", - "uglifyjs-webpack-plugin": "^1.2.7", - "url-loader": "^1.0.1", - "vue-loader": "^15.2.6", - "vue-style-loader": "^4.1.1", - "vue-svg-loader": "^0.5.0", - "webpack": "^4.16.2", - "webpack-bundle-analyzer": "^2.13.1", - "webpack-cleanup-plugin": "^0.5.1", - "webpack-merge": "^4.1.3", - "webpack-pwa-manifest": "^3.6.2", - "workbox-webpack-plugin": "^3.4.1" - }, - "dependencies": { - "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" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "archive-type": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", - "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", - "dev": true, - "requires": { - "file-type": "^3.1.0" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - } - } - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-each-series": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", - "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "babel-eslint": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", - "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "^1.0.0" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-jest": { - "version": "23.4.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.2.tgz", - "integrity": "sha512-wg1LJ2tzsafXqPFVgAsYsMCVD5U7kwJZAvbZIxVm27iOewsQw1BR7VZifDlMTEWVo3wasoPPyMdKXWCsfFPr3Q==", - "dev": true, - "requires": { - "babel-plugin-istanbul": "^4.1.6", - "babel-preset-jest": "^23.2.0" - } - }, - "babel-loader": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", - "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", - "dev": true, - "requires": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.0.0.tgz", - "integrity": "sha512-meifxRxzzoT4j2+mYFYnlOZRuZOQVHis9DFv1GpYkufLMHL0W2n3z/Re7bjNN9rftcWonvGWgInRDsHiayqFXg==", - "dev": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" - } - }, - "babel-plugin-jest-hoist": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", - "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", - "dev": true - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", - "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-preset-env": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", - "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "babel-preset-jest": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", - "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^23.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, - "bfj-node4": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", - "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "check-types": "^7.3.0", - "tryer": "^1.0.0" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "bignumber.js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz", - "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg=", - "dev": true - }, - "bin-build": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", - "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", - "dev": true, - "requires": { - "archive-type": "^3.0.1", - "decompress": "^3.0.0", - "download": "^4.1.2", - "exec-series": "^1.0.0", - "rimraf": "^2.2.6", - "tempfile": "^1.0.0", - "url-regex": "^3.0.0" - }, - "dependencies": { - "tempfile": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", - "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", - "dev": true, - "requires": { - "os-tmpdir": "^1.0.0", - "uuid": "^2.0.1" - } - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "bin-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", - "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", - "dev": true, - "requires": { - "executable": "^1.0.0" - } - }, - "bin-version": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", - "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", - "dev": true, - "requires": { - "find-versions": "^1.0.0" - } - }, - "bin-version-check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", - "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", - "dev": true, - "requires": { - "bin-version": "^1.0.0", - "minimist": "^1.1.0", - "semver": "^4.0.3", - "semver-truncate": "^1.0.0" - }, - "dependencies": { - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - } - } - }, - "bin-wrapper": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", - "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", - "dev": true, - "requires": { - "bin-check": "^2.0.0", - "bin-version-check": "^2.1.0", - "download": "^4.0.0", - "each-async": "^1.1.1", - "lazy-req": "^1.0.0", - "os-filter-obj": "^1.0.0" - } - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "bmp-js": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz", - "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo=", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - }, - "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" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "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 - } - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" - }, - "dependencies": { - "electron-to-chromium": { - "version": "1.3.50", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz", - "integrity": "sha1-dDi3b5K0G5GfP73TUPvQdX2s3fc=", - "dev": true - } - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, - "buffer-to-vinyl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", - "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", - "dev": true, - "requires": { - "file-type": "^3.1.0", - "readable-stream": "^2.0.2", - "uuid": "^2.0.1", - "vinyl": "^1.0.0" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - }, - "dependencies": { - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - } - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - }, - "dependencies": { - "browserslist": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.0.1.tgz", - "integrity": "sha512-QqiiIWchEIkney3wY53/huI7ZErouNAdvOkjorUALAwRcu3tEwOV3Sh6He0DnP38mz1JjBpCBb50jQBmaYuHPw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000865", - "electron-to-chromium": "^1.3.52", - "node-releases": "^1.0.0-alpha.10" - }, - "dependencies": { - "caniuse-lite": { - "version": "1.0.30000874", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000874.tgz", - "integrity": "sha512-29nr1EPiHwrJTAHHsEmTt2h+55L8j2GNFdAcYPlRy2NX6iFz7ZZiepVI7kP/QqlnHLq3KvfWpbmGa0d063U09w==", - "dev": true - } - } - } - } - }, - "caniuse-lite": { - "version": "1.0.30000861", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000861.tgz", - "integrity": "sha512-aeEQ4kyd41qCl8XFbCjWgVBI3EOd66M9sC43MFn0kuD/vcrNqvoIAlKon4xdp8yMCYvVjdCltI3lgArj8I6cNA==", - "dev": true - }, - "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", - "dev": true, - "requires": { - "rsvp": "^3.3.3" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "caw": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz", - "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", - "dev": true, - "requires": { - "get-proxy": "^1.0.1", - "is-obj": "^1.0.0", - "object-assign": "^3.0.0", - "tunnel-agent": "^0.4.0" - }, - "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - } - } - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", - "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "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" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "check-types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", - "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==", - "dev": true - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, - "requires": { - "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 - } - } - }, - "clean-webpack-plugin": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz", - "integrity": "sha512-M1Li5yLHECcN2MahoreuODul5LkjohJGFxLPTjl3j1ttKrF5rgjZET1SJduuqxLAuT1gAPOdkhg03qcaaU1KeA==", - "dev": true, - "requires": { - "rimraf": "^2.6.1" - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", - "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.0", - "shallow-clone": "^1.0.0" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } - } - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "coa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.1.tgz", - "integrity": "sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ==", - "dev": true, - "requires": { - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "^1.1.1" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compare-versions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.3.0.tgz", - "integrity": "sha512-MAAAIOdi2s4Gl6rZ76PNcUa9IOYB+5ICdT41o5uMRf09aEu/F9RK+qhe8RjXNPwcTjGV7KU7h2P/fljThFVqyQ==", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "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 - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", - "dev": true - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz", - "integrity": "sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "globby": "^7.1.1", - "is-glob": "^4.0.0", - "loader-utils": "^1.1.0", - "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" - } - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", - "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 - }, - "cosmiconfig": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", - "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", - "dev": true, - "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "coveralls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.2.tgz", - "integrity": "sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==", - "dev": true, - "requires": { - "growl": "~> 1.10.0", - "js-yaml": "^3.11.0", - "lcov-parse": "^0.0.10", - "log-driver": "^1.2.7", - "minimist": "^1.2.0", - "request": "^2.85.0" - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "requires": { - "boom": "5.x.x" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - } - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-3.0.1.tgz", - "integrity": "sha512-jH4024SHZ3e0M7ann9VxpFpH3moplRXNz9ZBqvFMZqi09Yo5ARbs2wdPH8GqN9iRTlQynrbGbraNbBxBLei85Q==", - "dev": true, - "requires": { - "postcss": "^6.0.0", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", - "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash.camelcase": "^4.3.0", - "postcss": "^6.0.23", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-select-base-adapter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz", - "integrity": "sha1-AQKz0UYw34bD65+p9UVicBBs+ZA=", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - } - } - }, - "css-tree": { - "version": "1.0.0-alpha25", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha25.tgz", - "integrity": "sha512-XC6xLW/JqIGirnZuUWHXCHRaAjje2b3OIB0Vj5RIJo6mIi/AdJo30quQl5LxUl0gkXDIrTrFGbMlcZjyFplz1A==", - "dev": true, - "requires": { - "mdn-data": "^1.0.0", - "source-map": "^0.5.3" - } - }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", - "dev": true - }, - "css-url-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", - "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", - "dev": true - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "cssnano": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.0.5.tgz", - "integrity": "sha512-P2O0sz/YAAzqZVsSWOrbliPCr0c6abwVNQmFZ48AgejN/GbzwEf6IVFGQAj0UKHC+crv60wUAPQocAnDmeWlkg==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.0", - "is-resolvable": "^1.0.0", - "postcss": "^6.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.0.tgz", - "integrity": "sha1-wzQoe099SfstFwqS+SFGVXiOO2s=", - "dev": true, - "requires": { - "css-declaration-sorter": "^3.0.0", - "cssnano-util-raw-cache": "^4.0.0", - "postcss": "^6.0.0", - "postcss-calc": "^6.0.0", - "postcss-colormin": "^4.0.0", - "postcss-convert-values": "^4.0.0", - "postcss-discard-comments": "^4.0.0", - "postcss-discard-duplicates": "^4.0.0", - "postcss-discard-empty": "^4.0.0", - "postcss-discard-overridden": "^4.0.0", - "postcss-merge-longhand": "^4.0.0", - "postcss-merge-rules": "^4.0.0", - "postcss-minify-font-values": "^4.0.0", - "postcss-minify-gradients": "^4.0.0", - "postcss-minify-params": "^4.0.0", - "postcss-minify-selectors": "^4.0.0", - "postcss-normalize-charset": "^4.0.0", - "postcss-normalize-display-values": "^4.0.0", - "postcss-normalize-positions": "^4.0.0", - "postcss-normalize-repeat-style": "^4.0.0", - "postcss-normalize-string": "^4.0.0", - "postcss-normalize-timing-functions": "^4.0.0", - "postcss-normalize-unicode": "^4.0.0", - "postcss-normalize-url": "^4.0.0", - "postcss-normalize-whitespace": "^4.0.0", - "postcss-ordered-values": "^4.0.0", - "postcss-reduce-initial": "^4.0.0", - "postcss-reduce-transforms": "^4.0.0", - "postcss-svgo": "^4.0.0", - "postcss-unique-selectors": "^4.0.0" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.0.tgz", - "integrity": "sha1-vgooVuJfGF9feivMBiTii38Xmp8=", - "dev": true, - "requires": { - "postcss": "^6.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.0.tgz", - "integrity": "sha1-0qPeEDmqmLxOwlAB+gUDMMKhbaw=", - "dev": true - }, - "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.29" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "dev": true, - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - } - } - }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", - "dev": true - }, - "cssstyle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.0.0.tgz", - "integrity": "sha512-Bpuh47j2mRMY60X90mXaJAEtJwxvA2roZzbgwAXYhMbmwmakdRr4Cq9L5SkleKJNLOKqHIa2YWyOXDX3VgggSQ==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz", - "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", - "dev": true, - "requires": { - "abab": "^1.0.4", - "whatwg-mimetype": "^2.0.0", - "whatwg-url": "^6.4.0" - }, - "dependencies": { - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true - } - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", - "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", - "dev": true, - "requires": { - "buffer-to-vinyl": "^1.0.0", - "concat-stream": "^1.4.6", - "decompress-tar": "^3.0.0", - "decompress-tarbz2": "^3.0.0", - "decompress-targz": "^3.0.0", - "decompress-unzip": "^3.0.0", - "stream-combiner2": "^1.1.1", - "vinyl-assign": "^1.0.1", - "vinyl-fs": "^2.2.0" - } - }, - "decompress-tar": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", - "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", - "dev": true, - "requires": { - "is-tar": "^1.0.0", - "object-assign": "^2.0.0", - "strip-dirs": "^1.0.0", - "tar-stream": "^1.1.1", - "through2": "^0.6.1", - "vinyl": "^0.4.3" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } - } - }, - "decompress-tarbz2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", - "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", - "dev": true, - "requires": { - "is-bzip2": "^1.0.0", - "object-assign": "^2.0.0", - "seek-bzip": "^1.0.3", - "strip-dirs": "^1.0.0", - "tar-stream": "^1.1.1", - "through2": "^0.6.1", - "vinyl": "^0.4.3" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } - } - }, - "decompress-targz": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", - "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", - "dev": true, - "requires": { - "is-gzip": "^1.0.0", - "object-assign": "^2.0.0", - "strip-dirs": "^1.0.0", - "tar-stream": "^1.1.1", - "through2": "^0.6.1", - "vinyl": "^0.4.3" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } - } - }, - "decompress-unzip": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", - "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", - "dev": true, - "requires": { - "is-zip": "^1.0.0", - "read-all-stream": "^3.0.0", - "stat-mode": "^0.2.0", - "strip-dirs": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^1.0.0", - "yauzl": "^2.2.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "deglob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz", - "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=", - "dev": true, - "requires": { - "find-root": "^1.0.0", - "glob": "^7.0.5", - "ignore": "^3.0.9", - "pkg-config": "^1.1.0", - "run-parallel": "^1.1.2", - "uniq": "^1.0.1" - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", - "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", - "dev": true, - "requires": { - "utila": "~0.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", - "dev": true - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "download": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz", - "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", - "dev": true, - "requires": { - "caw": "^1.0.1", - "concat-stream": "^1.4.7", - "each-async": "^1.0.0", - "filenamify": "^1.0.1", - "got": "^5.0.0", - "gulp-decompress": "^1.2.0", - "gulp-rename": "^1.2.0", - "is-url": "^1.2.0", - "object-assign": "^4.0.1", - "read-all-stream": "^3.0.0", - "readable-stream": "^2.0.2", - "stream-combiner2": "^1.1.1", - "vinyl": "^1.0.0", - "vinyl-fs": "^2.2.0", - "ware": "^1.2.0" - } - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-async": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", - "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", - "dev": true, - "requires": { - "onetime": "^1.0.0", - "set-immediate-shim": "^1.0.0" - }, - "dependencies": { - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - } - } - }, - "easy-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", - "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.57", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.57.tgz", - "integrity": "sha512-YYpZlr6mzR8cK5VRmTZydEt5Mp+WMg1/syrO40PoQzl76vJ+oQchL2d3FmEcWzw3FYqJVYJP/kYYSzTa7FLXwg==", - "dev": true - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true, - "requires": { - "iconv-lite": "~0.4.13" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz", - "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==", - "dev": true, - "requires": { - "stackframe": "^1.0.4" - } - }, - "es-abstract": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", - "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - } - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "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 - }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "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, - "optional": true - } - } - }, - "eslint": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", - "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", - "dev": true, - "requires": { - "ajv": "^6.5.0", - "babel-code-frame": "^6.26.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.2", - "imurmurhash": "^0.1.4", - "inquirer": "^5.2.0", - "is-resolvable": "^1.1.0", - "js-yaml": "^3.11.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^2.0.0", - "require-uncached": "^1.0.3", - "semver": "^5.5.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^4.0.3", - "text-table": "^0.2.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", - "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", - "dev": true - }, - "acorn-jsx": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", - "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", - "dev": true, - "requires": { - "acorn": "^5.0.3" - } - }, - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "espree": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", - "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", - "dev": true, - "requires": { - "acorn": "^5.6.0", - "acorn-jsx": "^4.1.1" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", - "dev": true, - "requires": { - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - } - } - } - }, - "eslint-config-standard": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", - "integrity": "sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==", - "dev": true - }, - "eslint-config-standard-jsx": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-5.0.0.tgz", - "integrity": "sha512-rLToPAEqLMPBfWnYTu6xRhm2OWziS2n40QFqJ8jAM8NSVzeVKTa3nclhsU4DpPJQRY60F34Oo1wi/71PN/eITg==", - "dev": true - }, - "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "resolve": "^1.5.0" - }, - "dependencies": { - "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - } - } - }, - "eslint-module-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", - "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", - "dev": true, - "requires": { - "debug": "^2.6.8", - "pkg-dir": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", - "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", - "dev": true, - "requires": { - "contains-path": "^0.1.0", - "debug": "^2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.2.0", - "has": "^1.0.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.3", - "read-pkg-up": "^2.0.0", - "resolve": "^1.6.0" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "eslint-plugin-node": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", - "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", - "dev": true, - "requires": { - "ignore": "^3.3.6", - "minimatch": "^3.0.4", - "resolve": "^1.3.3", - "semver": "^5.4.1" - }, - "dependencies": { - "resolve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", - "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - } - } - }, - "eslint-plugin-promise": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.7.0.tgz", - "integrity": "sha512-2WO+ZFh7vxUKRfR0cOIMrWgYKdR6S1AlOezw6pC52B6oYpd5WFghN+QHxvrRdZMtbo8h3dfUZ2o1rWb0UPbKtg==", - "dev": true - }, - "eslint-plugin-react": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz", - "integrity": "sha512-KC7Snr4YsWZD5flu6A5c0AcIZidzW3Exbqp7OT67OaD2AppJtlBr/GuPrW/vaQM/yfZotEvKAdrxrO+v8vwYJA==", - "dev": true, - "requires": { - "doctrine": "^2.0.2", - "has": "^1.0.1", - "jsx-ast-utils": "^2.0.1", - "prop-types": "^15.6.0" - } - }, - "eslint-plugin-standard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", - "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", - "dev": true - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true - }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "p-finally": "^1.0.0", - "pify": "^3.0.0", - "rimraf": "^2.5.4", - "tempfile": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "exec-series": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", - "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", - "dev": true, - "requires": { - "async-each-series": "^1.1.0", - "object-assign": "^4.1.0" - } - }, - "exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", - "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", - "dev": true, - "requires": { - "merge": "^1.2.0" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "executable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", - "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", - "dev": true, - "requires": { - "meow": "^3.1.0" - } - }, - "exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", - "dev": true - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "expect": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-23.5.0.tgz", - "integrity": "sha512-aG083W63tBloy8YgafWuC44EakjYe0Q6Mg35aujBPvyNU38DvLat9BVzOihNP2NZDLaCJiFNe0vejbtO6knnlA==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^23.5.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^23.5.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0" - }, - "dependencies": { - "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" - } - } - } - }, - "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extract-text-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", - "dev": true, - "requires": { - "async": "^2.4.1", - "loader-utils": "^1.1.0", - "schema-utils": "^0.3.0", - "webpack-sources": "^1.0.1" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fancy-log": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", - "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "time-stamp": "^1.0.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "fast-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", - "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", - "dev": true - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "requires": { - "bser": "^2.0.0" - } - }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "dev": true, - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.9" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - } - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "file-loader": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^0.4.5" - }, - "dependencies": { - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", - "dev": true - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "filename-reserved-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", - "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", - "dev": true - }, - "filenamify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", - "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", - "dev": true, - "requires": { - "filename-reserved-regex": "^1.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - } - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "find-versions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", - "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", - "dev": true, - "requires": { - "array-uniq": "^1.0.0", - "get-stdin": "^4.0.1", - "meow": "^3.5.0", - "semver-regex": "^1.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } - } - }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true - }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", - "dev": true, - "requires": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" - } - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "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" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "friendly-errors-webpack-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz", - "integrity": "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - } - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", - "dev": true - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "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": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": 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-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-proxy": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", - "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", - "dev": true, - "requires": { - "rc": "^1.1.2" - } - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "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" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^5.0.3", - "glob-parent": "^3.0.0", - "micromatch": "^2.3.7", - "ordered-read-streams": "^0.3.0", - "through2": "^0.6.0", - "to-absolute-glob": "^0.1.1", - "unique-stream": "^2.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "dev": true, - "requires": { - "min-document": "^2.19.0", - "process": "~0.5.1" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - } - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "glogg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", - "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "got": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", - "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "dev": true, - "requires": { - "create-error-class": "^3.0.1", - "duplexer2": "^0.1.4", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "node-status-codes": "^1.0.0", - "object-assign": "^4.0.1", - "parse-json": "^2.1.0", - "pinkie-promise": "^2.0.0", - "read-all-stream": "^3.0.0", - "readable-stream": "^2.0.5", - "timed-out": "^3.0.0", - "unzip-response": "^1.0.2", - "url-parse-lax": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "gulp-decompress": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", - "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", - "dev": true, - "requires": { - "archive-type": "^3.0.0", - "decompress": "^3.0.0", - "gulp-util": "^3.0.1", - "readable-stream": "^2.0.2" - } - }, - "gulp-rename": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", - "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", - "dev": true - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", - "dev": true, - "requires": { - "convert-source-map": "^1.1.1", - "graceful-fs": "^4.1.2", - "strip-bom": "^2.0.0", - "through2": "^2.0.0", - "vinyl": "^1.0.0" - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "gzip-size": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", - "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true - } - } - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, - "optional": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "^1.0.2" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "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-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, - "hash.js": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", - "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", - "dev": true - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-minifier": { - "version": "3.5.20", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz", - "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.1.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - } - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1", - "domhandler": "2.1", - "domutils": "1.1", - "readable-stream": "1.0" - }, - "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - } - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", - "dev": true - }, - "imagemin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-6.0.0.tgz", - "integrity": "sha512-m4Mxwt2QvCp1F85HXoTungXk0Y6XzuvQGqrK9qEddQfo/7x4aZjRENmyXXfc29ei4Mk55rW002bORG86YM3/aQ==", - "dev": true, - "requires": { - "file-type": "^8.1.0", - "globby": "^8.0.1", - "make-dir": "^1.0.0", - "p-pipe": "^1.1.0", - "pify": "^3.0.0", - "replace-ext": "^1.0.0" - }, - "dependencies": { - "globby": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "imagemin-jpegtran": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-5.0.2.tgz", - "integrity": "sha1-5ogiY7j3kW/duABkDPddLpcNKtY=", - "dev": true, - "requires": { - "exec-buffer": "^3.0.0", - "is-jpg": "^1.0.0", - "jpegtran-bin": "^3.0.0" - } - }, - "imagemin-optipng": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", - "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", - "dev": true, - "requires": { - "exec-buffer": "^3.0.0", - "is-png": "^1.0.0", - "optipng-bin": "^3.0.0" - } - }, - "imagemin-svgo": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-7.0.0.tgz", - "integrity": "sha512-+iGJFaPIMx8TjFW6zN+EkOhlqcemdL7F3N3Y0wODvV2kCUBuUtZK7DRZc1+Zfu4U2W/lTMUyx2G8YMOrZntIWg==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "svgo": "^1.0.5" - } - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "intl-messageformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz", - "integrity": "sha1-NFvNRt5jC3aDMwwuUhd/9eq0hPw=", - "dev": true, - "requires": { - "intl-messageformat-parser": "1.4.0" - } - }, - "intl-messageformat-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz", - "integrity": "sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip-regex": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", - "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", - "dev": true - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", - "dev": true - }, - "is-absolute": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", - "dev": true, - "requires": { - "is-relative": "^0.1.0" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-bzip2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", - "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", - "dev": true - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-ci": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", - "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", - "dev": true, - "requires": { - "ci-info": "^1.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", - "dev": true - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-gzip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", - "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", - "dev": true - }, - "is-jpg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.1.tgz", - "integrity": "sha1-KW1X/dmc4BBDSnKD40armhA16XU=", - "dev": true - }, - "is-natural-number": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", - "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-png": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", - "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", - "dev": true - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-relative": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", - "dev": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-tar": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", - "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", - "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-zip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", - "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isemail": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.3.tgz", - "integrity": "sha512-5xbsG5wYADIcB+mfLsd+nst1V/D+I7EU7LEZPo2GOIMu4JzfcRs5yQoypP4avA7QtUqgxYLKBYNv4IdzBmbhdw==", - "dev": true, - "requires": { - "punycode": "2.x.x" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true, - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-api": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", - "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", - "dev": true, - "requires": { - "async": "^2.1.4", - "compare-versions": "^3.1.0", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-report": "^1.1.4", - "istanbul-lib-source-maps": "^1.2.4", - "istanbul-reports": "^1.3.0", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" - } - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz", - "integrity": "sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.0", - "semver": "^5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", - "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", - "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", - "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "jest": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-23.5.0.tgz", - "integrity": "sha512-+X3Fk4rD8dTnHoIxHJymZthbtYllvSOnXAApQltvyLkHsv+fqyC/SZptUJDbXkFsqZJyyIXMySkdzerz3fv4oQ==", - "dev": true, - "requires": { - "import-local": "^1.0.0", - "jest-cli": "^23.5.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "jest-cli": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.5.0.tgz", - "integrity": "sha512-Kxi2QH8s6NkpPgboza/plpmQ2bjUQ+MwYv7vM5rDwJz/x+NB4YoLXFikPXLWNP0JuYpMvYwITKneFljnNKhq2Q==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.3.1", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-source-maps": "^1.2.4", - "jest-changed-files": "^23.4.2", - "jest-config": "^23.5.0", - "jest-environment-jsdom": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^23.5.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve-dependencies": "^23.5.0", - "jest-runner": "^23.5.0", - "jest-runtime": "^23.5.0", - "jest-snapshot": "^23.5.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.5.0", - "jest-watcher": "^23.4.0", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "prompts": "^0.1.9", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^11.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "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 - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "jest-changed-files": { - "version": "23.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", - "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", - "dev": true, - "requires": { - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.5.0.tgz", - "integrity": "sha512-JENhQpLaVwXWPLUkhPYgIfecHKsU8GR1vj79rS4n0LSRsHx/U2wItZKoKAd5vtt2J58JPxRq4XheG79jd4fI7Q==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^23.4.2", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^23.4.0", - "jest-environment-node": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^23.5.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.5.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.5.0", - "micromatch": "^2.3.11", - "pretty-format": "^23.5.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "jest-diff": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.5.0.tgz", - "integrity": "sha512-Miz8GakJIz443HkGpVOAyHQgSYqcgs2zQmDJl4oV7DYrFotchdoQvxceF6LhfpRBV1LOUGcFk5Dd/ffSXVwMsA==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.5.0" - } - }, - "jest-docblock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", - "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.5.0.tgz", - "integrity": "sha512-8BgebQgAJmWXpYp4Qt9l3cn1Xei0kZ7JL4cs/NXh7750ATlPGzRRYbutFVJTk5B/Lt3mjHP3G3tLQLyBOCSHGA==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "pretty-format": "^23.5.0" - } - }, - "jest-environment-jsdom": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", - "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-node": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", - "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0" - } - }, - "jest-fetch-mock": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-1.6.5.tgz", - "integrity": "sha512-qPz5Zf8+W16pu6cvdwXkb2SwRfxGoQbbGB6HcIBFND0gnWKMfQilZew3PSODnOWQZF/pzBPi7ZIT6Yz5D0va1Q==", - "dev": true, - "requires": { - "@types/jest": "^23.0.0", - "isomorphic-fetch": "^2.2.1", - "promise-polyfill": "^7.1.1" - } - }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true - }, - "jest-haste-map": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.5.0.tgz", - "integrity": "sha512-bt9Swigb6KZ6ZQq/fQDUwdUeHenVvZ6G/lKwJjwRGp+Fap8D4B3bND3FaeJg7vXVsLX8hXshRArbVxLop/5wLw==", - "dev": true, - "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "invariant": "^2.2.4", - "jest-docblock": "^23.2.0", - "jest-serializer": "^23.0.1", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "sane": "^2.0.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "jest-jasmine2": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz", - "integrity": "sha512-xMgvDUvgqKpilsGnneC9Qr+uIlROxKI3UoJcHZeUlu6AKpQyEkGh0hKbfM0NaEjX5sy7WeFQEhcp/AiWlHcc0A==", - "dev": true, - "requires": { - "babel-traverse": "^6.0.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^23.5.0", - "is-generator-fn": "^1.0.0", - "jest-diff": "^23.5.0", - "jest-each": "^23.5.0", - "jest-matcher-utils": "^23.5.0", - "jest-message-util": "^23.4.0", - "jest-snapshot": "^23.5.0", - "jest-util": "^23.4.0", - "pretty-format": "^23.5.0" - } - }, - "jest-leak-detector": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz", - "integrity": "sha512-40VsHQCIEslxg91Zg5NiZGtPeWSBLXiD6Ww+lhHlIF6u8uSQ+xgiD6NbWHFOYs1VBRI+V/ym7Q1aOtVg9tqMzQ==", - "dev": true, - "requires": { - "pretty-format": "^23.5.0" - } - }, - "jest-matcher-utils": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz", - "integrity": "sha512-hmQUKUKYOExp3T8dNYK9A9copCFYKoRLcY4WDJJ0Z2u3oF6rmAhHuZtmpHBuGpASazobBxm3TXAfAXDvz2T7+Q==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.5.0" - } - }, - "jest-message-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", - "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "jest-mock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", - "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", - "dev": true - }, - "jest-regex-util": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", - "dev": true - }, - "jest-resolve": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.5.0.tgz", - "integrity": "sha512-CRPc0ebG3baNKz/QicIy5rGfzYpMNm8AjEl/tDQhehq/QC4ttyauZdvAXel3qo+4Gri9ljajnxW+hWyxZbbcnQ==", - "dev": true, - "requires": { - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "realpath-native": "^1.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz", - "integrity": "sha512-APZc/CjfzL8rH/wr+Gh7XJJygYaDjMQsWaJy4ZR1WaHWKude4WcfdU8xjqaNbx5NsVF2P2tVvsLbumlPXCdJOw==", - "dev": true, - "requires": { - "jest-regex-util": "^23.3.0", - "jest-snapshot": "^23.5.0" - } - }, - "jest-runner": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.5.0.tgz", - "integrity": "sha512-cpBvkBTVmW1ab1thbtoh2m6VnnM0BYKhj3MEzbOTZjPfzoIjUVIxLUTDobVNOvEK7aTEb/2oiPlNoOTSNJx8mw==", - "dev": true, - "requires": { - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^23.5.0", - "jest-docblock": "^23.2.0", - "jest-haste-map": "^23.5.0", - "jest-jasmine2": "^23.5.0", - "jest-leak-detector": "^23.5.0", - "jest-message-util": "^23.4.0", - "jest-runtime": "^23.5.0", - "jest-util": "^23.4.0", - "jest-worker": "^23.2.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.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 - }, - "source-map-support": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.8.tgz", - "integrity": "sha512-WqAEWPdb78u25RfKzOF0swBpY0dKrNdjc4GvLwm7ScX/o9bj8Eh/YL8mcMhBHYDGl87UkkSXDOFnW4G7GhWhGg==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "jest-runtime": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.5.0.tgz", - "integrity": "sha512-WzzYxYtoU8S1MJns0G4E3BsuFUTFBiu1qsk3iC9OTugzNQcQKt0BoOGsT7wXCKqkw/09QdV77vvaeJXST2Efgg==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-plugin-istanbul": "^4.1.6", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-config": "^23.5.0", - "jest-haste-map": "^23.5.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.5.0", - "jest-snapshot": "^23.5.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.5.0", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^11.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "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 - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "jest-serializer": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", - "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", - "dev": true - }, - "jest-snapshot": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.5.0.tgz", - "integrity": "sha512-NYg8MFNVyPXmnnihiltasr4t1FJEXFbZFaw1vZCowcnezIQ9P1w+yxTwjWT564QP24Zbn5L9cjxLs8d6K+pNlw==", - "dev": true, - "requires": { - "babel-types": "^6.0.0", - "chalk": "^2.0.1", - "jest-diff": "^23.5.0", - "jest-matcher-utils": "^23.5.0", - "jest-message-util": "^23.4.0", - "jest-resolve": "^23.5.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^23.5.0", - "semver": "^5.5.0" - } - }, - "jest-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", - "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", - "dev": true, - "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^23.4.0", - "mkdirp": "^0.5.1", - "slash": "^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 - } - } - }, - "jest-validate": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.5.0.tgz", - "integrity": "sha512-XmStdYhfdiDKacXX5sNqEE61Zz4/yXaPcDsKvVA0429RBu2pkQyIltCVG7UitJIEAzSs3ociQTdyseAW8VGPiA==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^23.5.0" - } - }, - "jest-watcher": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", - "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "string-length": "^2.0.0" - } - }, - "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", - "dev": true, - "requires": { - "merge-stream": "^1.0.1" - } - }, - "jimp": { - "version": "0.2.28", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", - "integrity": "sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI=", - "dev": true, - "requires": { - "bignumber.js": "^2.1.0", - "bmp-js": "0.0.3", - "es6-promise": "^3.0.2", - "exif-parser": "^0.1.9", - "file-type": "^3.1.0", - "jpeg-js": "^0.2.0", - "load-bmfont": "^1.2.3", - "mime": "^1.3.4", - "mkdirp": "0.5.1", - "pixelmatch": "^4.0.0", - "pngjs": "^3.0.0", - "read-chunk": "^1.0.1", - "request": "^2.65.0", - "stream-to-buffer": "^0.1.0", - "tinycolor2": "^1.1.2", - "url-regex": "^3.0.0" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - } - } - }, - "joi": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", - "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", - "dev": true, - "requires": { - "hoek": "4.x.x", - "isemail": "3.x.x", - "topo": "2.x.x" - } - }, - "jpeg-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz", - "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=", - "dev": true - }, - "jpegtran-bin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz", - "integrity": "sha1-9g7PSumZwL2tLp+83ytvCYHnops=", - "dev": true, - "requires": { - "bin-build": "^2.0.0", - "bin-wrapper": "^3.0.0", - "logalot": "^2.0.0" - } - }, - "js-base64": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz", - "integrity": "sha512-hm2nYpDrwoO/OzBhdcqs/XGT6XjSuSSCVEpia+Kl2J6x4CYt5hISlVL/AYU1khoDXv0AQVgxtdJySb9gjAn56Q==", - "dev": true - }, - "js-message": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", - "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", - "dev": true - }, - "js-queue": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", - "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", - "dev": true, - "requires": { - "easy-stack": "^1.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "dev": true, - "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" - } - }, - "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", - "dev": true, - "requires": { - "mime-db": "~1.35.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "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 - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", - "dev": true, - "requires": { - "array-includes": "^3.0.3" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "kleur": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.1.tgz", - "integrity": "sha512-Zq/jyANIJ2uX8UZjWlqLwbyhcxSXJtT/Y89lClyeZd3l++3ztL1I5SSCYrbcbwSunTjC88N3WuMk0kRDQD6gzA==", - "dev": true - }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "dev": true, - "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true - }, - "lazy-req": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", - "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", - "dev": true - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lcov-parse": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", - "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", - "dev": true - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "load-bmfont": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.3.1.tgz", - "integrity": "sha512-lQkEawgez06lM2iw1vQEEOtVLJXyMzFcUqbwWMrB0g6zwhdUs/+e0KNd1zEJ7OFBbMVz0tbzQyjgjtTB47+PBg==", - "dev": true, - "requires": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - } - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "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 - }, - "lodash.endswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", - "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "^3.0.0" - } - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.tail": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", - "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true - }, - "logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", - "dev": true, - "requires": { - "figures": "^1.3.5", - "squeak": "^1.0.0" - }, - "dependencies": { - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - } - } - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "^3.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "indent-string": "^2.1.0", - "longest": "^1.0.0", - "meow": "^3.3.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } - } - }, - "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "merge": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", - "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", - "dev": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "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 - } - } - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "merge2": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", - "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "~1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "requires": { - "dom-walk": "^0.1.0" - } - }, - "mini-css-extract-plugin": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.2.tgz", - "integrity": "sha512-ots7URQH4wccfJq9Ssrzu2+qupbncAce4TmTzunI9CIwlQMp2XI+WNUw6xWF6MMAGAm1cbUVINrSjATaVMyKXg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "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.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dev": true, - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - }, - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "neo-async": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", - "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", - "dev": true - }, - "nice-try": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", - "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true, - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "dev": true, - "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" - } - }, - "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", - "dev": true, - "requires": { - "mime-db": "~1.35.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "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 - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-ipc": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", - "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" - } - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - } - }, - "node-notifier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", - "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "semver": "^5.4.1", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "node-releases": { - "version": "1.0.0-alpha.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.10.tgz", - "integrity": "sha512-BSQrRgOfN6L/MoKIa7pRUc7dHvflCXMcqyTBvphixcSsgJTuUd24vAFONuNfVsuwTyz28S1HEc9XN6ZKylk4Hg==", - "dev": true, - "requires": { - "semver": "^5.3.0" - } - }, - "node-sass": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz", - "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash.assign": "^4.2.0", - "lodash.clonedeep": "^4.3.2", - "lodash.mergewith": "^4.6.0", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.10.0", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "2.87.0", - "sass-graph": "^2.2.4", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - } - } - }, - "node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", - "dev": true - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-url": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.2.0.tgz", - "integrity": "sha512-WvF3Myk0NhXkG8S9bygFM4IC1KOvnVJGq0QoGeoqOYOBeinBZp5ybW3QuYbTc89lkWBMM9ZBO4QGRoc0353kKA==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nwsapi": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.8.tgz", - "integrity": "sha512-7RZ+qbFGiVc6v14Y8DSZjPN1wZPOaMbiiP4tzf5eNuyOITAeOIA3cMhjuKUypVIqBgCSg1KaSyAv8Ocq/0ZJ1A==", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", - "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.6.1", - "function-bind": "^1.1.0", - "has": "^1.0.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "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" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opener": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.0.tgz", - "integrity": "sha512-MD4s/o61y2slS27zm2s4229V2gAUHX0/e3/XOmY/jsXwhysjjCIHN8lx7gqZCrZk19ym+HjCUWHeMKD7YJtKCQ==", - "dev": true - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } - } - }, - "optimize-css-assets-webpack-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.0.tgz", - "integrity": "sha512-MXqrLyfiOOpwm+TOWjGskX+sIgu7qlW2oozkEKnS8Z+LWAkSK7Qf6PV9RGRfMd7GmRX3zW2A3oRo0+f23POcXQ==", - "dev": true, - "requires": { - "cssnano": "^4.0.2", - "last-call-webpack-plugin": "^3.0.0" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "optipng-bin": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", - "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", - "dev": true, - "requires": { - "bin-build": "^2.0.0", - "bin-wrapper": "^3.0.0", - "logalot": "^2.0.0" - } - }, - "ordered-read-streams": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", - "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", - "dev": true, - "requires": { - "is-stream": "^1.0.1", - "readable-stream": "^2.0.1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-filter-obj": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", - "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-pipe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", - "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", - "dev": true - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parallel-webpack": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/parallel-webpack/-/parallel-webpack-2.3.0.tgz", - "integrity": "sha512-RCIDF+YOqyAJeM8NumtOQ8JYjUXexDRIN4slFNfvUp1RxLB1zLeLZMAwlP6s7l9LhuR5xJ2pv8ckIsdESzSqog==", - "dev": true, - "requires": { - "ajv": "^4.9.2", - "bluebird": "^3.0.6", - "chalk": "^1.1.1", - "interpret": "^1.0.1", - "lodash.assign": "^4.0.8", - "lodash.endswith": "^4.0.1", - "lodash.flatten": "^4.2.0", - "minimist": "^1.2.0", - "node-ipc": "^9.1.0", - "pluralize": "^1.2.1", - "supports-color": "^3.1.2", - "worker-farm": "^1.3.1" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=", - "dev": true - }, - "parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=", - "dev": true - }, - "parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "dev": true, - "requires": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "parse-headers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", - "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", - "dev": true, - "requires": { - "for-each": "^0.3.2", - "trim": "0.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "dev": true, - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "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-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", - "dev": true, - "requires": { - "pngjs": "^3.0.0" - } - }, - "pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "pkg-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", - "dev": true, - "requires": { - "debug-log": "^1.0.0", - "find-root": "^1.0.0", - "xtend": "^4.0.1" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "pngjs": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", - "integrity": "sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "dependencies": { - "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" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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 - }, - "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" - } - } - } - }, - "postcss-calc": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-6.0.1.tgz", - "integrity": "sha1-PSQXG79udinUIqQ26/5t2VEfQzA=", - "dev": true, - "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^6.0.0", - "postcss-selector-parser": "^2.2.2", - "reduce-css-calc": "^2.0.0" - } - }, - "postcss-colormin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.1.tgz", - "integrity": "sha1-bxwYoBVbxpYT8v8ThD4uSuj/C74=", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.0.1.tgz", - "integrity": "sha512-QqiiIWchEIkney3wY53/huI7ZErouNAdvOkjorUALAwRcu3tEwOV3Sh6He0DnP38mz1JjBpCBb50jQBmaYuHPw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000865", - "electron-to-chromium": "^1.3.52", - "node-releases": "^1.0.0-alpha.10" - } - }, - "caniuse-lite": { - "version": "1.0.30000874", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000874.tgz", - "integrity": "sha512-29nr1EPiHwrJTAHHsEmTt2h+55L8j2GNFdAcYPlRy2NX6iFz7ZZiepVI7kP/QqlnHLq3KvfWpbmGa0d063U09w==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.0.tgz", - "integrity": "sha1-d9d9mu0dxOaVbmUcw0nVMwWHb2I=", - "dev": true, - "requires": { - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-discard-comments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.0.tgz", - "integrity": "sha1-loSimedrPpMmPvj9KtvxocCP2I0=", - "dev": true, - "requires": { - "postcss": "^6.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.0.tgz", - "integrity": "sha1-QvPCZ/hfqQngQsNXZ+z9Zcsr1yw=", - "dev": true, - "requires": { - "postcss": "^6.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.0.tgz", - "integrity": "sha1-VeGKWcdBKOOMfSgEvPpAVmEfuX8=", - "dev": true, - "requires": { - "postcss": "^6.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.0.tgz", - "integrity": "sha1-Sgv4WXh4TPH4HtLBwf2dlkodofo=", - "dev": true, - "requires": { - "postcss": "^6.0.0" - } - }, - "postcss-import": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", - "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", - "dev": true, - "requires": { - "postcss": "^6.0.1", - "postcss-value-parser": "^3.2.3", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-load-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", - "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", - "dev": true, - "requires": { - "cosmiconfig": "^4.0.0", - "import-cwd": "^2.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", - "dev": true, - "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0", - "require-from-string": "^2.0.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "postcss-loader": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", - "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^6.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^0.4.0" - }, - "dependencies": { - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.4.tgz", - "integrity": "sha512-wLi2u22mSdBDBjLF8pyaPCNppOmqb+B4O0Dlt/4nUwn79EltDUJmCeCDYqo7SB2z9puOHTftnxviY4J9xS+ygQ==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - } - }, - "postcss-merge-rules": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.1.tgz", - "integrity": "sha1-Qw/Vmz8u0uivzQsxJ47aOYVKuxA=", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^6.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.0.1.tgz", - "integrity": "sha512-QqiiIWchEIkney3wY53/huI7ZErouNAdvOkjorUALAwRcu3tEwOV3Sh6He0DnP38mz1JjBpCBb50jQBmaYuHPw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000865", - "electron-to-chromium": "^1.3.52", - "node-releases": "^1.0.0-alpha.10" - } - }, - "caniuse-lite": { - "version": "1.0.30000874", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000874.tgz", - "integrity": "sha512-29nr1EPiHwrJTAHHsEmTt2h+55L8j2GNFdAcYPlRy2NX6iFz7ZZiepVI7kP/QqlnHLq3KvfWpbmGa0d063U09w==", - "dev": true - }, - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "dependencies": { - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - } - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.0.tgz", - "integrity": "sha1-TMM9KD1qgXWQNudX75gdksvYW+0=", - "dev": true, - "requires": { - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-gradients": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.0.tgz", - "integrity": "sha1-P8ORZDnSepu4Bm23za2AFlDrCQ4=", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-params": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.0.tgz", - "integrity": "sha1-BekWbuSMBa9lGYnOhNOcG015BnQ=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.0.tgz", - "integrity": "sha1-sen2xGNBbT/Nyybnt4XZX2FXiq0=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^6.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "dependencies": { - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - } - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", - "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - } - }, - "postcss-normalize-charset": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.0.tgz", - "integrity": "sha1-JFJyknAtXoEp6vo9HeSe1RpqtzA=", - "dev": true, - "requires": { - "postcss": "^6.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", - "integrity": "sha1-lQ4Me+NEV3ChYP/9a2ZEw8DNj4k=", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-positions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.0.tgz", - "integrity": "sha1-7pNDq5gbgixjq3JhXszNCFZERaM=", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.0.tgz", - "integrity": "sha1-txHFks8W+vn/V15C+hALZ5kIPv8=", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.0.tgz", - "integrity": "sha1-cYy20wpvrGrGqDDjLAbAfbxm/l0=", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.0.tgz", - "integrity": "sha1-A1HymIaqmB1D2RssK9GuptCvbSM=", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-unicode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.0.tgz", - "integrity": "sha1-Ws1dR7rqXRdnSyzMSuUWb6iM35c=", - "dev": true, - "requires": { - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-url": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.0.tgz", - "integrity": "sha1-t6nIrSbPJmlMFG6y1ovQz0mVbw0=", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.0.tgz", - "integrity": "sha1-HafnaxCuY8EYJ/oE/Du0oe/pnMA=", - "dev": true, - "requires": { - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-ordered-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.0.0.tgz", - "integrity": "sha1-WLQMdPcuAi6zQVLBLksPk1RIL8I=", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-reduce-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.1.tgz", - "integrity": "sha1-8tWPUM6isMXcEnjW6l7Q/1gpwpM=", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^6.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.0.1.tgz", - "integrity": "sha512-QqiiIWchEIkney3wY53/huI7ZErouNAdvOkjorUALAwRcu3tEwOV3Sh6He0DnP38mz1JjBpCBb50jQBmaYuHPw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000865", - "electron-to-chromium": "^1.3.52", - "node-releases": "^1.0.0-alpha.10" - } - }, - "caniuse-lite": { - "version": "1.0.30000874", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000874.tgz", - "integrity": "sha512-29nr1EPiHwrJTAHHsEmTt2h+55L8j2GNFdAcYPlRy2NX6iFz7ZZiepVI7kP/QqlnHLq3KvfWpbmGa0d063U09w==", - "dev": true - } - } - }, - "postcss-reduce-transforms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.0.tgz", - "integrity": "sha1-9kX8dEDDUnT0DegQThStcWPt8Yg=", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.0.tgz", - "integrity": "sha1-wLutAlIPxjbJ14sOhAPi5RXDIoU=", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^6.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - } - }, - "postcss-unique-selectors": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.0.tgz", - "integrity": "sha1-BMHpdkx1h0JhMDQCxB8Ol2n8VQE=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^6.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "prettier": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", - "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", - "dev": true - }, - "pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", - "dev": true - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "pretty-format": { - "version": "23.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.5.0.tgz", - "integrity": "sha512-iFLvYTXOn+C/s7eV+pr4E8DD7lYa2/klXMEz+lvH14qSDWAJ7S+kFmMe1SIWesATHQxopHTxRcB2nrpExhzaBA==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "promise-polyfill": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.2.tgz", - "integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==", - "dev": true - }, - "prompts": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", - "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", - "dev": true, - "requires": { - "kleur": "^2.0.1", - "sisteransi": "^0.1.1" - } - }, - "prop-types": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", - "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", - "dev": true, - "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randomatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", - "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - } - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "raw-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", - "dev": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0", - "readable-stream": "^2.0.0" - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "read-chunk": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz", - "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "realpath-native": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.1.tgz", - "integrity": "sha512-W14EcXuqUvKP8dkWkD7B95iMy77lpMnlFXbbk409bQtNCbeu0kvRE5reo+yIZ3JXxg6frbGsz2DLQ39lrCB40g==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "recursive-readdir-sync": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", - "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=", - "dev": true - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "reduce-css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.4.tgz", - "integrity": "sha512-i/vWQbyd3aJRmip9OVSN9V6nIjLf/gg/ctxb0CpvHWtcRysFl/ngDBQD+rqavxdw/doScA3GMBXhzkHQ4GCzFQ==", - "dev": true, - "requires": { - "css-unit-converter": "^1.1.1", - "postcss-value-parser": "^3.3.0" - } - }, - "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", - "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", - "dev": true - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", - "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", - "dev": true, - "requires": { - "css-select": "^1.1.0", - "dom-converter": "~0.1", - "htmlparser2": "~3.3.0", - "strip-ansi": "^3.0.0", - "utila": "~0.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "^4.13.1" - } - }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true, - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" - } - }, - "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 - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } - } - }, - "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-parallel": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.8.tgz", - "integrity": "sha512-e5t1NVhr5VWmD9V9U4KjjSGkf5w6CcTPgw11A3CfIvkkQxlAKzX3usPUp1NUQTmpOOjU+f9QRICU3tMbKwn9ZQ==", - "dev": true - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "requires": { - "rx-lite": "*" - } - }, - "rxjs": { - "version": "5.5.11", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", - "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "sane": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" - } - }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" - } - }, - "sass-loader": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", - "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", - "dev": true, - "requires": { - "clone-deep": "^2.0.1", - "loader-utils": "^1.0.1", - "lodash.tail": "^4.1.1", - "neo-async": "^2.5.0", - "pify": "^3.0.0", - "semver": "^5.5.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "dev": true, - "requires": { - "ajv": "^5.0.0" - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "seek-bzip": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", - "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", - "dev": true, - "requires": { - "commander": "~2.8.1" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - } - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "semver-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", - "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", - "dev": true - }, - "semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "requires": { - "semver": "^5.3.0" - } - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", - "dev": true - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "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 - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", - "dev": true, - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "sisteransi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", - "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-loader": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", - "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", - "dev": true, - "requires": { - "async": "^2.5.0", - "loader-utils": "^1.1.0" - } - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "console-stream": "^0.1.1", - "lpad-align": "^1.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - } - } - }, - "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true - }, - "stackframe": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", - "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==", - "dev": true - }, - "standard": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/standard/-/standard-11.0.1.tgz", - "integrity": "sha512-nu0jAcHiSc8H+gJCXeiziMVZNDYi8MuqrYJKxTgjP4xKXZMKm311boqQIzDrYI/ktosltxt2CbDjYQs9ANC8IA==", - "dev": true, - "requires": { - "eslint": "~4.18.0", - "eslint-config-standard": "11.0.0", - "eslint-config-standard-jsx": "5.0.0", - "eslint-plugin-import": "~2.9.0", - "eslint-plugin-node": "~6.0.0", - "eslint-plugin-promise": "~3.7.0", - "eslint-plugin-react": "~7.7.0", - "eslint-plugin-standard": "~3.0.1", - "standard-engine": "~8.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "eslint": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.2.tgz", - "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==", - "dev": true, - "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - } - }, - "eslint-plugin-import": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz", - "integrity": "sha1-JgAu+/ylmJtyiKwEdQi9JPIXsWk=", - "dev": true, - "requires": { - "builtin-modules": "^1.1.1", - "contains-path": "^0.1.0", - "debug": "^2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.1.1", - "has": "^1.0.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.3", - "read-pkg-up": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - } - } - }, - "globals": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", - "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", - "dev": true - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "standard-engine": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-8.0.1.tgz", - "integrity": "sha512-LA531C3+nljom/XRvdW/hGPXwmilRkaRkENhO3FAGF1Vtq/WtCXzgmnc5S6vUHHsgv534MRy02C1ikMwZXC+tw==", - "dev": true, - "requires": { - "deglob": "^2.1.0", - "get-stdin": "^6.0.0", - "minimist": "^1.1.0", - "pkg-conf": "^2.0.0" - } - }, - "stat-mode": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", - "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "stdout-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", - "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "stream-to": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz", - "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0=", - "dev": true - }, - "stream-to-buffer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz", - "integrity": "sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk=", - "dev": true, - "requires": { - "stream-to": "~0.2.0" - } - }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^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" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-bom-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", - "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", - "dev": true, - "requires": { - "first-chunk-stream": "^1.0.0", - "strip-bom": "^2.0.0" - } - }, - "strip-dirs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", - "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "get-stdin": "^4.0.1", - "is-absolute": "^0.1.5", - "is-natural-number": "^2.0.0", - "minimist": "^1.1.0", - "sum-up": "^1.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - } - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "style-loader": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", - "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^0.4.5" - }, - "dependencies": { - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "stylehacks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.0.tgz", - "integrity": "sha1-ZLMjlRxKJOX8ey7AbBN78y0VXoo=", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^6.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.0.1.tgz", - "integrity": "sha512-QqiiIWchEIkney3wY53/huI7ZErouNAdvOkjorUALAwRcu3tEwOV3Sh6He0DnP38mz1JjBpCBb50jQBmaYuHPw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000865", - "electron-to-chromium": "^1.3.52", - "node-releases": "^1.0.0-alpha.10" - } - }, - "caniuse-lite": { - "version": "1.0.30000874", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000874.tgz", - "integrity": "sha512-29nr1EPiHwrJTAHHsEmTt2h+55L8j2GNFdAcYPlRy2NX6iFz7ZZiepVI7kP/QqlnHLq3KvfWpbmGa0d063U09w==", - "dev": true - }, - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "dependencies": { - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - } - } - } - } - }, - "sum-up": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", - "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", - "dev": true, - "requires": { - "chalk": "^1.0.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "svgo": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.0.5.tgz", - "integrity": "sha512-nYrifviB77aNKDNKKyuay3M9aYiK6Hv5gJVDdjj2ZXTQmI8WZc8+UPLR5IpVlktJfSu3co/4XcWgrgI6seGBPg==", - "dev": true, - "requires": { - "coa": "~2.0.1", - "colors": "~1.1.2", - "css-select": "~1.3.0-rc0", - "css-select-base-adapter": "~0.1.0", - "css-tree": "1.0.0-alpha25", - "css-url-regex": "^1.1.0", - "csso": "^3.5.0", - "js-yaml": "~3.10.0", - "mkdirp": "~0.5.1", - "object.values": "^1.0.4", - "sax": "~1.2.4", - "stable": "~0.1.6", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "dependencies": { - "css-select": { - "version": "1.3.0-rc0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.3.0-rc0.tgz", - "integrity": "sha1-b5MZaqrnN2ZuoQNqjLFKj8t6kjE=", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "^1.0.1" - } - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true - }, - "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "dev": true, - "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - } - }, - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - }, - "tar-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz", - "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", - "dev": true, - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.1.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.0", - "xtend": "^4.0.0" - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - } - }, - "test-exclude": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "through2-filter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", - "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", - "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "timed-out": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", - "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tinycolor2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", - "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "to-absolute-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", - "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "topo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", - "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dev": true, - "requires": { - "punycode": "^1.4.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "true-case-path": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", - "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", - "dev": true, - "requires": { - "glob": "^6.0.4" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.17", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", - "dev": true - }, - "uglify-js": { - "version": "3.4.8", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.8.tgz", - "integrity": "sha512-WatYTD84gP/867bELqI2F/2xC9PQBETn/L+7RGq9MQOA/7yFBNvY1UwXqvtILeE6n0ITwBXxp34M0/o70dzj6A==", - "dev": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "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 - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, - "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 - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - } - } - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", - "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unique-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", - "dev": true, - "requires": { - "json-stable-stringify": "^1.0.0", - "through2-filter": "^2.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", - "dev": true - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.1.tgz", - "integrity": "sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "url-regex": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", - "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", - "dev": true, - "requires": { - "ip-regex": "^1.0.1" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - }, - "dependencies": { - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - } - } - }, - "vinyl-assign": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", - "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "readable-stream": "^2.0.0" - } - }, - "vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", - "dev": true, - "requires": { - "duplexify": "^3.2.0", - "glob-stream": "^5.3.2", - "graceful-fs": "^4.0.0", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "^0.3.0", - "lazystream": "^1.0.0", - "lodash.isequal": "^4.0.0", - "merge-stream": "^1.0.0", - "mkdirp": "^0.5.0", - "object-assign": "^4.0.0", - "readable-stream": "^2.0.4", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^1.0.0", - "through2": "^2.0.0", - "through2-filter": "^2.0.0", - "vali-date": "^1.0.0", - "vinyl": "^1.0.0" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "vue-hot-reload-api": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz", - "integrity": "sha512-2j/t+wIbyVMP5NvctQoSUvLkYKoWAAk2QlQiilrM2a6/ulzFgdcLUJfTvs4XQ/3eZhHiBmmEojbjmM4AzZj8JA==", - "dev": true - }, - "vue-loader": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.4.0.tgz", - "integrity": "sha512-qhc1fnflEVhFq5dYLDXXTXf3PoRiGxeMhBmGDeLqlg0XAaikZEU224ZLqsTkQQVUT2uA2PN9haYlBUqq/6iEtA==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^2.0.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - } - }, - "vue-style-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", - "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "vue-svg-loader": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/vue-svg-loader/-/vue-svg-loader-0.5.0.tgz", - "integrity": "sha512-mGMIPlZ3D4CSdQrBFBv7Ijr1V5L6iuDOulkoWHXeHzLEdWXbsJtcE02tMgSRQmj9I8CO61iLFYQF25tmmMdowA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "svgo": "^1.0.4", - "vue-template-compiler": "^2.5.13", - "vue-template-es2015-compiler": "^1.6.0" - } - }, - "vue-template-compiler": { - "version": "2.5.17", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.17.tgz", - "integrity": "sha512-63uI4syCwtGR5IJvZM0LN5tVsahrelomHtCxvRkZPJ/Tf3ADm1U1wG6KWycK3qCfqR+ygM5vewUvmJ0REAYksg==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", - "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "ware": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", - "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", - "dev": true, - "requires": { - "wrap-fn": "^0.1.0" - } - }, - "watch": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", - "dev": true, - "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "webpack": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.17.1.tgz", - "integrity": "sha512-vdPYogljzWPhFKDj3Gcp01Vqgu7K3IQlybc3XIdKSQHelK1C3eIQuysEUR7MxKJmdandZlQB/9BG2Jb1leJHaw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/wasm-edit": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", - "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", - "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", - "dev": true - }, - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "webpack-bundle-analyzer": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz", - "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", - "dev": true, - "requires": { - "acorn": "^5.3.0", - "bfj-node4": "^5.2.0", - "chalk": "^2.3.0", - "commander": "^2.13.0", - "ejs": "^2.5.7", - "express": "^4.16.2", - "filesize": "^3.5.11", - "gzip-size": "^4.1.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "opener": "^1.4.3", - "ws": "^4.0.0" - } - }, - "webpack-cleanup-plugin": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/webpack-cleanup-plugin/-/webpack-cleanup-plugin-0.5.1.tgz", - "integrity": "sha1-3y1wa9dTZMBuZbBRGGMW1nTrlq8=", - "dev": true, - "requires": { - "lodash.union": "4.6.0", - "minimatch": "3.0.3", - "recursive-readdir-sync": "1.0.6" - }, - "dependencies": { - "minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - } - } - } - }, - "webpack-merge": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", - "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", - "dev": true, - "requires": { - "lodash": "^4.17.5" - } - }, - "webpack-pwa-manifest": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/webpack-pwa-manifest/-/webpack-pwa-manifest-3.7.1.tgz", - "integrity": "sha512-G37fVCa1ndij3jyz6WaOaxHLHdp2URyOHwp2GLmxt39sXL8ZdOFM1qvHagEJBkNh+3hu25eIgy6TD5J/8sgQcQ==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "jimp": "^0.2.28", - "mime": "^1.6.0" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - } - } - }, - "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "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 - } - } - }, - "whatwg-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", - "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.19" - } - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", - "dev": true - }, - "whatwg-mimetype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", - "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==", - "dev": true - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "workbox-background-sync": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-3.4.1.tgz", - "integrity": "sha512-Ksb2nCg/2wOyBMhSBqSbtCEwuKaf5sHgTY8HdCxbLIQSzDh9/qZqg+1P11CKlgJmHtje3EK3B8EsrzukZo10xA==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-broadcast-cache-update": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.4.1.tgz", - "integrity": "sha512-+WPqHFk4ER4RICAMOYrP88yBbiUQ9ZOFNruqwbl9YxGfbADV16OEGmYpIs+Az6HT6DNDCx8eQqtFiaG8N3O11Q==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-build": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-3.4.1.tgz", - "integrity": "sha512-Qi04XdHjkXbRN0CV5XO1oqDWbJSIm7VYhxmxjtnVcKK8PrMT6rOUFUi9ziDI+8UQgcXbLK4ZChWf2ptZS1/MbA==", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "common-tags": "^1.4.0", - "fs-extra": "^4.0.2", - "glob": "^7.1.2", - "joi": "^11.1.1", - "lodash.template": "^4.4.0", - "pretty-bytes": "^4.0.2", - "workbox-background-sync": "^3.4.1", - "workbox-broadcast-cache-update": "^3.4.1", - "workbox-cache-expiration": "^3.4.1", - "workbox-cacheable-response": "^3.4.1", - "workbox-core": "^3.4.1", - "workbox-google-analytics": "^3.4.1", - "workbox-navigation-preload": "^3.4.1", - "workbox-precaching": "^3.4.1", - "workbox-range-requests": "^3.4.1", - "workbox-routing": "^3.4.1", - "workbox-strategies": "^3.4.1", - "workbox-streams": "^3.4.1", - "workbox-sw": "^3.4.1" - }, - "dependencies": { - "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", - "dev": true, - "requires": { - "lodash._reinterpolate": "~3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "dev": true, - "requires": { - "lodash._reinterpolate": "~3.0.0" - } - } - } - }, - "workbox-cache-expiration": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-cache-expiration/-/workbox-cache-expiration-3.4.1.tgz", - "integrity": "sha512-AzOPB+dwfxg13v4+q5jWkxsw/oim9mPIzew1anu8ALA3vB8qySaJJToXp+ZlVh/Co+sDK0tgjlB76bvSFHgZ4g==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-cacheable-response": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-3.4.1.tgz", - "integrity": "sha512-SO2k830JT93GitPwc5tzJI49d9VwyVxXwiCbyvo+Sqo+dcvWSrmpsyuXdzy6zuasbPrWUF0vsFj1uGtZbOym8Q==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-core": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.4.1.tgz", - "integrity": "sha512-RqMV2so9/KLAu9aUxJ/85pvrZMUn835B8zoHmqRyGNetiDr8B1zSBeKXPZAjFlX/88KdhizNwiRlJtqlXtM4tA==", - "dev": true - }, - "workbox-google-analytics": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-3.4.1.tgz", - "integrity": "sha512-w6Osz2Rr1/4+W0gram6Yzg6NNWLvHP51RwFCNAZSpEnipr0qSEtD+yvwrdaHfiJHWhcK2yH/V6E1MV8Hrczmvw==", - "dev": true, - "requires": { - "workbox-background-sync": "^3.4.1", - "workbox-core": "^3.4.1", - "workbox-routing": "^3.4.1", - "workbox-strategies": "^3.4.1" - } - }, - "workbox-navigation-preload": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-3.4.1.tgz", - "integrity": "sha512-P3FHAcyZ8db2QiW/BpMkuosC1OkRsEoUaT7U3QOgg7JSjjsJoEbF7G5olNe+P+PQYdVhJA7TCuptI6dy2gLS/g==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-precaching": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-3.4.1.tgz", - "integrity": "sha512-ykU2mly9xmRrCW6iMeUWYydWiso/WSE16+7wponhI0WC53jiQSt2JvykWm0VpWFJSs6ZTSZZ1WK2gs/brRnPug==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-range-requests": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-3.4.1.tgz", - "integrity": "sha512-ktgjl6liZrRTmQjPw1pBblC5umHnTb8XcvFVitdGz17B23jj6cUV4EXzEU2ilGn6jO6+MLV1Vn9SWajtLSc2Gg==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-routing": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-3.4.1.tgz", - "integrity": "sha512-6j6cXMUYfMPYTycmElxVOfBTr6WV5zAn/JUFJ7GJ5pYFIE9cqztprnrcOsWJ42+AiNIeHPbKfyIWE/rZVviMxQ==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-strategies": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-3.4.1.tgz", - "integrity": "sha512-7mJuzFsgejflzjfnChXCFma1S0mi9WC6wlSU2wE50M7bJmEuf9A3j3MojpKcsTEM58hbhbnU6QF/u9iIV7+opw==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-streams": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-3.4.1.tgz", - "integrity": "sha512-krw+5bp+oe9Za5c6WlTWM3SgZGfExYcqRSn1gsyYgKeXmgzTwf+DOb5Lwult0KSWlJfq8B3Wk7sW8Sl7lRzSbA==", - "dev": true, - "requires": { - "workbox-core": "^3.4.1" - } - }, - "workbox-sw": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-3.4.1.tgz", - "integrity": "sha512-nnm2by5oaQGXRH7x4M5/n2KqjUGVmP4P8azUmJITnYa3DWVYn/ghDg3LJ5+h4A28vYq9V6ePgATaEPfb6B5pug==", - "dev": true - }, - "workbox-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-dwIaEJK27xbGKMQv1sbSjywxhfX74nMW1zgUP9XUtpFeykH0e5Dm1j7wbQezXU3mFoaO7xuzqwGpAFxMKc0xMA==", - "dev": true, - "requires": { - "json-stable-stringify": "^1.0.1", - "workbox-build": "^3.4.1" - } - }, - "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrap-fn": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", - "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", - "dev": true, - "requires": { - "co": "3.1.0" - }, - "dependencies": { - "co": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", - "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" - } - }, - "xhr": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", - "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", - "dev": true, - "requires": { - "global": "~4.3.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=", - "dev": true - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dev": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "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 - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - } -} +{ + "name": "alpheios-data-models", + "version": "1.1.9", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/template": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "^4.2.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true + } + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.1.tgz", + "integrity": "sha512-KU/VDjC5RwtDUZiz3d+DHXJF2lp5hB9dn552TXIyptj8SH1vXmR40mG0JgGq03IlYsOgGfcv8xrLpSQ0YUMQdA==", + "dev": true + }, + "@types/jest": { + "version": "23.1.5", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.1.5.tgz", + "integrity": "sha512-GlN74UAcT2i+G4BzVVI/aHip0HDXZaiY11VEjHzAz74+dB3hIeM5lJmnnZx4acxxinK9lT+uEH1Vsa5aWj6w4Q==", + "dev": true + }, + "@vue/component-compiler-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.2.0.tgz", + "integrity": "sha512-pS4zlcdD7BvedyB+IfiTfrbi6C977UMIfulSk8r6uL0BU46ZE2+fUj/zbSNSfVxeaj9ElmnSni5OMwF9np+b+w==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^6.0.20", + "postcss-selector-parser": "^3.1.1", + "prettier": "1.13.7", + "source-map": "^0.5.6", + "vue-template-es2015-compiler": "^1.6.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "@webassemblyjs/ast": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", + "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "debug": "^3.1.0", + "mamacro": "^0.0.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", + "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", + "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", + "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", + "dev": true, + "requires": { + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", + "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.5.13" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", + "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", + "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "mamacro": "^0.0.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", + "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", + "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/ieee754": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", + "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", + "dev": true, + "requires": { + "ieee754": "^1.1.11" + } + }, + "@webassemblyjs/leb128": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", + "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", + "dev": true, + "requires": { + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } + } + }, + "@webassemblyjs/utf8": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", + "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", + "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", + "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", + "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", + "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", + "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", + "long": "^3.2.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", + "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "long": "^3.2.0" + } + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", + "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", + "dev": true + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "alpheios-node-build": { + "version": "github:alpheios-project/node-build#36a0eb70c704f49580a8a1f8a64a112120834611", + "from": "github:alpheios-project/node-build", + "dev": true, + "requires": { + "babel-core": "^6.26.3", + "babel-eslint": "^8.2.6", + "babel-jest": "^23.4.0", + "babel-loader": "^7.1.5", + "babel-plugin-dynamic-import-node": "^2.0.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", + "babel-plugin-transform-runtime": "^6.22.0", + "babel-preset-env": "^1.7.0", + "babel-register": "^6.22.0", + "chalk": "^2.4.1", + "clean-webpack-plugin": "^0.1.19", + "copy-webpack-plugin": "^4.5.2", + "css-loader": "^1.0.0", + "eslint": "^5.2.0", + "eslint-plugin-import": "^2.11.0", + "extract-text-webpack-plugin": "^3.0.2", + "file-loader": "^1.1.11", + "friendly-errors-webpack-plugin": "^1.7.0", + "fs": "0.0.1-security", + "html-webpack-plugin": "^3.2.0", + "imagemin": "^6.0.0", + "imagemin-jpegtran": "^5.0.2", + "imagemin-optipng": "^5.2.1", + "imagemin-svgo": "^7.0.0", + "mini-css-extract-plugin": "^0.4.1", + "node-sass": "^4.9.2", + "optimize-css-assets-webpack-plugin": "^5.0.0", + "parallel-webpack": "^2.3.0", + "path": "^0.12.7", + "postcss-import": "^11.0.0", + "postcss-loader": "^2.1.6", + "raw-loader": "^0.5.1", + "sass-loader": "^7.0.3", + "semver": "^5.5.0", + "source-map-loader": "^0.2.3", + "style-loader": "^0.21.0", + "uglifyjs-webpack-plugin": "^1.2.7", + "url-loader": "^1.0.1", + "vue-loader": "^15.2.6", + "vue-style-loader": "^4.1.1", + "vue-svg-loader": "^0.5.0", + "webpack": "^4.16.2", + "webpack-bundle-analyzer": "^2.13.1", + "webpack-cleanup-plugin": "^0.5.1", + "webpack-merge": "^4.1.3", + "webpack-pwa-manifest": "^3.6.2", + "workbox-webpack-plugin": "^3.4.1" + }, + "dependencies": { + "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" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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" + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archive-type": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", + "dev": true, + "requires": { + "file-type": "^3.1.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + } + } + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-each-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", + "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "babel-eslint": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", + "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.2.tgz", + "integrity": "sha512-wg1LJ2tzsafXqPFVgAsYsMCVD5U7kwJZAvbZIxVm27iOewsQw1BR7VZifDlMTEWVo3wasoPPyMdKXWCsfFPr3Q==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "babel-loader": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", + "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", + "dev": true, + "requires": { + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.0.0.tgz", + "integrity": "sha512-meifxRxzzoT4j2+mYFYnlOZRuZOQVHis9DFv1GpYkufLMHL0W2n3z/Re7bjNN9rftcWonvGWgInRDsHiayqFXg==", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", + "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "babel-preset-jest": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", + "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^23.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "bfj-node4": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", + "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "check-types": "^7.3.0", + "tryer": "^1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "bignumber.js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz", + "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg=", + "dev": true + }, + "bin-build": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", + "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", + "dev": true, + "requires": { + "archive-type": "^3.0.1", + "decompress": "^3.0.0", + "download": "^4.1.2", + "exec-series": "^1.0.0", + "rimraf": "^2.2.6", + "tempfile": "^1.0.0", + "url-regex": "^3.0.0" + }, + "dependencies": { + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "dev": true, + "requires": { + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "bin-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", + "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", + "dev": true, + "requires": { + "executable": "^1.0.0" + } + }, + "bin-version": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", + "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", + "dev": true, + "requires": { + "find-versions": "^1.0.0" + } + }, + "bin-version-check": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", + "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", + "dev": true, + "requires": { + "bin-version": "^1.0.0", + "minimist": "^1.1.0", + "semver": "^4.0.3", + "semver-truncate": "^1.0.0" + }, + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } + }, + "bin-wrapper": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", + "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", + "dev": true, + "requires": { + "bin-check": "^2.0.0", + "bin-version-check": "^2.1.0", + "download": "^4.0.0", + "each-async": "^1.1.1", + "lazy-req": "^1.0.0", + "os-filter-obj": "^1.0.0" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bmp-js": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz", + "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "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" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "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 + } + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "buffer-to-vinyl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", + "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", + "dev": true, + "requires": { + "file-type": "^3.1.0", + "readable-stream": "^2.0.2", + "uuid": "^2.0.1", + "vinyl": "^1.0.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + }, + "dependencies": { + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + } + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.0.tgz", + "integrity": "sha512-kQBKB8hnq1SRfSpwHDpM1JNHAyk9fydW8hIDvndR2ijTFKIlBPEvkJkCt8JznOugdm12/YCaRgyq/sqDGz9PwA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000878", + "electron-to-chromium": "^1.3.61", + "node-releases": "^1.0.0-alpha.11" + } + } + } + }, + "caniuse-lite": { + "version": "1.0.30000878", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000878.tgz", + "integrity": "sha512-/dCGTdLCnjVJno1mFRn7Y6eit3AYaeFzSrMQHCoK0LEQaWl5snuLex1Ky4b8/Qu2ig5NgTX4cJx65hH9546puA==", + "dev": true + }, + "capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "dev": true, + "requires": { + "rsvp": "^3.3.3" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "caw": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz", + "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", + "dev": true, + "requires": { + "get-proxy": "^1.0.1", + "is-obj": "^1.0.0", + "object-assign": "^3.0.0", + "tunnel-agent": "^0.4.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + } + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", + "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "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" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "check-types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", + "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "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 + } + } + }, + "clean-webpack-plugin": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz", + "integrity": "sha512-M1Li5yLHECcN2MahoreuODul5LkjohJGFxLPTjl3j1ttKrF5rgjZET1SJduuqxLAuT1gAPOdkhg03qcaaU1KeA==", + "dev": true, + "requires": { + "rimraf": "^2.6.1" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.1.tgz", + "integrity": "sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ==", + "dev": true, + "requires": { + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.3.0.tgz", + "integrity": "sha512-MAAAIOdi2s4Gl6rZ76PNcUa9IOYB+5ICdT41o5uMRf09aEu/F9RK+qhe8RjXNPwcTjGV7KU7h2P/fljThFVqyQ==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "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 + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "console-stream": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", + "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "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 + }, + "cosmiconfig": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", + "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "coveralls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.2.tgz", + "integrity": "sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==", + "dev": true, + "requires": { + "growl": "~> 1.10.0", + "js-yaml": "^3.11.0", + "lcov-parse": "^0.0.10", + "log-driver": "^1.2.7", + "minimist": "^1.2.0", + "request": "^2.85.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-3.0.1.tgz", + "integrity": "sha512-jH4024SHZ3e0M7ann9VxpFpH3moplRXNz9ZBqvFMZqi09Yo5ARbs2wdPH8GqN9iRTlQynrbGbraNbBxBLei85Q==", + "dev": true, + "requires": { + "postcss": "^6.0.0", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", + "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz", + "integrity": "sha1-AQKz0UYw34bD65+p9UVicBBs+ZA=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + } + } + }, + "css-tree": { + "version": "1.0.0-alpha25", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha25.tgz", + "integrity": "sha512-XC6xLW/JqIGirnZuUWHXCHRaAjje2b3OIB0Vj5RIJo6mIi/AdJo30quQl5LxUl0gkXDIrTrFGbMlcZjyFplz1A==", + "dev": true, + "requires": { + "mdn-data": "^1.0.0", + "source-map": "^0.5.3" + } + }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", + "dev": true + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.0.5.tgz", + "integrity": "sha512-P2O0sz/YAAzqZVsSWOrbliPCr0c6abwVNQmFZ48AgejN/GbzwEf6IVFGQAj0UKHC+crv60wUAPQocAnDmeWlkg==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.0", + "is-resolvable": "^1.0.0", + "postcss": "^6.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.0.tgz", + "integrity": "sha1-wzQoe099SfstFwqS+SFGVXiOO2s=", + "dev": true, + "requires": { + "css-declaration-sorter": "^3.0.0", + "cssnano-util-raw-cache": "^4.0.0", + "postcss": "^6.0.0", + "postcss-calc": "^6.0.0", + "postcss-colormin": "^4.0.0", + "postcss-convert-values": "^4.0.0", + "postcss-discard-comments": "^4.0.0", + "postcss-discard-duplicates": "^4.0.0", + "postcss-discard-empty": "^4.0.0", + "postcss-discard-overridden": "^4.0.0", + "postcss-merge-longhand": "^4.0.0", + "postcss-merge-rules": "^4.0.0", + "postcss-minify-font-values": "^4.0.0", + "postcss-minify-gradients": "^4.0.0", + "postcss-minify-params": "^4.0.0", + "postcss-minify-selectors": "^4.0.0", + "postcss-normalize-charset": "^4.0.0", + "postcss-normalize-display-values": "^4.0.0", + "postcss-normalize-positions": "^4.0.0", + "postcss-normalize-repeat-style": "^4.0.0", + "postcss-normalize-string": "^4.0.0", + "postcss-normalize-timing-functions": "^4.0.0", + "postcss-normalize-unicode": "^4.0.0", + "postcss-normalize-url": "^4.0.0", + "postcss-normalize-whitespace": "^4.0.0", + "postcss-ordered-values": "^4.0.0", + "postcss-reduce-initial": "^4.0.0", + "postcss-reduce-transforms": "^4.0.0", + "postcss-svgo": "^4.0.0", + "postcss-unique-selectors": "^4.0.0" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.0.tgz", + "integrity": "sha1-vgooVuJfGF9feivMBiTii38Xmp8=", + "dev": true, + "requires": { + "postcss": "^6.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.0.tgz", + "integrity": "sha1-0qPeEDmqmLxOwlAB+gUDMMKhbaw=", + "dev": true + }, + "csso": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.29" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", + "dev": true, + "requires": { + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" + } + } + } + }, + "cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", + "dev": true + }, + "cssstyle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.0.0.tgz", + "integrity": "sha512-Bpuh47j2mRMY60X90mXaJAEtJwxvA2roZzbgwAXYhMbmwmakdRr4Cq9L5SkleKJNLOKqHIa2YWyOXDX3VgggSQ==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz", + "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", + "dev": true, + "requires": { + "abab": "^1.0.4", + "whatwg-mimetype": "^2.0.0", + "whatwg-url": "^6.4.0" + }, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", + "dev": true, + "requires": { + "buffer-to-vinyl": "^1.0.0", + "concat-stream": "^1.4.6", + "decompress-tar": "^3.0.0", + "decompress-tarbz2": "^3.0.0", + "decompress-targz": "^3.0.0", + "decompress-unzip": "^3.0.0", + "stream-combiner2": "^1.1.1", + "vinyl-assign": "^1.0.1", + "vinyl-fs": "^2.2.0" + } + }, + "decompress-tar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", + "dev": true, + "requires": { + "is-tar": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "dev": true, + "requires": { + "is-bzip2": "^1.0.0", + "object-assign": "^2.0.0", + "seek-bzip": "^1.0.3", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-targz": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "dev": true, + "requires": { + "is-gzip": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "dev": true, + "requires": { + "is-zip": "^1.0.0", + "read-all-stream": "^3.0.0", + "stat-mode": "^0.2.0", + "strip-dirs": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0", + "yauzl": "^2.2.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "deglob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz", + "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=", + "dev": true, + "requires": { + "find-root": "^1.0.0", + "glob": "^7.0.5", + "ignore": "^3.0.9", + "pkg-config": "^1.1.0", + "run-parallel": "^1.1.2", + "uniq": "^1.0.1" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "download": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz", + "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", + "dev": true, + "requires": { + "caw": "^1.0.1", + "concat-stream": "^1.4.7", + "each-async": "^1.0.0", + "filenamify": "^1.0.1", + "got": "^5.0.0", + "gulp-decompress": "^1.2.0", + "gulp-rename": "^1.2.0", + "is-url": "^1.2.0", + "object-assign": "^4.0.1", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.2", + "stream-combiner2": "^1.1.1", + "vinyl": "^1.0.0", + "vinyl-fs": "^2.2.0", + "ware": "^1.2.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-async": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", + "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", + "dev": true, + "requires": { + "onetime": "^1.0.0", + "set-immediate-shim": "^1.0.0" + }, + "dependencies": { + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + } + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.61", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.61.tgz", + "integrity": "sha512-XjTdsm6x71Y48lF9EEvGciwXD70b20g0t+3YbrE+0fPFutqV08DSNrZXkoXAp3QuzX7TpL/OW+/VsNoR9GkuNg==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz", + "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==", + "dev": true, + "requires": { + "stackframe": "^1.0.4" + } + }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "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 + }, + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "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, + "optional": true + } + } + }, + "eslint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", + "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "dev": true, + "requires": { + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.2", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", + "dev": true + }, + "acorn-jsx": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", + "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", + "dev": true, + "requires": { + "acorn": "^5.0.3" + } + }, + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", + "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", + "dev": true, + "requires": { + "acorn": "^5.6.0", + "acorn-jsx": "^4.1.1" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + } + } + }, + "eslint-config-standard": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", + "integrity": "sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-5.0.0.tgz", + "integrity": "sha512-rLToPAEqLMPBfWnYTu6xRhm2OWziS2n40QFqJ8jAM8NSVzeVKTa3nclhsU4DpPJQRY60F34Oo1wi/71PN/eITg==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + }, + "dependencies": { + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + } + } + }, + "eslint-module-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "dev": true, + "requires": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", + "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", + "dev": true, + "requires": { + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "^5.4.1" + }, + "dependencies": { + "resolve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", + "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + } + } + }, + "eslint-plugin-promise": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.7.0.tgz", + "integrity": "sha512-2WO+ZFh7vxUKRfR0cOIMrWgYKdR6S1AlOezw6pC52B6oYpd5WFghN+QHxvrRdZMtbo8h3dfUZ2o1rWb0UPbKtg==", + "dev": true + }, + "eslint-plugin-react": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz", + "integrity": "sha512-KC7Snr4YsWZD5flu6A5c0AcIZidzW3Exbqp7OT67OaD2AppJtlBr/GuPrW/vaQM/yfZotEvKAdrxrO+v8vwYJA==", + "dev": true, + "requires": { + "doctrine": "^2.0.2", + "has": "^1.0.1", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.0" + } + }, + "eslint-plugin-standard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", + "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-buffer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", + "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "p-finally": "^1.0.0", + "pify": "^3.0.0", + "rimraf": "^2.5.4", + "tempfile": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "exec-series": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", + "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", + "dev": true, + "requires": { + "async-each-series": "^1.1.0", + "object-assign": "^4.1.0" + } + }, + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "requires": { + "merge": "^1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "executable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", + "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", + "dev": true, + "requires": { + "meow": "^3.1.0" + } + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", + "dev": true + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expect": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.5.0.tgz", + "integrity": "sha512-aG083W63tBloy8YgafWuC44EakjYe0Q6Mg35aujBPvyNU38DvLat9BVzOihNP2NZDLaCJiFNe0vejbtO6knnlA==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^23.5.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" + }, + "dependencies": { + "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" + } + } + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "dev": true, + "requires": { + "async": "^2.4.1", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0", + "webpack-sources": "^1.0.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "dev": true, + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.9" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "dev": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "dev": true, + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "find-versions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", + "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", + "dev": true, + "requires": { + "array-uniq": "^1.0.0", + "get-stdin": "^4.0.1", + "meow": "^3.5.0", + "semver-regex": "^1.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "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" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "friendly-errors-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "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": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": 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-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-proxy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", + "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", + "dev": true, + "requires": { + "rc": "^1.1.2" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + }, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "^3.0.1", + "duplexer2": "^0.1.4", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "node-status-codes": "^1.0.0", + "object-assign": "^4.0.1", + "parse-json": "^2.1.0", + "pinkie-promise": "^2.0.0", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.5", + "timed-out": "^3.0.0", + "unzip-response": "^1.0.2", + "url-parse-lax": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gulp-decompress": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", + "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", + "dev": true, + "requires": { + "archive-type": "^3.0.0", + "decompress": "^3.0.0", + "gulp-util": "^3.0.1", + "readable-stream": "^2.0.2" + } + }, + "gulp-rename": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", + "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", + "dev": true + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "dev": true, + "requires": { + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "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-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-minifier": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz", + "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.1.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imagemin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-6.0.0.tgz", + "integrity": "sha512-m4Mxwt2QvCp1F85HXoTungXk0Y6XzuvQGqrK9qEddQfo/7x4aZjRENmyXXfc29ei4Mk55rW002bORG86YM3/aQ==", + "dev": true, + "requires": { + "file-type": "^8.1.0", + "globby": "^8.0.1", + "make-dir": "^1.0.0", + "p-pipe": "^1.1.0", + "pify": "^3.0.0", + "replace-ext": "^1.0.0" + }, + "dependencies": { + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "imagemin-jpegtran": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-5.0.2.tgz", + "integrity": "sha1-5ogiY7j3kW/duABkDPddLpcNKtY=", + "dev": true, + "requires": { + "exec-buffer": "^3.0.0", + "is-jpg": "^1.0.0", + "jpegtran-bin": "^3.0.0" + } + }, + "imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", + "dev": true, + "requires": { + "exec-buffer": "^3.0.0", + "is-png": "^1.0.0", + "optipng-bin": "^3.0.0" + } + }, + "imagemin-svgo": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-7.0.0.tgz", + "integrity": "sha512-+iGJFaPIMx8TjFW6zN+EkOhlqcemdL7F3N3Y0wODvV2kCUBuUtZK7DRZc1+Zfu4U2W/lTMUyx2G8YMOrZntIWg==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "svgo": "^1.0.5" + } + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "intl-messageformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz", + "integrity": "sha1-NFvNRt5jC3aDMwwuUhd/9eq0hPw=", + "dev": true, + "requires": { + "intl-messageformat-parser": "1.4.0" + } + }, + "intl-messageformat-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz", + "integrity": "sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "requires": { + "is-relative": "^0.1.0" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-bzip2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", + "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", + "dev": true + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, + "requires": { + "ci-info": "^1.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", + "dev": true + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", + "dev": true + }, + "is-jpg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.1.tgz", + "integrity": "sha1-KW1X/dmc4BBDSnKD40armhA16XU=", + "dev": true + }, + "is-natural-number": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-png": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", + "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-tar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", + "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-zip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", + "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isemail": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.3.tgz", + "integrity": "sha512-5xbsG5wYADIcB+mfLsd+nst1V/D+I7EU7LEZPo2GOIMu4JzfcRs5yQoypP4avA7QtUqgxYLKBYNv4IdzBmbhdw==", + "dev": true, + "requires": { + "punycode": "2.x.x" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", + "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", + "dev": true, + "requires": { + "async": "^2.1.4", + "compare-versions": "^3.1.0", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-hook": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-report": "^1.1.4", + "istanbul-lib-source-maps": "^1.2.4", + "istanbul-reports": "^1.3.0", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz", + "integrity": "sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.0", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", + "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", + "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "jest": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-23.5.0.tgz", + "integrity": "sha512-+X3Fk4rD8dTnHoIxHJymZthbtYllvSOnXAApQltvyLkHsv+fqyC/SZptUJDbXkFsqZJyyIXMySkdzerz3fv4oQ==", + "dev": true, + "requires": { + "import-local": "^1.0.0", + "jest-cli": "^23.5.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jest-cli": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.5.0.tgz", + "integrity": "sha512-Kxi2QH8s6NkpPgboza/plpmQ2bjUQ+MwYv7vM5rDwJz/x+NB4YoLXFikPXLWNP0JuYpMvYwITKneFljnNKhq2Q==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.3.1", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-source-maps": "^1.2.4", + "jest-changed-files": "^23.4.2", + "jest-config": "^23.5.0", + "jest-environment-jsdom": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve-dependencies": "^23.5.0", + "jest-runner": "^23.5.0", + "jest-runtime": "^23.5.0", + "jest-snapshot": "^23.5.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.5.0", + "jest-watcher": "^23.4.0", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "prompts": "^0.1.9", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^11.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "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 + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "jest-changed-files": { + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", + "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", + "dev": true, + "requires": { + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.5.0.tgz", + "integrity": "sha512-JENhQpLaVwXWPLUkhPYgIfecHKsU8GR1vj79rS4n0LSRsHx/U2wItZKoKAd5vtt2J58JPxRq4XheG79jd4fI7Q==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.4.2", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.5.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.5.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.5.0", + "micromatch": "^2.3.11", + "pretty-format": "^23.5.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babel-jest": { + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.2.tgz", + "integrity": "sha512-wg1LJ2tzsafXqPFVgAsYsMCVD5U7kwJZAvbZIxVm27iOewsQw1BR7VZifDlMTEWVo3wasoPPyMdKXWCsfFPr3Q==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", + "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", + "dev": true + }, + "babel-preset-jest": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", + "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^23.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jest-diff": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.5.0.tgz", + "integrity": "sha512-Miz8GakJIz443HkGpVOAyHQgSYqcgs2zQmDJl4oV7DYrFotchdoQvxceF6LhfpRBV1LOUGcFk5Dd/ffSXVwMsA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.5.0" + } + }, + "jest-docblock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", + "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.5.0.tgz", + "integrity": "sha512-8BgebQgAJmWXpYp4Qt9l3cn1Xei0kZ7JL4cs/NXh7750ATlPGzRRYbutFVJTk5B/Lt3mjHP3G3tLQLyBOCSHGA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.5.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-fetch-mock": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-1.6.5.tgz", + "integrity": "sha512-qPz5Zf8+W16pu6cvdwXkb2SwRfxGoQbbGB6HcIBFND0gnWKMfQilZew3PSODnOWQZF/pzBPi7ZIT6Yz5D0va1Q==", + "dev": true, + "requires": { + "@types/jest": "^23.0.0", + "isomorphic-fetch": "^2.2.1", + "promise-polyfill": "^7.1.1" + } + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-haste-map": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.5.0.tgz", + "integrity": "sha512-bt9Swigb6KZ6ZQq/fQDUwdUeHenVvZ6G/lKwJjwRGp+Fap8D4B3bND3FaeJg7vXVsLX8hXshRArbVxLop/5wLw==", + "dev": true, + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "invariant": "^2.2.4", + "jest-docblock": "^23.2.0", + "jest-serializer": "^23.0.1", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "sane": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jest-jasmine2": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz", + "integrity": "sha512-xMgvDUvgqKpilsGnneC9Qr+uIlROxKI3UoJcHZeUlu6AKpQyEkGh0hKbfM0NaEjX5sy7WeFQEhcp/AiWlHcc0A==", + "dev": true, + "requires": { + "babel-traverse": "^6.0.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^23.5.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.5.0", + "jest-each": "^23.5.0", + "jest-matcher-utils": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.5.0", + "jest-util": "^23.4.0", + "pretty-format": "^23.5.0" + } + }, + "jest-leak-detector": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz", + "integrity": "sha512-40VsHQCIEslxg91Zg5NiZGtPeWSBLXiD6Ww+lhHlIF6u8uSQ+xgiD6NbWHFOYs1VBRI+V/ym7Q1aOtVg9tqMzQ==", + "dev": true, + "requires": { + "pretty-format": "^23.5.0" + } + }, + "jest-matcher-utils": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz", + "integrity": "sha512-hmQUKUKYOExp3T8dNYK9A9copCFYKoRLcY4WDJJ0Z2u3oF6rmAhHuZtmpHBuGpASazobBxm3TXAfAXDvz2T7+Q==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.5.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jest-mock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", + "dev": true + }, + "jest-regex-util": { + "version": "23.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", + "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", + "dev": true + }, + "jest-resolve": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.5.0.tgz", + "integrity": "sha512-CRPc0ebG3baNKz/QicIy5rGfzYpMNm8AjEl/tDQhehq/QC4ttyauZdvAXel3qo+4Gri9ljajnxW+hWyxZbbcnQ==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz", + "integrity": "sha512-APZc/CjfzL8rH/wr+Gh7XJJygYaDjMQsWaJy4ZR1WaHWKude4WcfdU8xjqaNbx5NsVF2P2tVvsLbumlPXCdJOw==", + "dev": true, + "requires": { + "jest-regex-util": "^23.3.0", + "jest-snapshot": "^23.5.0" + } + }, + "jest-runner": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.5.0.tgz", + "integrity": "sha512-cpBvkBTVmW1ab1thbtoh2m6VnnM0BYKhj3MEzbOTZjPfzoIjUVIxLUTDobVNOvEK7aTEb/2oiPlNoOTSNJx8mw==", + "dev": true, + "requires": { + "exit": "^0.1.2", + "graceful-fs": "^4.1.11", + "jest-config": "^23.5.0", + "jest-docblock": "^23.2.0", + "jest-haste-map": "^23.5.0", + "jest-jasmine2": "^23.5.0", + "jest-leak-detector": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-runtime": "^23.5.0", + "jest-util": "^23.4.0", + "jest-worker": "^23.2.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.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 + }, + "source-map-support": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.8.tgz", + "integrity": "sha512-WqAEWPdb78u25RfKzOF0swBpY0dKrNdjc4GvLwm7ScX/o9bj8Eh/YL8mcMhBHYDGl87UkkSXDOFnW4G7GhWhGg==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "jest-runtime": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.5.0.tgz", + "integrity": "sha512-WzzYxYtoU8S1MJns0G4E3BsuFUTFBiu1qsk3iC9OTugzNQcQKt0BoOGsT7wXCKqkw/09QdV77vvaeJXST2Efgg==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-plugin-istanbul": "^4.1.6", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-config": "^23.5.0", + "jest-haste-map": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.5.0", + "jest-snapshot": "^23.5.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.5.0", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "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 + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "jest-serializer": { + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", + "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", + "dev": true + }, + "jest-snapshot": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.5.0.tgz", + "integrity": "sha512-NYg8MFNVyPXmnnihiltasr4t1FJEXFbZFaw1vZCowcnezIQ9P1w+yxTwjWT564QP24Zbn5L9cjxLs8d6K+pNlw==", + "dev": true, + "requires": { + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.5.0", + "jest-matcher-utils": "^23.5.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.5.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.5.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^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 + } + } + }, + "jest-validate": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.5.0.tgz", + "integrity": "sha512-XmStdYhfdiDKacXX5sNqEE61Zz4/yXaPcDsKvVA0429RBu2pkQyIltCVG7UitJIEAzSs3ociQTdyseAW8VGPiA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.5.0" + } + }, + "jest-watcher": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", + "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "dev": true, + "requires": { + "merge-stream": "^1.0.1" + } + }, + "jimp": { + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", + "integrity": "sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI=", + "dev": true, + "requires": { + "bignumber.js": "^2.1.0", + "bmp-js": "0.0.3", + "es6-promise": "^3.0.2", + "exif-parser": "^0.1.9", + "file-type": "^3.1.0", + "jpeg-js": "^0.2.0", + "load-bmfont": "^1.2.3", + "mime": "^1.3.4", + "mkdirp": "0.5.1", + "pixelmatch": "^4.0.0", + "pngjs": "^3.0.0", + "read-chunk": "^1.0.1", + "request": "^2.65.0", + "stream-to-buffer": "^0.1.0", + "tinycolor2": "^1.1.2", + "url-regex": "^3.0.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } + } + }, + "joi": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", + "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", + "dev": true, + "requires": { + "hoek": "4.x.x", + "isemail": "3.x.x", + "topo": "2.x.x" + } + }, + "jpeg-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz", + "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=", + "dev": true + }, + "jpegtran-bin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz", + "integrity": "sha1-9g7PSumZwL2tLp+83ytvCYHnops=", + "dev": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "js-base64": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz", + "integrity": "sha512-hm2nYpDrwoO/OzBhdcqs/XGT6XjSuSSCVEpia+Kl2J6x4CYt5hISlVL/AYU1khoDXv0AQVgxtdJySb9gjAn56Q==", + "dev": true + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "dev": true, + "requires": { + "mime-db": "~1.35.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "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 + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "^3.0.3" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "kleur": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.1.tgz", + "integrity": "sha512-Zq/jyANIJ2uX8UZjWlqLwbyhcxSXJtT/Y89lClyeZd3l++3ztL1I5SSCYrbcbwSunTjC88N3WuMk0kRDQD6gzA==", + "dev": true + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dev": true, + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lcov-parse": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", + "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", + "dev": true + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-bmfont": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.3.1.tgz", + "integrity": "sha512-lQkEawgez06lM2iw1vQEEOtVLJXyMzFcUqbwWMrB0g6zwhdUs/+e0KNd1zEJ7OFBbMVz0tbzQyjgjtTB47+PBg==", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "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 + }, + "lodash.endswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", + "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "dev": true + }, + "logalot": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", + "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", + "dev": true, + "requires": { + "figures": "^1.3.5", + "squeak": "^1.0.0" + }, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + } + } + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "^3.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lpad-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", + "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "indent-string": "^2.1.0", + "longest": "^1.0.0", + "meow": "^3.3.0" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } + } + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "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 + } + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "merge2": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "mini-css-extract-plugin": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.2.tgz", + "integrity": "sha512-ots7URQH4wccfJq9Ssrzu2+qupbncAce4TmTzunI9CIwlQMp2XI+WNUw6xWF6MMAGAm1cbUVINrSjATaVMyKXg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "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.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", + "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "dev": true, + "requires": { + "mime-db": "~1.35.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "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 + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", + "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + } + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "semver": "^5.4.1", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "1.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.11.tgz", + "integrity": "sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "node-sass": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz", + "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "2.87.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + } + } + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.2.0.tgz", + "integrity": "sha512-WvF3Myk0NhXkG8S9bygFM4IC1KOvnVJGq0QoGeoqOYOBeinBZp5ybW3QuYbTc89lkWBMM9ZBO4QGRoc0353kKA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.8.tgz", + "integrity": "sha512-7RZ+qbFGiVc6v14Y8DSZjPN1wZPOaMbiiP4tzf5eNuyOITAeOIA3cMhjuKUypVIqBgCSg1KaSyAv8Ocq/0ZJ1A==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "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" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opener": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.0.tgz", + "integrity": "sha512-MD4s/o61y2slS27zm2s4229V2gAUHX0/e3/XOmY/jsXwhysjjCIHN8lx7gqZCrZk19ym+HjCUWHeMKD7YJtKCQ==", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.0.tgz", + "integrity": "sha512-MXqrLyfiOOpwm+TOWjGskX+sIgu7qlW2oozkEKnS8Z+LWAkSK7Qf6PV9RGRfMd7GmRX3zW2A3oRo0+f23POcXQ==", + "dev": true, + "requires": { + "cssnano": "^4.0.2", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "optipng-bin": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", + "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", + "dev": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "dev": true, + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-filter-obj": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", + "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parallel-webpack": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/parallel-webpack/-/parallel-webpack-2.3.0.tgz", + "integrity": "sha512-RCIDF+YOqyAJeM8NumtOQ8JYjUXexDRIN4slFNfvUp1RxLB1zLeLZMAwlP6s7l9LhuR5xJ2pv8ckIsdESzSqog==", + "dev": true, + "requires": { + "ajv": "^4.9.2", + "bluebird": "^3.0.6", + "chalk": "^1.1.1", + "interpret": "^1.0.1", + "lodash.assign": "^4.0.8", + "lodash.endswith": "^4.0.1", + "lodash.flatten": "^4.2.0", + "minimist": "^1.2.0", + "node-ipc": "^9.1.0", + "pluralize": "^1.2.1", + "supports-color": "^3.1.2", + "worker-farm": "^1.3.1" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=", + "dev": true + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=", + "dev": true + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dev": true, + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-headers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", + "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", + "dev": true, + "requires": { + "for-each": "^0.3.2", + "trim": "0.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dev": true, + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "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-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pbkdf2": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "dev": true, + "requires": { + "pngjs": "^3.0.0" + } + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "pkg-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "dev": true, + "requires": { + "debug-log": "^1.0.0", + "find-root": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "pngjs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", + "integrity": "sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "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" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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 + }, + "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" + } + } + } + }, + "postcss-calc": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-6.0.1.tgz", + "integrity": "sha1-PSQXG79udinUIqQ26/5t2VEfQzA=", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^6.0.0", + "postcss-selector-parser": "^2.2.2", + "reduce-css-calc": "^2.0.0" + } + }, + "postcss-colormin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.1.tgz", + "integrity": "sha1-bxwYoBVbxpYT8v8ThD4uSuj/C74=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.0.tgz", + "integrity": "sha512-kQBKB8hnq1SRfSpwHDpM1JNHAyk9fydW8hIDvndR2ijTFKIlBPEvkJkCt8JznOugdm12/YCaRgyq/sqDGz9PwA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000878", + "electron-to-chromium": "^1.3.61", + "node-releases": "^1.0.0-alpha.11" + } + } + } + }, + "postcss-convert-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.0.tgz", + "integrity": "sha1-d9d9mu0dxOaVbmUcw0nVMwWHb2I=", + "dev": true, + "requires": { + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.0.tgz", + "integrity": "sha1-loSimedrPpMmPvj9KtvxocCP2I0=", + "dev": true, + "requires": { + "postcss": "^6.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.0.tgz", + "integrity": "sha1-QvPCZ/hfqQngQsNXZ+z9Zcsr1yw=", + "dev": true, + "requires": { + "postcss": "^6.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.0.tgz", + "integrity": "sha1-VeGKWcdBKOOMfSgEvPpAVmEfuX8=", + "dev": true, + "requires": { + "postcss": "^6.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.0.tgz", + "integrity": "sha1-Sgv4WXh4TPH4HtLBwf2dlkodofo=", + "dev": true, + "requires": { + "postcss": "^6.0.0" + } + }, + "postcss-import": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", + "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", + "dev": true, + "requires": { + "postcss": "^6.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "dev": true, + "requires": { + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "postcss-loader": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^6.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^0.4.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.4.tgz", + "integrity": "sha512-wLi2u22mSdBDBjLF8pyaPCNppOmqb+B4O0Dlt/4nUwn79EltDUJmCeCDYqo7SB2z9puOHTftnxviY4J9xS+ygQ==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.1.tgz", + "integrity": "sha1-Qw/Vmz8u0uivzQsxJ47aOYVKuxA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^6.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.0.tgz", + "integrity": "sha512-kQBKB8hnq1SRfSpwHDpM1JNHAyk9fydW8hIDvndR2ijTFKIlBPEvkJkCt8JznOugdm12/YCaRgyq/sqDGz9PwA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000878", + "electron-to-chromium": "^1.3.61", + "node-releases": "^1.0.0-alpha.11" + } + }, + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.0.tgz", + "integrity": "sha1-TMM9KD1qgXWQNudX75gdksvYW+0=", + "dev": true, + "requires": { + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.0.tgz", + "integrity": "sha1-P8ORZDnSepu4Bm23za2AFlDrCQ4=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.0.tgz", + "integrity": "sha1-BekWbuSMBa9lGYnOhNOcG015BnQ=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.0.tgz", + "integrity": "sha1-sen2xGNBbT/Nyybnt4XZX2FXiq0=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^6.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "postcss-normalize-charset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.0.tgz", + "integrity": "sha1-JFJyknAtXoEp6vo9HeSe1RpqtzA=", + "dev": true, + "requires": { + "postcss": "^6.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", + "integrity": "sha1-lQ4Me+NEV3ChYP/9a2ZEw8DNj4k=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.0.tgz", + "integrity": "sha1-7pNDq5gbgixjq3JhXszNCFZERaM=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.0.tgz", + "integrity": "sha1-txHFks8W+vn/V15C+hALZ5kIPv8=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.0.tgz", + "integrity": "sha1-cYy20wpvrGrGqDDjLAbAfbxm/l0=", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.0.tgz", + "integrity": "sha1-A1HymIaqmB1D2RssK9GuptCvbSM=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.0.tgz", + "integrity": "sha1-Ws1dR7rqXRdnSyzMSuUWb6iM35c=", + "dev": true, + "requires": { + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.0.tgz", + "integrity": "sha1-t6nIrSbPJmlMFG6y1ovQz0mVbw0=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.0.tgz", + "integrity": "sha1-HafnaxCuY8EYJ/oE/Du0oe/pnMA=", + "dev": true, + "requires": { + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.0.0.tgz", + "integrity": "sha1-WLQMdPcuAi6zQVLBLksPk1RIL8I=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.1.tgz", + "integrity": "sha1-8tWPUM6isMXcEnjW6l7Q/1gpwpM=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^6.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.0.tgz", + "integrity": "sha512-kQBKB8hnq1SRfSpwHDpM1JNHAyk9fydW8hIDvndR2ijTFKIlBPEvkJkCt8JznOugdm12/YCaRgyq/sqDGz9PwA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000878", + "electron-to-chromium": "^1.3.61", + "node-releases": "^1.0.0-alpha.11" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.0.tgz", + "integrity": "sha1-9kX8dEDDUnT0DegQThStcWPt8Yg=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.0.tgz", + "integrity": "sha1-wLutAlIPxjbJ14sOhAPi5RXDIoU=", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^6.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.0.tgz", + "integrity": "sha1-BMHpdkx1h0JhMDQCxB8Ol2n8VQE=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^6.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", + "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", + "dev": true + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "23.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.5.0.tgz", + "integrity": "sha512-iFLvYTXOn+C/s7eV+pr4E8DD7lYa2/klXMEz+lvH14qSDWAJ7S+kFmMe1SIWesATHQxopHTxRcB2nrpExhzaBA==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-polyfill": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.2.tgz", + "integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==", + "dev": true + }, + "prompts": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", + "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", + "dev": true, + "requires": { + "kleur": "^2.0.1", + "sisteransi": "^0.1.1" + } + }, + "prop-types": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", + "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", + "dev": true, + "requires": { + "fbjs": "^0.8.16", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randomatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "read-chunk": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz", + "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "realpath-native": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.1.tgz", + "integrity": "sha512-W14EcXuqUvKP8dkWkD7B95iMy77lpMnlFXbbk409bQtNCbeu0kvRE5reo+yIZ3JXxg6frbGsz2DLQ39lrCB40g==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "recursive-readdir-sync": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", + "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=", + "dev": true + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reduce-css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.4.tgz", + "integrity": "sha512-i/vWQbyd3aJRmip9OVSN9V6nIjLf/gg/ctxb0CpvHWtcRysFl/ngDBQD+rqavxdw/doScA3GMBXhzkHQ4GCzFQ==", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", + "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "~0.1", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "request": { + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "^4.13.1" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" + } + }, + "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 + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } + } + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-parallel": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.8.tgz", + "integrity": "sha512-e5t1NVhr5VWmD9V9U4KjjSGkf5w6CcTPgw11A3CfIvkkQxlAKzX3usPUp1NUQTmpOOjU+f9QRICU3tMbKwn9ZQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "*" + } + }, + "rxjs": { + "version": "5.5.11", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", + "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "sane": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dev": true, + "requires": { + "commander": "~2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + } + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", + "dev": true + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "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 + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sisteransi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", + "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "squeak": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", + "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "console-stream": "^0.1.1", + "lpad-align": "^1.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "sshpk": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "stackframe": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", + "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==", + "dev": true + }, + "standard": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/standard/-/standard-11.0.1.tgz", + "integrity": "sha512-nu0jAcHiSc8H+gJCXeiziMVZNDYi8MuqrYJKxTgjP4xKXZMKm311boqQIzDrYI/ktosltxt2CbDjYQs9ANC8IA==", + "dev": true, + "requires": { + "eslint": "~4.18.0", + "eslint-config-standard": "11.0.0", + "eslint-config-standard-jsx": "5.0.0", + "eslint-plugin-import": "~2.9.0", + "eslint-plugin-node": "~6.0.0", + "eslint-plugin-promise": "~3.7.0", + "eslint-plugin-react": "~7.7.0", + "eslint-plugin-standard": "~3.0.1", + "standard-engine": "~8.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "eslint": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.2.tgz", + "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.2", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + } + }, + "eslint-plugin-import": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz", + "integrity": "sha1-JgAu+/ylmJtyiKwEdQi9JPIXsWk=", + "dev": true, + "requires": { + "builtin-modules": "^1.1.1", + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.1.1", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "globals": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", + "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "standard-engine": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-8.0.1.tgz", + "integrity": "sha512-LA531C3+nljom/XRvdW/hGPXwmilRkaRkENhO3FAGF1Vtq/WtCXzgmnc5S6vUHHsgv534MRy02C1ikMwZXC+tw==", + "dev": true, + "requires": { + "deglob": "^2.1.0", + "get-stdin": "^6.0.0", + "minimist": "^1.1.0", + "pkg-conf": "^2.0.0" + } + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-to": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz", + "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0=", + "dev": true + }, + "stream-to-buffer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz", + "integrity": "sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk=", + "dev": true, + "requires": { + "stream-to": "~0.2.0" + } + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^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" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" + } + }, + "strip-dirs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "get-stdin": "^4.0.1", + "is-absolute": "^0.1.5", + "is-natural-number": "^2.0.0", + "minimist": "^1.1.0", + "sum-up": "^1.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "style-loader": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", + "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^0.4.5" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "stylehacks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.0.tgz", + "integrity": "sha1-ZLMjlRxKJOX8ey7AbBN78y0VXoo=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^6.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.0.tgz", + "integrity": "sha512-kQBKB8hnq1SRfSpwHDpM1JNHAyk9fydW8hIDvndR2ijTFKIlBPEvkJkCt8JznOugdm12/YCaRgyq/sqDGz9PwA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000878", + "electron-to-chromium": "^1.3.61", + "node-releases": "^1.0.0-alpha.11" + } + }, + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "sum-up": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", + "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "svgo": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.0.5.tgz", + "integrity": "sha512-nYrifviB77aNKDNKKyuay3M9aYiK6Hv5gJVDdjj2ZXTQmI8WZc8+UPLR5IpVlktJfSu3co/4XcWgrgI6seGBPg==", + "dev": true, + "requires": { + "coa": "~2.0.1", + "colors": "~1.1.2", + "css-select": "~1.3.0-rc0", + "css-select-base-adapter": "~0.1.0", + "css-tree": "1.0.0-alpha25", + "css-url-regex": "^1.1.0", + "csso": "^3.5.0", + "js-yaml": "~3.10.0", + "mkdirp": "~0.5.1", + "object.values": "^1.0.4", + "sax": "~1.2.4", + "stable": "~0.1.6", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "css-select": { + "version": "1.3.0-rc0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.3.0-rc0.tgz", + "integrity": "sha1-b5MZaqrnN2ZuoQNqjLFKj8t6kjE=", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "^1.0.1" + } + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz", + "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.1.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.0", + "xtend": "^4.0.0" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, + "test-exclude": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "topo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "requires": { + "glob": "^6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true + }, + "uglify-js": { + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.8.tgz", + "integrity": "sha512-WatYTD84gP/867bELqI2F/2xC9PQBETn/L+7RGq9MQOA/7yFBNvY1UwXqvtILeE6n0ITwBXxp34M0/o70dzj6A==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "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 + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "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 + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.1.tgz", + "integrity": "sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "dev": true, + "requires": { + "ip-regex": "^1.0.1" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", + "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + }, + "dependencies": { + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + } + } + }, + "vinyl-assign": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", + "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "readable-stream": "^2.0.0" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "vue-hot-reload-api": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz", + "integrity": "sha512-2j/t+wIbyVMP5NvctQoSUvLkYKoWAAk2QlQiilrM2a6/ulzFgdcLUJfTvs4XQ/3eZhHiBmmEojbjmM4AzZj8JA==", + "dev": true + }, + "vue-loader": { + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.4.0.tgz", + "integrity": "sha512-qhc1fnflEVhFq5dYLDXXTXf3PoRiGxeMhBmGDeLqlg0XAaikZEU224ZLqsTkQQVUT2uA2PN9haYlBUqq/6iEtA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^2.0.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + } + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-svg-loader": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/vue-svg-loader/-/vue-svg-loader-0.5.0.tgz", + "integrity": "sha512-mGMIPlZ3D4CSdQrBFBv7Ijr1V5L6iuDOulkoWHXeHzLEdWXbsJtcE02tMgSRQmj9I8CO61iLFYQF25tmmMdowA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "svgo": "^1.0.4", + "vue-template-compiler": "^2.5.13", + "vue-template-es2015-compiler": "^1.6.0" + } + }, + "vue-template-compiler": { + "version": "2.5.17", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.17.tgz", + "integrity": "sha512-63uI4syCwtGR5IJvZM0LN5tVsahrelomHtCxvRkZPJ/Tf3ADm1U1wG6KWycK3qCfqR+ygM5vewUvmJ0REAYksg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", + "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "ware": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", + "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", + "dev": true, + "requires": { + "wrap-fn": "^0.1.0" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.17.1.tgz", + "integrity": "sha512-vdPYogljzWPhFKDj3Gcp01Vqgu7K3IQlybc3XIdKSQHelK1C3eIQuysEUR7MxKJmdandZlQB/9BG2Jb1leJHaw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", + "dev": true + }, + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz", + "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", + "dev": true, + "requires": { + "acorn": "^5.3.0", + "bfj-node4": "^5.2.0", + "chalk": "^2.3.0", + "commander": "^2.13.0", + "ejs": "^2.5.7", + "express": "^4.16.2", + "filesize": "^3.5.11", + "gzip-size": "^4.1.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "opener": "^1.4.3", + "ws": "^4.0.0" + } + }, + "webpack-cleanup-plugin": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/webpack-cleanup-plugin/-/webpack-cleanup-plugin-0.5.1.tgz", + "integrity": "sha1-3y1wa9dTZMBuZbBRGGMW1nTrlq8=", + "dev": true, + "requires": { + "lodash.union": "4.6.0", + "minimatch": "3.0.3", + "recursive-readdir-sync": "1.0.6" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + } + } + }, + "webpack-merge": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", + "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-pwa-manifest": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/webpack-pwa-manifest/-/webpack-pwa-manifest-3.7.1.tgz", + "integrity": "sha512-G37fVCa1ndij3jyz6WaOaxHLHdp2URyOHwp2GLmxt39sXL8ZdOFM1qvHagEJBkNh+3hu25eIgy6TD5J/8sgQcQ==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "jimp": "^0.2.28", + "mime": "^1.6.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "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 + } + } + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", + "dev": true + }, + "whatwg-mimetype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", + "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "workbox-background-sync": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-3.4.1.tgz", + "integrity": "sha512-Ksb2nCg/2wOyBMhSBqSbtCEwuKaf5sHgTY8HdCxbLIQSzDh9/qZqg+1P11CKlgJmHtje3EK3B8EsrzukZo10xA==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-broadcast-cache-update": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.4.1.tgz", + "integrity": "sha512-+WPqHFk4ER4RICAMOYrP88yBbiUQ9ZOFNruqwbl9YxGfbADV16OEGmYpIs+Az6HT6DNDCx8eQqtFiaG8N3O11Q==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-build": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-3.4.1.tgz", + "integrity": "sha512-Qi04XdHjkXbRN0CV5XO1oqDWbJSIm7VYhxmxjtnVcKK8PrMT6rOUFUi9ziDI+8UQgcXbLK4ZChWf2ptZS1/MbA==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "common-tags": "^1.4.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.2", + "joi": "^11.1.1", + "lodash.template": "^4.4.0", + "pretty-bytes": "^4.0.2", + "workbox-background-sync": "^3.4.1", + "workbox-broadcast-cache-update": "^3.4.1", + "workbox-cache-expiration": "^3.4.1", + "workbox-cacheable-response": "^3.4.1", + "workbox-core": "^3.4.1", + "workbox-google-analytics": "^3.4.1", + "workbox-navigation-preload": "^3.4.1", + "workbox-precaching": "^3.4.1", + "workbox-range-requests": "^3.4.1", + "workbox-routing": "^3.4.1", + "workbox-strategies": "^3.4.1", + "workbox-streams": "^3.4.1", + "workbox-sw": "^3.4.1" + }, + "dependencies": { + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0" + } + } + } + }, + "workbox-cache-expiration": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-cache-expiration/-/workbox-cache-expiration-3.4.1.tgz", + "integrity": "sha512-AzOPB+dwfxg13v4+q5jWkxsw/oim9mPIzew1anu8ALA3vB8qySaJJToXp+ZlVh/Co+sDK0tgjlB76bvSFHgZ4g==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-cacheable-response": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-3.4.1.tgz", + "integrity": "sha512-SO2k830JT93GitPwc5tzJI49d9VwyVxXwiCbyvo+Sqo+dcvWSrmpsyuXdzy6zuasbPrWUF0vsFj1uGtZbOym8Q==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-core": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.4.1.tgz", + "integrity": "sha512-RqMV2so9/KLAu9aUxJ/85pvrZMUn835B8zoHmqRyGNetiDr8B1zSBeKXPZAjFlX/88KdhizNwiRlJtqlXtM4tA==", + "dev": true + }, + "workbox-google-analytics": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-3.4.1.tgz", + "integrity": "sha512-w6Osz2Rr1/4+W0gram6Yzg6NNWLvHP51RwFCNAZSpEnipr0qSEtD+yvwrdaHfiJHWhcK2yH/V6E1MV8Hrczmvw==", + "dev": true, + "requires": { + "workbox-background-sync": "^3.4.1", + "workbox-core": "^3.4.1", + "workbox-routing": "^3.4.1", + "workbox-strategies": "^3.4.1" + } + }, + "workbox-navigation-preload": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-3.4.1.tgz", + "integrity": "sha512-P3FHAcyZ8db2QiW/BpMkuosC1OkRsEoUaT7U3QOgg7JSjjsJoEbF7G5olNe+P+PQYdVhJA7TCuptI6dy2gLS/g==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-precaching": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-3.4.1.tgz", + "integrity": "sha512-ykU2mly9xmRrCW6iMeUWYydWiso/WSE16+7wponhI0WC53jiQSt2JvykWm0VpWFJSs6ZTSZZ1WK2gs/brRnPug==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-range-requests": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-3.4.1.tgz", + "integrity": "sha512-ktgjl6liZrRTmQjPw1pBblC5umHnTb8XcvFVitdGz17B23jj6cUV4EXzEU2ilGn6jO6+MLV1Vn9SWajtLSc2Gg==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-routing": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-3.4.1.tgz", + "integrity": "sha512-6j6cXMUYfMPYTycmElxVOfBTr6WV5zAn/JUFJ7GJ5pYFIE9cqztprnrcOsWJ42+AiNIeHPbKfyIWE/rZVviMxQ==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-strategies": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-3.4.1.tgz", + "integrity": "sha512-7mJuzFsgejflzjfnChXCFma1S0mi9WC6wlSU2wE50M7bJmEuf9A3j3MojpKcsTEM58hbhbnU6QF/u9iIV7+opw==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-streams": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-3.4.1.tgz", + "integrity": "sha512-krw+5bp+oe9Za5c6WlTWM3SgZGfExYcqRSn1gsyYgKeXmgzTwf+DOb5Lwult0KSWlJfq8B3Wk7sW8Sl7lRzSbA==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-sw": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-3.4.1.tgz", + "integrity": "sha512-nnm2by5oaQGXRH7x4M5/n2KqjUGVmP4P8azUmJITnYa3DWVYn/ghDg3LJ5+h4A28vYq9V6ePgATaEPfb6B5pug==", + "dev": true + }, + "workbox-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-dwIaEJK27xbGKMQv1sbSjywxhfX74nMW1zgUP9XUtpFeykH0e5Dm1j7wbQezXU3mFoaO7xuzqwGpAFxMKc0xMA==", + "dev": true, + "requires": { + "json-stable-stringify": "^1.0.1", + "workbox-build": "^3.4.1" + } + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrap-fn": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", + "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", + "dev": true, + "requires": { + "co": "3.1.0" + }, + "dependencies": { + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" + } + }, + "xhr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "dev": true, + "requires": { + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=", + "dev": true + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "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 + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/package.json b/package.json index c06a93c..7299324 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,7 @@ "homepage": "https://github.com/alpheios-project/data-models#readme", "devDependencies": { "alpheios-node-build": "github:alpheios-project/node-build", - "babel-jest": "^23.4.0", - "babel-preset-env": "^1.7.0", "coveralls": "^3.0.2", - "eslint": "^5.4.0", "intl-messageformat": "^2.1.0", "jest": "^23.4.0", "jest-fetch-mock": "1.6.5", diff --git a/src/feature.js b/src/feature.js index 16a7ad3..b8aba74 100644 --- a/src/feature.js +++ b/src/feature.js @@ -161,12 +161,17 @@ export default class Feature { /** * Compares a feature's values to another feature's values for sorting * @param {Feature} otherFeature the feature to compare this feature's values to - * @return {integer} >=1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second + * @return {integer} < 1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second */ compareTo (otherFeature) { // the data values are sorted upon construction and insertion so we only should need to look at the first values // feature sortOrders are descending (i.e. 5 sorts higher than 1) - return otherFeature._data[0].sortOrder - this._data[0].sortOrder + if (otherFeature) { + return otherFeature._data[0].sortOrder - this._data[0].sortOrder + } else { + // if the other feature isn't defined, this one sorts first + return -1 + } } get items () { diff --git a/src/lexeme.js b/src/lexeme.js index fd15068..fcc68d8 100644 --- a/src/lexeme.js +++ b/src/lexeme.js @@ -42,6 +42,7 @@ class Lexeme { } this.lemma = lemma + this.altLemmas = [] this.inflections = [] inflections.forEach(i => { this.addInflection(i) }) this.meaning = meaning || new DefinitionSet(this.lemma.word, this.lemma.languageID) @@ -57,6 +58,14 @@ class Lexeme { this.inflections.push(inflection) } + /** + * add an alternative lemma to the lexeme + * @param {Lemma} lemma + */ + addAltLemma (lemma) { + this.altLemmas.push(lemma) + } + /** * test to see if a lexeme is populated with meaningful data * Returns true if any of these are true: diff --git a/tests/feature.test.js b/tests/feature.test.js index 71477ed..fcdcbc9 100644 --- a/tests/feature.test.js +++ b/tests/feature.test.js @@ -152,6 +152,11 @@ describe('feature.test.js', () => { b = new Feature(Feature.types.frequency, [['higher', 2]], Constants.LANG_GREEK) expect(a.compareTo(b)).toBeLessThan(0) expect([a, b].sort((a, b) => a.compareTo(b))).toEqual([a, b]) + + // expects null values to be handled + a = new Feature(Feature.types.frequency, [['lower', 1], ['highest', 3]], Constants.LANG_GREEK) + b = null + expect(a.compareTo(b)).toBeLessThan(0) }) it('7 Feature - check get types, isAllowedType, defaultSortOrder, joinSeparator, defaultImporterName', () => { diff --git a/tests/lexeme.test.js b/tests/lexeme.test.js index e899cd0..8c4ec61 100644 --- a/tests/lexeme.test.js +++ b/tests/lexeme.test.js @@ -267,4 +267,11 @@ describe('lexeme.test.js', () => { expect(lex.disambiguated).toBeFalsy() expect(lex.inflections).toEqual([inflection1, inflection2]) }) + it('8 Lexeme - adds alternate Lemmas', () => { + let lemma2 = new Lemma('word', 'grc') + let lex = new Lexeme(lemma, []) + expect(lex.altLemmas.length).toEqual(0) + lex.addAltLemma(lemma2) + expect(lex.altLemmas).toEqual([lemma2]) + }) })