diff --git a/.gitignore b/.gitignore index 12fed33..7fce42f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ npm-debug.log .nyc_output lib lib_test +.vscode/ diff --git a/README.md b/README.md index dd27de0..b6a28b2 100644 --- a/README.md +++ b/README.md @@ -4,30 +4,96 @@ [![Coverage Status](https://coveralls.io/repos/github/{{github-user-name}}/{{github-app-name}}/badge.svg?branch=master)](https://coveralls.io/github/{{github-user-name}}/{{github-app-name}}?branch=master) [![MIT license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](http://opensource.org/licenses/MIT) -# Using this module in other modules +# Setup -Here is a quick example of how this module can be used in other modules. The [TypeScript Module Resolution Logic](https://www.typescriptlang.org/docs/handbook/module-resolution.html) makes it quite easy. The file `src/index.ts` is a [barrel](https://basarat.gitbooks.io/typescript/content/docs/tips/barrel.html) that re-exports selected exports from other files. The _package.json_ file contains `main` attribute that points to the generated `lib/index.js` file and `typings` attribute that points to the generated `lib/index.d.ts` file. +- To set up the `TyranidObfuscator`, mark fields on a collection with `obfuscateable:true` as shown below. In addition provide a collection name that +will be used for storing the metadata for each obfuscation batch -> If you are planning to have code in multiple files (which is quite natural for a NodeJS module) that users can import, make sure you update `src/index.ts` file appropriately. +```ts +export const User = new Tyr.Collection({ + id: 'u00', + name: 'user', + dbName: 'dbTest', + fields: { + _id: { is: 'mongoid' }, + email: { is: 'email' }, + firstName: { is: 'string', obfuscateable: true, required: true }, + lastName: { is: 'string', obfuscateable: true }, + gender: { is: 'string' }, + ip_address: { is: 'string', obfuscateable:true, required: true}, + createdAt: { is: 'date' } + } +}) as UserCollection; +``` + +- Add a call to `TyrObfuscator.validate();` after calling `Tyr.validate();`, this will ensure that fields marked `obfuscateable` are valid + +```ts +Tyr.validate(); +TyrObfuscator.validate(); +``` + + +# Usage + +- To preserve data that will be obfuscated, utilize the `Tyr.copyObfuscateableData` function. Provide a query that selects a subset from the target collection as well as a secondary collection to migrate the data to. In the below example, the previously instantiated `User` collection will have the first ten records migrated to a new collection called `copiedPIICollection` + +```ts +const copiedPIICollection = new Tyr.Collection({ + id: '_c1', + name: 'copiedData', + dbName: 'copiedData', + internal: false, + fields: { + _id: { is: 'mongoid' }, + firstName: { is: 'string' }, + lastName: { is: 'string' }, + ip_address: { is: 'string' } + } +}); -Now assuming you have published this amazing module to _npm_ with the name `my-amazing-lib`, and installed it in the module in which you need it - + const query ={ { _id: { $lte: 10 } } ; + await Tyr.copyObfuscateableData(query, Tyr.byName.user, copiedPIICollection); +``` -- To use the `Greeter` class in a TypeScript file - +- The preserved data can either be exported, kept in place, or encrypted for secure cold storage. `Tyr.encryptCollection` will use AES encryption across all records of a given collection, secured with the provided password or `masterKey` ```ts -import { Greeter } from "my-amazing-lib"; +await Tyr.encryptCollection(copiedPIICollection, masterKey); +``` + +- Next apply static replacement values to all of the selected records in `User`. Provide the same query to mask a subset of records in `User`. The field name to value object specified for `replacementValues` will replace the data in the `User` collection with the specified values. + +- Each record affected will have a corresponding entry in the metadata collection that can be queried to determine fictitious values in the `User` collection. The metadata collection will be named by appending the provided `metadataSuffix` value to the given collection. In the below example, collection `user` will have a metadata collection name of `user__metadata`; + + -const greeter = new Greeter("World!"); -greeter.greet(); +```ts +// Again, mask the first ten records +const query = { _id: { $lte: 10 } }; + +const opts: Tyr.ObfuscateBatchOpts = { + query: query, + collection: Tyr.byName.user, + replacementValues: { + firstName: 'John', + lastName: 'Doe', + ip_address: '0.0.0.0' + }, + metadataSuffix: '__metadata' +}; + +const batchResults: Tyr.ObfuscateBatchResult = await Tyr.obfuscate(opts); ``` -- To use the `Greeter` class in a JavaScript file - -```js -const Greeter = require('my-amazing-lib').Greeter; -const greeter = new Greeter('World!'); -greeter.greet(); +- To restore the obfuscated data to its original state call `Tyr.restoreObfuscatedData` with the collection to restore (`User`), the collection holidng the values to be placed on the collection to restore (`copiedPIICollection`), a query to restore a subset of the records in `copiedPIICollection` and finally the masterKey used to decrypt the collection if it was encrypted. + +```ts + // Blank query to restore all records from copiedPIICollection + const query: Tyr.MongoQuery = {}; + await Tyr.restoreObfuscatedData(Tyr.byName.user, copiedPIICollection, query, masterKey); ``` ## Setting travis and coveralls badges diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7cbcb84 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,9479 @@ +{ + "name": "tyranid-obfuscate", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ava/babel-plugin-throws-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", + "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", + "dev": true + }, + "@ava/babel-preset-stage-4": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", + "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", + "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.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "package-hash": "1.2.0" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "package-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", + "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", + "dev": true, + "requires": { + "md5-hex": "1.3.0" + } + } + } + }, + "@ava/babel-preset-transform-test-files": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", + "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", + "dev": true, + "requires": { + "@ava/babel-plugin-throws-helper": "2.0.0", + "babel-plugin-espower": "2.4.0" + } + }, + "@ava/write-file-atomic": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", + "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "@babel/runtime": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", + "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", + "dev": true, + "requires": { + "regenerator-runtime": "0.12.1" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + } + } + }, + "@commitlint/cli": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-7.5.0.tgz", + "integrity": "sha512-ts5b7eCF5B2qhUtgXuFFVkhlgnkSqKVyrq9Eu197bCyT1KyxCmAGTVCvPznaK8VhG3ts7rTt7byE+lyDXpuvSg==", + "dev": true, + "requires": { + "@commitlint/format": "7.5.0", + "@commitlint/lint": "7.5.0", + "@commitlint/load": "7.5.0", + "@commitlint/read": "7.5.0", + "babel-polyfill": "6.26.0", + "chalk": "2.3.1", + "get-stdin": "5.0.1", + "lodash": "4.17.11", + "meow": "5.0.0", + "resolve-from": "4.0.0", + "resolve-global": "0.1.0" + } + }, + "@commitlint/config-conventional": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-7.5.0.tgz", + "integrity": "sha512-odLgBfQ5xntFAmMfAmDY2C4EWhW+cSTbvbsRS7seb55DCa3IaxxSHHC9eXrR+hN/BdUT5vqAxdX1PkR996sq9Q==", + "dev": true + }, + "@commitlint/ensure": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-7.5.0.tgz", + "integrity": "sha512-zgHJFlHeO2/Wge6Yr/tlWLlZ7vJaCXnUaFsN5NaHb85PiWZTiuJmntJvh0l33pfiAVq41T2FT063vjUwFI4kSA==", + "dev": true, + "requires": { + "lodash": "4.17.11" + } + }, + "@commitlint/execute-rule": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-7.5.0.tgz", + "integrity": "sha512-K66aoly8mxSHmBA/Y8bKSPPcCAR4GpJEsvHaLDYOG7GsyChu8NgCD53L8GUqPW8lBCWwnmCiSL+RlOkNHJ0Gag==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "@commitlint/format": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-7.5.0.tgz", + "integrity": "sha512-DEeQXfTLUm9kARliCBfw3SlQRAYjK2aXeRAUMs1HPhLA2tjNFFGv6LOpFFNdiu/WV+o1ojcgIvBBjpHaVT+Tvw==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "chalk": "2.3.1" + } + }, + "@commitlint/is-ignored": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-7.5.0.tgz", + "integrity": "sha512-5Nd/driOV9IFwJ7e0+g7I8pqq3EOs8dP0C2wxOpwUAL8C5saf+VGMe0HN6iPGLktITP6fHPrKisOdEJ6sRg2lw==", + "dev": true, + "requires": { + "semver": "5.6.0" + } + }, + "@commitlint/lint": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-7.5.0.tgz", + "integrity": "sha512-sRd6V/SoJuF6Qwwd9cjz8pLd8lCh1jisnyRlubkq0spgZFR9IXE3Qj1hK29q4EPVvXHwli/z3fBZx2hrrZqqsQ==", + "dev": true, + "requires": { + "@commitlint/is-ignored": "7.5.0", + "@commitlint/parse": "7.5.0", + "@commitlint/rules": "7.5.0", + "babel-runtime": "6.26.0", + "lodash": "4.17.11" + } + }, + "@commitlint/load": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-7.5.0.tgz", + "integrity": "sha512-fhBER/rzPsteM6zq5qqMiOi+A2bHKCE/0PKmOzYgaqTKcG9c1SsOle9phPemW85to8Gxd2YgUOVLsZkCMltLtA==", + "dev": true, + "requires": { + "@commitlint/execute-rule": "7.5.0", + "@commitlint/resolve-extends": "7.5.0", + "babel-runtime": "6.26.0", + "cosmiconfig": "4.0.0", + "lodash": "4.17.11", + "resolve-from": "4.0.0" + } + }, + "@commitlint/message": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-7.5.0.tgz", + "integrity": "sha512-5YOhsqy/MgHH7vyDsmmzO6Jr3ygr1pXbCm9NR3XB51wjg55Kd6/6dVlkhS/FmDp99pfwTdHb0TyeDFEjP98waw==", + "dev": true + }, + "@commitlint/parse": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-7.5.0.tgz", + "integrity": "sha512-hWASM8SBFTBtlFkKrEtD1qW6yTe2BsfoRiMKuYyRCTd+739TUF17og5vgQVuWttbGP0gXaciW44NygS2YjZmfA==", + "dev": true, + "requires": { + "conventional-changelog-angular": "1.6.6", + "conventional-commits-parser": "2.1.7", + "lodash": "4.17.11" + } + }, + "@commitlint/read": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-7.5.0.tgz", + "integrity": "sha512-uqGFCKZGnBUCTkxoCCJp4MfWUkegXkyT0T0RVM9diyG6uNWPWlMH1509sjLFlyeJKG+cSyYGG/d6T103ScMb4Q==", + "dev": true, + "requires": { + "@commitlint/top-level": "7.5.0", + "@marionebl/sander": "0.6.1", + "babel-runtime": "6.26.0", + "git-raw-commits": "1.3.6" + } + }, + "@commitlint/resolve-extends": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-7.5.0.tgz", + "integrity": "sha512-FRIyPuqGvGa03OT4VgOHakizcw8YR5rdm77JsZff1rSnpxk6i+025I6qMeHqCIr5FaVIA0kR3FlC+MJFUs165A==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "import-fresh": "3.0.0", + "lodash": "4.17.11", + "resolve-from": "4.0.0", + "resolve-global": "0.1.0" + } + }, + "@commitlint/rules": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-7.5.0.tgz", + "integrity": "sha512-+qXJB8teMgJSroSfFB46g3chskYp3oo51mbXnwhQir9AvO38wb6vRVdf7w4MMh8Xubjp9Xmj+ued1MhA1AnDEg==", + "dev": true, + "requires": { + "@commitlint/ensure": "7.5.0", + "@commitlint/message": "7.5.0", + "@commitlint/to-lines": "7.5.0", + "babel-runtime": "6.26.0" + } + }, + "@commitlint/to-lines": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-7.5.0.tgz", + "integrity": "sha512-ZQ3LxPNuQ/J7q42hkiPWN5fUIjWae85H2HHoBB+/Rw1fo+oehvr4Xyt+Oa9Mx5WbBnev/wXnUFjXgoadv1RZ5A==", + "dev": true + }, + "@commitlint/top-level": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-7.5.0.tgz", + "integrity": "sha512-oTu185GufTYHjTXPHu6k6HL7iuASOvDOtQizZWRSxj0VXuoki6e0HzvGZsRsycDTOn04Q9hVu+PhF83IUwRpeg==", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "@concordance/react": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", + "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", + "dev": true, + "requires": { + "arrify": "1.0.1" + } + }, + "@marionebl/sander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@marionebl/sander/-/sander-0.6.1.tgz", + "integrity": "sha1-GViWWHTyS8Ub5Ih1/rUNZC/EH3s=", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "mkdirp": "0.5.1", + "rimraf": "2.6.3" + } + }, + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "dev": true, + "requires": { + "@types/connect": "3.4.32", + "@types/node": "7.10.3" + } + }, + "@types/bson": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@types/bson/-/bson-1.0.11.tgz", + "integrity": "sha512-j+UcCWI+FsbI5/FQP/Kj2CXyplWAz39ktHFkXk84h7dNblKRSoNJs95PZFRd96NQGqsPEPgeclqnznWZr14ZDA==", + "requires": { + "@types/node": "7.10.3" + } + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "dev": true, + "requires": { + "@types/node": "7.10.3" + } + }, + "@types/express": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.1.tgz", + "integrity": "sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==", + "dev": true, + "requires": { + "@types/body-parser": "1.17.0", + "@types/express-serve-static-core": "4.16.1", + "@types/serve-static": "1.13.2" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.1.tgz", + "integrity": "sha512-QgbIMRU1EVRry5cIu1ORCQP4flSYqLM1lS5LYyGWfKnFT3E58f0gKto7BR13clBFVrVZ0G0rbLZ1hUpSkgQQOA==", + "dev": true, + "requires": { + "@types/node": "7.10.3", + "@types/range-parser": "1.2.3" + } + }, + "@types/js-yaml": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.9.1.tgz", + "integrity": "sha512-6ejot8/A47YhEGg8K/Gi+/Nu4vohMgxEG383aBaHKjrGjJUQE7umk+vg5I7TaPe4C99nUZrCDw+weK3M7gg/oA==", + "dev": true + }, + "@types/mime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", + "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==", + "dev": true + }, + "@types/mongodb": { + "version": "3.1.19", + "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.1.19.tgz", + "integrity": "sha512-H54hQEovAhyLrIZOhPNfGyCCDoTqKsjb8GQBy8nptJqfxrYCp5WVcPJf9v0kfTPR72xOhaz9+WcYxOXWwEg1Vg==", + "requires": { + "@types/bson": "1.0.11", + "@types/node": "7.10.3" + } + }, + "@types/mongodb-memory-server": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@types/mongodb-memory-server/-/mongodb-memory-server-1.8.0.tgz", + "integrity": "sha512-8qBF4ww/i+SMfULYe9kCEtPRR3zp5U6UB8ApwogRPK+2wy8RPECxgcLCDDzRBJ0f9aStmE5O5IBO4s8shaIUjA==", + "dev": true, + "requires": { + "@types/node": "7.10.3" + } + }, + "@types/node": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.3.tgz", + "integrity": "sha512-HeyK+csRk7Khhg9krpMGJeT9pLzjsmiJFHYRzYpPv/dQ5tPclQsbvceiX/HKynRt/9lMLorWUYTbBHC3hRI4sg==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "4.16.1", + "@types/mime": "2.0.1" + } + }, + "@types/swagger-schema-official": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@types/swagger-schema-official/-/swagger-schema-official-2.0.14.tgz", + "integrity": "sha512-xPlMRuQvmyFVm/aPXy6L92aOJ31xWpPex6MnHYaTFc+weYfs7fDjNvn9xhl6he2wWEpkkRGUD9S754alW+dwzw==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.21", + "negotiator": "0.6.1" + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "5.0.0" + } + }, + "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.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "dev": true + }, + "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": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "1.9.3" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "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.3" + } + }, + "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.1.0" + } + }, + "arr-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "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-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-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "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.3" + } + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "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 + }, + "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.11" + } + }, + "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-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "async-listener": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.5.8.tgz", + "integrity": "sha1-J6x4uyye0Z2wiHxR2PeFXmJTFvo=", + "requires": { + "shimmer": "1.0.0" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "auto-bind": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", + "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", + "dev": true + }, + "ava": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.20.0.tgz", + "integrity": "sha512-/Jw/TwBgptUzDGB4bmpOO9flrUoJBZOA6YpAB6Y1NpH/nDTrS6JEZ/KeeMcgBm3Kk6ytTWsvpYWHK83V1RBzQA==", + "dev": true, + "requires": { + "@ava/babel-preset-stage-4": "1.1.0", + "@ava/babel-preset-transform-test-files": "3.0.0", + "@ava/write-file-atomic": "2.2.0", + "@concordance/react": "1.0.0", + "ansi-escapes": "2.0.0", + "ansi-styles": "3.2.1", + "arr-flatten": "1.1.0", + "array-union": "1.0.2", + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "auto-bind": "1.2.1", + "ava-init": "0.2.1", + "babel-core": "6.26.3", + "bluebird": "3.5.3", + "caching-transform": "1.0.1", + "chalk": "1.1.3", + "chokidar": "1.7.0", + "clean-stack": "1.3.0", + "clean-yaml-object": "0.1.0", + "cli-cursor": "2.1.0", + "cli-spinners": "1.3.1", + "cli-truncate": "1.1.0", + "co-with-promise": "4.6.0", + "code-excerpt": "2.1.1", + "common-path-prefix": "1.0.0", + "concordance": "2.0.0", + "convert-source-map": "1.6.0", + "core-assert": "0.2.1", + "currently-unhandled": "0.4.1", + "debug": "2.6.9", + "dot-prop": "4.2.0", + "empower-core": "0.6.2", + "equal-length": "1.0.1", + "figures": "2.0.0", + "find-cache-dir": "0.1.1", + "fn-name": "2.0.1", + "get-port": "3.2.0", + "globby": "6.1.0", + "has-flag": "2.0.0", + "hullabaloo-config-manager": "1.1.1", + "ignore-by-default": "1.0.1", + "import-local": "0.1.1", + "indent-string": "3.2.0", + "is-ci": "1.2.1", + "is-generator-fn": "1.0.0", + "is-obj": "1.0.1", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "js-yaml": "3.12.1", + "last-line-stream": "1.0.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.debounce": "4.0.8", + "lodash.difference": "4.5.0", + "lodash.flatten": "4.4.0", + "loud-rejection": "1.6.0", + "make-dir": "1.3.0", + "matcher": "0.1.2", + "md5-hex": "2.0.0", + "meow": "3.7.0", + "ms": "1.0.0", + "multimatch": "2.1.0", + "observable-to-promise": "0.5.0", + "option-chain": "0.1.1", + "package-hash": "2.0.0", + "pkg-conf": "2.1.0", + "plur": "2.1.2", + "pretty-ms": "2.1.0", + "require-precompiled": "0.1.0", + "resolve-cwd": "1.0.0", + "slash": "1.0.0", + "source-map-support": "0.4.18", + "stack-utils": "1.0.2", + "strip-ansi": "3.0.1", + "strip-bom-buf": "1.0.0", + "supports-color": "3.2.3", + "time-require": "0.1.2", + "trim-off-newlines": "1.0.1", + "unique-temp-dir": "1.0.0", + "update-notifier": "2.5.0" + }, + "dependencies": { + "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.1.1", + "map-obj": "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "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 + } + } + }, + "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.1" + } + }, + "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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "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 + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "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.15", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "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.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.5.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "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.3.2" + } + }, + "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.1" + } + }, + "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.15", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "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.4" + } + }, + "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.1.0", + "normalize-package-data": "2.5.0", + "path-type": "1.1.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.1.2", + "read-pkg": "1.1.0" + } + }, + "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" + }, + "dependencies": { + "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.1" + } + } + } + }, + "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.1" + } + }, + "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" + } + }, + "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" + }, + "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 + } + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "ava-init": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", + "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", + "dev": true, + "requires": { + "arr-exclude": "1.0.0", + "execa": "0.7.0", + "has-yarn": "1.0.0", + "read-pkg-up": "2.0.0", + "write-pkg": "3.2.0" + }, + "dependencies": { + "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.15", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "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.3.2" + } + }, + "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.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "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.5.0", + "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.1.0", + "read-pkg": "2.0.0" + } + } + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "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": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "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 + } + } + }, + "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.1", + "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.6.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.11", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "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.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "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.26.0", + "babel-types": "6.26.0" + } + }, + "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.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "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.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "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.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "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.26.0", + "babel-types": "6.26.0" + } + }, + "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.26.0", + "babel-types": "6.26.0" + } + }, + "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.11" + } + }, + "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.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "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.26.0", + "babel-template": "6.26.0" + } + }, + "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.26.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.26.0" + } + }, + "babel-plugin-espower": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", + "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", + "dev": true, + "requires": { + "babel-generator": "6.26.1", + "babylon": "6.18.0", + "call-matcher": "1.1.0", + "core-js": "2.6.4", + "espower-location-detector": "1.0.0", + "espurify": "1.8.1", + "estraverse": "4.2.0" + } + }, + "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-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-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.13.0", + "babel-runtime": "6.26.0" + } + }, + "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.26.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.26.0", + "babel-types": "6.26.0" + } + }, + "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-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.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "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.26.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.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.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.26.0", + "babel-runtime": "6.26.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.13.0", + "babel-runtime": "6.26.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.26.0", + "babel-types": "6.26.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.6.4", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "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.3", + "babel-runtime": "6.26.0", + "core-js": "2.6.4", + "home-or-tmp": "2.0.0", + "lodash": "4.17.11", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "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.6.4", + "regenerator-runtime": "0.11.1" + } + }, + "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.11" + } + }, + "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.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.11" + } + }, + "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.11", + "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 + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "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.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "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.2" + } + }, + "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.2" + } + }, + "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.2" + } + }, + "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" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "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 + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "requires": { + "callsite": "1.0.0" + } + }, + "binary-extensions": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", + "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "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.6", + "safe-buffer": "5.1.2" + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "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.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "bson": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz", + "integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA==" + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "requires": { + "base64-js": "1.3.0", + "ieee754": "1.1.12" + } + }, + "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-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "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 + }, + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + } + } + }, + "call-matcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", + "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==", + "dev": true, + "requires": { + "core-js": "2.6.4", + "deep-equal": "1.0.1", + "espurify": "1.8.1", + "estraverse": "4.2.0" + } + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "callsites": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "map-obj": "2.0.0", + "quick-lru": "1.1.0" + } + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.8" + } + }, + "chalk": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.7", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "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.1", + "static-extend": "0.1.2" + }, + "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.6" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "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-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "dev": true, + "requires": { + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "co-with-promise": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", + "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", + "dev": true, + "requires": { + "pinkie-promise": "1.0.0" + } + }, + "code-excerpt": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", + "dev": true, + "requires": { + "convert-to-spaces": "1.0.2" + } + }, + "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.1" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "dev": true, + "requires": { + "array-ify": "1.0.0", + "dot-prop": "3.0.0" + } + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concordance": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-2.0.0.tgz", + "integrity": "sha512-jVxBZbAkFIZE5WHCAL7RpkX+XPl9ZnT8uYjZ9EXPFSquNDgq2iXWFsT2iptVoxvfSL+/5ej8CdHsmE7XYJjCPA==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "fast-diff": "1.2.0", + "function-name-support": "0.2.0", + "js-string-escape": "1.0.1", + "lodash.clonedeep": "4.5.0", + "lodash.flattendeep": "4.4.0", + "lodash.merge": "4.6.1", + "md5-hex": "2.0.0", + "moment": "2.24.0", + "semver": "5.6.0", + "well-known-symbols": "1.0.0" + } + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.15", + "make-dir": "1.3.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.4.2", + "xdg-basedir": "3.0.0" + }, + "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.1" + } + } + } + }, + "continuation-local-storage": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.1.6.tgz", + "integrity": "sha1-qKywIDCUYFjuZHifblQ6QWPeF8A=", + "requires": { + "async-listener": "0.5.8", + "emitter-listener": "1.1.2" + } + }, + "conventional-changelog-angular": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz", + "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", + "dev": true, + "requires": { + "compare-func": "1.3.2", + "q": "1.5.1" + } + }, + "conventional-commits-parser": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", + "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", + "dev": true, + "requires": { + "JSONStream": "1.3.5", + "is-text-path": "1.0.1", + "lodash": "4.17.11", + "meow": "4.0.1", + "split2": "2.2.0", + "through2": "2.0.5", + "trim-off-newlines": "1.0.1" + }, + "dependencies": { + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "4.2.0", + "decamelize-keys": "1.1.0", + "loud-rejection": "1.6.0", + "minimist": "1.2.0", + "minimist-options": "3.0.2", + "normalize-package-data": "2.5.0", + "read-pkg-up": "3.0.0", + "redent": "2.0.0", + "trim-newlines": "2.0.0" + } + } + } + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true, + "requires": { + "buf-compare": "1.0.1", + "is-error": "2.2.1" + } + }, + "core-js": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz", + "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A==", + "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": "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.12.1", + "parse-json": "4.0.0", + "require-from-string": "2.0.2" + } + }, + "coveralls": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz", + "integrity": "sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==", + "dev": true, + "requires": { + "js-yaml": "3.6.1", + "lcov-parse": "0.0.10", + "log-driver": "1.2.5", + "minimist": "1.2.0", + "request": "2.79.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "js-yaml": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", + "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + } + } + }, + "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.1" + } + }, + "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.1.5", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "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.2" + } + }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "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" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "1.2.0", + "map-obj": "1.0.1" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "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": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "decompress-tarbz2": "4.1.1", + "decompress-targz": "4.1.1", + "decompress-unzip": "4.0.1", + "graceful-fs": "4.1.15", + "make-dir": "1.3.0", + "pify": "2.3.0", + "strip-dirs": "2.1.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "5.2.0", + "is-stream": "1.1.0", + "tar-stream": "1.6.2" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "file-type": "6.2.0", + "is-stream": "1.1.0", + "seek-bzip": "1.0.5", + "unbzip2-stream": "1.3.3" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "file-type": "5.2.0", + "is-stream": "1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dev": true, + "requires": { + "file-type": "3.9.0", + "get-stream": "2.3.1", + "pify": "2.3.0", + "yauzl": "2.10.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 + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "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.4" + } + } + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "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 + }, + "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.2" + } + }, + "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.2" + } + }, + "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" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + } + } + }, + "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 + }, + "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.1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "requires": { + "shimmer": "1.2.1" + }, + "dependencies": { + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + } + } + }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "dev": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "2.6.4" + } + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "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" + } + }, + "engine.io": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", + "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", + "requires": { + "accepts": "1.3.5", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "3.1.0", + "engine.io-parser": "2.1.3", + "uws": "9.14.0", + "ws": "3.3.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "engine.io-client": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", + "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "3.1.0", + "engine.io-parser": "2.1.3", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "3.3.3", + "xmlhttprequest-ssl": "1.5.5", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "1.0.3" + } + }, + "equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "4.2.5" + } + }, + "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=" + }, + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "dev": true, + "requires": { + "is-url": "1.2.4", + "path-is-absolute": "1.0.1", + "source-map": "0.5.7", + "xtend": "4.0.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "espurify": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", + "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", + "dev": true, + "requires": { + "core-js": "2.6.4" + } + }, + "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 + }, + "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.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.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.1" + } + }, + "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.2.4" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "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" + } + } + } + }, + "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" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "faker": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/faker/-/faker-4.1.0.tgz", + "integrity": "sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=" + }, + "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-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "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 + }, + "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-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "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 + }, + "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.1.0", + "randomatic": "3.1.1", + "repeat-element": "1.1.3", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "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" + } + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, + "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.2" + } + }, + "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.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.21" + } + }, + "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" + } + }, + "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.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.12.1", + "node-pre-gyp": "0.10.3" + }, + "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.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.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.1.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.6.0", + "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.3.5" + } + }, + "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.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "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.4.0", + "wrappy": "1.0.2" + } + }, + "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.1" + } + }, + "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.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.1.2", + "yallist": "3.0.3" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "2.3.5" + } + }, + "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.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.24", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.4", + "nopt": "4.0.1", + "npm-packlist": "1.2.0", + "npmlog": "4.1.2", + "rc": "1.2.8", + "rimraf": "2.6.3", + "semver": "5.6.0", + "tar": "4.4.8" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.5" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "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.0.2" + } + }, + "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.2", + "os-tmpdir": "1.0.2" + } + }, + "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.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.6.0", + "ini": "1.3.5", + "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.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "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.6.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.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "1.1.1", + "fs-minipass": "1.2.5", + "minipass": "2.3.5", + "minizlib": "1.2.1", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "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.3", + "bundled": true, + "dev": true + } + } + }, + "function-name-support": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", + "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", + "dev": true + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "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 + }, + "getos": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.1.1.tgz", + "integrity": "sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg==", + "dev": true, + "requires": { + "async": "2.6.1" + } + }, + "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" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "git-raw-commits": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", + "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", + "dev": true, + "requires": { + "dargs": "4.1.0", + "lodash.template": "4.4.0", + "meow": "4.0.1", + "split2": "2.2.0", + "through2": "2.0.5" + }, + "dependencies": { + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "4.2.0", + "decamelize-keys": "1.1.0", + "loud-rejection": "1.6.0", + "minimist": "1.2.0", + "minimist-options": "3.0.2", + "normalize-package-data": "2.5.0", + "read-pkg-up": "3.0.0", + "redent": "2.0.0", + "trim-newlines": "2.0.0" + } + } + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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.1" + } + }, + "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.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "1.3.5" + } + }, + "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": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.3", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "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.4" + } + } + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "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 + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.19.0", + "is-my-json-valid": "2.19.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "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.4" + } + }, + "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-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.1.1" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + } + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "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.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "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": { + "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.2.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.6" + } + } + } + }, + "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.6" + } + } + } + }, + "has-yarn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", + "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", + "dev": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "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.2", + "os-tmpdir": "1.0.2" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.16.1" + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "4.2.1", + "debug": "3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "hullabaloo-config-manager": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", + "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "es6-error": "4.1.1", + "graceful-fs": "4.1.15", + "indent-string": "3.2.0", + "json5": "0.5.1", + "lodash.clonedeep": "4.5.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.isequal": "4.5.0", + "lodash.merge": "4.6.1", + "md5-hex": "2.0.0", + "package-hash": "2.0.0", + "pkg-dir": "2.0.0", + "resolve-from": "3.0.0", + "safe-buffer": "5.1.2" + }, + "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.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" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "husky": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "requires": { + "cosmiconfig": "5.0.7", + "execa": "1.0.0", + "find-up": "3.0.0", + "get-stdin": "6.0.0", + "is-ci": "2.0.0", + "pkg-dir": "3.0.0", + "please-upgrade-node": "3.1.1", + "read-pkg": "4.0.1", + "run-node": "1.0.0", + "slash": "2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cosmiconfig": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", + "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", + "dev": true, + "requires": { + "import-fresh": "2.0.0", + "is-directory": "0.3.1", + "js-yaml": "3.12.1", + "parse-json": "4.0.0" + } + }, + "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.5", + "path-key": "2.0.1", + "semver": "5.6.0", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "3.0.0" + } + }, + "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": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "3.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "2.0.0", + "resolve-from": "3.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "3.0.0", + "path-exists": "3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "2.1.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "3.0.0" + } + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "2.5.0", + "parse-json": "4.0.0", + "pify": "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 + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "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 + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "dev": true, + "requires": { + "parent-module": "1.0.0", + "resolve-from": "4.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "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.4.0" + } + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "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.2.2" + } + }, + "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.13.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==" + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "1.6.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.2.2" + } + }, + "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.1.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-error": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", + "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", + "dev": true + }, + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "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.1" + } + }, + "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-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": "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" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz", + "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==", + "dev": true, + "requires": { + "generate-function": "2.3.1", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "dev": true + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "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.2.2" + } + }, + "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-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + } + }, + "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.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "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-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=" + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "1.9.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-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-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "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" + } + }, + "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 + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true + }, + "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.12.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", + "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "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": { + "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=", + "requires": { + "jsonify": "0.0.0" + } + }, + "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 + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "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" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "last-line-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", + "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", + "dev": true, + "requires": { + "through2": "2.0.5" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "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 + }, + "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.15", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.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" + } + }, + "lockfile": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", + "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", + "dev": true, + "requires": { + "signal-exit": "3.0.2" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "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.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.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", + "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.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "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.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.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.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, + "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.1.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" + } + }, + "log-driver": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", + "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "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.2" + } + }, + "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 + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "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" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==" + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "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.1" + } + }, + "matcher": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-0.1.2.tgz", + "integrity": "sha1-7yDL3mTCTFDMYa9bg+4LG4/wAQE=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "md5-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-4.0.0.tgz", + "integrity": "sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg==", + "dev": true + }, + "md5-hex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", + "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "4.2.0", + "decamelize-keys": "1.1.0", + "loud-rejection": "1.6.0", + "minimist-options": "3.0.2", + "normalize-package-data": "2.5.0", + "read-pkg-up": "3.0.0", + "redent": "2.0.0", + "trim-newlines": "2.0.0", + "yargs-parser": "10.1.0" + } + }, + "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.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "requires": { + "mime-db": "1.37.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 + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "is-plain-obj": "1.1.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" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "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=" + } + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "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" + } + }, + "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.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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" + } + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "mongodb": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.10.tgz", + "integrity": "sha512-Uml42GeFxhTGQVml1XQ4cD0o/rp7J2ROy0fdYUcVitoE7vFqEhKH4TYVqRDpQr/bXtCJVxJdNQC1ntRxNREkPQ==", + "requires": { + "mongodb-core": "3.1.9", + "safe-buffer": "5.1.2" + } + }, + "mongodb-core": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.9.tgz", + "integrity": "sha512-MJpciDABXMchrZphh3vMcqu8hkNf/Mi+Gk6btOimVg1XMxLXh87j6FAvRm+KmwD1A9fpu3qRQYcbQe4egj23og==", + "requires": { + "bson": "1.1.0", + "require_optional": "1.0.1", + "safe-buffer": "5.1.2", + "saslprep": "1.0.2" + } + }, + "mongodb-memory-server": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-3.0.0.tgz", + "integrity": "sha512-c6enWgoAqlYv8CbFuipDILoFAlALHPqmQxK37mEfayxT0zzESYGggQUKKD8u8p74ApjAyqXUpxSI0Ffb49sv7g==", + "dev": true, + "requires": { + "@babel/runtime": "7.3.1", + "debug": "4.1.1", + "decompress": "4.2.0", + "dedent": "0.7.0", + "find-cache-dir": "2.0.0", + "get-port": "4.1.0", + "getos": "3.1.1", + "https-proxy-agent": "2.2.1", + "lockfile": "1.0.4", + "md5-file": "4.0.0", + "mkdirp": "0.5.1", + "tmp": "0.0.33", + "uuid": "3.3.2" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "2.1.1" + } + }, + "find-cache-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.3.0", + "pkg-dir": "3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "3.0.0" + } + }, + "get-port": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.1.0.tgz", + "integrity": "sha512-4/fqAYrzrzOiqDrdeZRKXGdTGgbkfTEumGlNQPeP6Jy8w0PzN9mzeNQ3XgHaTNie8pQ3hOUkrwlZt2Fzk5H9mA==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "3.0.0", + "path-exists": "3.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "2.1.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "3.0.0" + } + } + } + }, + "ms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-1.0.0.tgz", + "integrity": "sha1-Wa3NIu3FQ/e1OBhi0xOHsfS8lHM=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "dev": true, + "optional": 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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "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 + }, + "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 + }, + "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 + } + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", + "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "2.7.1", + "resolve": "1.10.0", + "semver": "5.6.0", + "validate-npm-package-license": "3.0.4" + } + }, + "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.1.0" + } + }, + "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.1" + } + }, + "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 + }, + "nyc": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-10.3.2.tgz", + "integrity": "sha1-8n9NkfKp2zbCT1dP9cbv/wIz3kY=", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.0", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "1.1.2", + "foreground-child": "1.5.6", + "glob": "7.1.1", + "istanbul-lib-coverage": "1.1.0", + "istanbul-lib-hook": "1.0.6", + "istanbul-lib-instrument": "1.7.1", + "istanbul-lib-report": "1.1.0", + "istanbul-lib-source-maps": "1.2.0", + "istanbul-reports": "1.1.0", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.3", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.1", + "signal-exit": "3.0.2", + "spawn-wrap": "1.2.4", + "test-exclude": "4.1.0", + "yargs": "7.1.0", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.0", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "1.0.3" + } + }, + "arr-flatten": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "bundled": true, + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.1" + } + }, + "babel-generator": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.24.1", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } + }, + "babel-runtime": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } + }, + "babel-template": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.24.1", + "babel-types": "6.24.1", + "babylon": "6.17.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.24.1", + "babylon": "6.17.0", + "debug": "2.6.6", + "globals": "9.17.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.17.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.4.1", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.0.2", + "which": "1.2.14" + } + }, + "debug": { + "version": "2.6.6", + "bundled": true, + "dev": true, + "requires": { + "ms": "0.7.3" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.6", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.1", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.17.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.8", + "bundled": true, + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.22" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.0" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.7.1", + "bundled": true, + "dev": true, + "requires": { + "babel-generator": "6.24.1", + "babel-template": "6.24.1", + "babel-traverse": "6.24.1", + "babel-types": "6.24.1", + "babylon": "6.17.0", + "istanbul-lib-coverage": "1.1.0", + "semver": "5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "debug": "2.6.6", + "istanbul-lib-coverage": "1.1.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "source-map": "0.5.6" + } + }, + "istanbul-reports": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "4.0.8" + } + }, + "js-tokens": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true, + "dev": true + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "js-tokens": "3.0.1" + } + }, + "lru-cache": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "merge-source-map": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.0", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "0.7.3", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.3.8", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.4.2", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.2", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2" + } + }, + "preserve": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-number": "2.1.0", + "kind-of": "3.2.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.3.8", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "regenerator-runtime": { + "version": "0.10.5", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.5.6", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.1", + "signal-exit": "2.1.2", + "which": "1.2.14" + }, + "dependencies": { + "signal-exit": { + "version": "2.1.2", + "bundled": true, + "dev": true + } + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "uglify-js": { + "version": "2.8.22", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.2.14", + "bundled": true, + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "7.1.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "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", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true, + "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=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "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.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "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.6" + } + } + } + }, + "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.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "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.5", + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "observable-to-promise": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", + "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", + "dev": true, + "requires": { + "is-observable": "0.2.0", + "symbol-observable": "1.2.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + } + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "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=", + "requires": { + "wrappy": "1.0.2" + } + }, + "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.2.0" + } + }, + "option-chain": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-0.1.1.tgz", + "integrity": "sha1-6bgR4AbxwPVIAvKClb/Ilw+Nz70=", + "dev": true, + "requires": { + "object-assign": "4.1.1" + } + }, + "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-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 + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "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.3.0" + } + }, + "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 + }, + "package-hash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", + "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "lodash.flattendeep": "4.4.0", + "md5-hex": "2.0.0", + "release-zalgo": "1.0.0" + } + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.6.0" + } + }, + "parent-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", + "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "dev": true, + "requires": { + "callsites": "3.0.0" + } + }, + "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.3", + "is-extglob": "1.0.0", + "is-glob": "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.2", + "json-parse-better-errors": "1.0.2" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "requires": { + "better-assert": "1.0.2" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "requires": { + "better-assert": "1.0.2" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "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=" + }, + "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.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "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" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", + "dev": true + }, + "pinkie-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", + "dev": true, + "requires": { + "pinkie": "1.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.1.0", + "load-json-file": "4.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.1.2" + }, + "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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "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.1" + } + }, + "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.4" + } + } + } + }, + "please-upgrade-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", + "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", + "dev": true, + "requires": { + "semver-compare": "1.0.0" + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "1.4.0" + } + }, + "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 + }, + "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.16.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", + "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==", + "dev": true + }, + "pretty-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", + "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "dev": true, + "requires": { + "is-finite": "1.0.2", + "parse-ms": "1.0.1", + "plur": "1.0.0" + }, + "dependencies": { + "plur": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", + "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", + "dev": true + } + } + }, + "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-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 + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.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.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.4" + }, + "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 + }, + "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 + } + } + }, + "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.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.5.0", + "path-type": "3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "3.0.0" + } + }, + "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.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "micromatch": "3.1.10", + "readable-stream": "2.3.6" + }, + "dependencies": { + "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 + }, + "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 + }, + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "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.1" + } + } + } + }, + "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.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.6" + } + }, + "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.1" + } + }, + "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.2.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.6" + } + } + } + }, + "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.2.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.6" + } + } + } + }, + "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.1.0" + } + }, + "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 + } + } + }, + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.2" + } + }, + "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.1" + } + } + } + }, + "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.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.1" + } + } + } + }, + "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.2" + } + }, + "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.2" + } + }, + "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" + } + }, + "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.2.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.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + }, + "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.2", + "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.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "3.2.0", + "strip-indent": "2.0.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 + }, + "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" + } + }, + "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.4.0", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "1.2.8", + "safe-buffer": "5.1.2" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.8" + } + }, + "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" + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "4.1.1" + } + }, + "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 + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "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=" + }, + "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.2" + } + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.8.0", + "caseless": "0.11.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.21", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.6", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3", + "uuid": "3.3.2" + } + }, + "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-precompiled": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", + "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", + "dev": true + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "2.0.0", + "semver": "5.6.0" + }, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + } + } + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + }, + "resolve-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-1.0.0.tgz", + "integrity": "sha1-Tq7qQe0EDRcCRX32SkKysH0kb58=", + "dev": true, + "requires": { + "resolve-from": "2.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-global": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-0.1.0.tgz", + "integrity": "sha1-j7As/Vt9sgEY6IYxHxWvlb0V+9k=", + "dev": true, + "requires": { + "global-dirs": "0.1.1" + } + }, + "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.1", + "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 + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "7.1.3" + } + }, + "run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true + }, + "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==" + }, + "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.15" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saslprep": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.2.tgz", + "integrity": "sha512-4cDsYuAjXssUSjxHKRe4DTZC0agDwsCqcMqtJAQPzC74nJ7LfAJflAtC1Zed5hMzEQKj82d3tuzqdGNRsLJ4Gw==", + "optional": true, + "requires": { + "sparse-bitfield": "3.0.3" + } + }, + "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.1" + } + } + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.6.0" + } + }, + "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.4", + "split-string": "3.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.1" + } + } + } + }, + "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 + }, + "shimmer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.0.0.tgz", + "integrity": "sha1-ScLXHGeDYLgCvhiyeDgtHLuAXDk=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "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" + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "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.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.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.6" + } + }, + "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.1" + } + } + } + }, + "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.1", + "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.2" + } + }, + "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.2" + } + }, + "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.2" + } + }, + "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" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + } + } + }, + "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.2" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "socket.io": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.3.tgz", + "integrity": "sha1-Q1nwaiSTOua9CHeYr3jGgOrjReM=", + "requires": { + "debug": "2.6.9", + "engine.io": "3.1.5", + "object-assign": "4.1.1", + "socket.io-adapter": "1.1.1", + "socket.io-client": "2.0.4", + "socket.io-parser": "3.1.3" + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" + }, + "socket.io-client": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", + "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.6.9", + "engine.io-client": "3.1.6", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "3.1.3", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", + "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", + "requires": { + "component-emitter": "1.2.1", + "debug": "3.1.0", + "has-binary2": "1.0.3", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "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.2", + "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==", + "requires": { + "source-map": "0.5.7" + } + }, + "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 + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "1.5.0" + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.3" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "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.2.0", + "spdx-license-ids": "3.0.3" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "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.2" + } + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "2.0.5" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "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.6" + } + } + } + }, + "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.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.2" + } + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "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.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "4.0.1" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "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=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "3.0.0" + } + }, + "swagger-schema-official": { + "version": "2.0.0-bab6bed", + "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", + "integrity": "sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=", + "dev": true + }, + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "1.2.2", + "buffer-alloc": "1.2.0", + "end-of-stream": "1.4.1", + "fs-constants": "1.0.0", + "readable-stream": "2.3.6", + "to-buffer": "1.1.1", + "xtend": "4.0.1" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + } + }, + "time-require": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", + "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", + "dev": true, + "requires": { + "chalk": "0.4.0", + "date-time": "0.1.1", + "pretty-ms": "0.2.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "parse-ms": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", + "dev": true + }, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true, + "requires": { + "parse-ms": "0.1.2" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "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" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "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.2.2" + } + }, + "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" + }, + "dependencies": { + "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.2.2" + } + } + } + }, + "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" + } + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, + "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 + }, + "ts-node": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz", + "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=", + "requires": { + "arrify": "1.0.1", + "chalk": "2.3.1", + "diff": "3.5.0", + "make-error": "1.3.5", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18", + "tsconfig": "6.0.0", + "v8flags": "3.1.2", + "yn": "2.0.0" + } + }, + "tsconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", + "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=", + "requires": { + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tslint": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.12.1.tgz", + "integrity": "sha512-sfodBHOucFg6egff8d1BvuofoOQ/nOeYNfbp7LDlKBcLNrL3lmS5zoiDGyOMdT7YsEXAwWpTdAHwOGOc8eRZAw==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.3.1", + "commander": "2.19.0", + "diff": "3.5.0", + "glob": "7.1.3", + "js-yaml": "3.12.1", + "minimatch": "3.0.4", + "resolve": "1.10.0", + "semver": "5.6.0", + "tslib": "1.9.3", + "tsutils": "2.29.0" + } + }, + "tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "dev": true + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "1.9.3" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "dev": true + }, + "tyranid": { + "version": "0.5.66", + "resolved": "https://registry.npmjs.org/tyranid/-/tyranid-0.5.66.tgz", + "integrity": "sha512-PIPvDgRz39Co2M6Tl5otBQ5aiIEtGz6UgiupXbhIrgr8UtQSQ/+nA5sOKD3u87tfBddeVMRIQUBj3uEyGWpkYA==", + "requires": { + "chalk": "2.3.1", + "continuation-local-storage": "3.1.6", + "faker": "4.1.0", + "glob": "7.0.5", + "json-stable-stringify": "1.0.1", + "lodash": "3.10.1", + "moment": "2.20.1", + "node-fetch": "1.7.1", + "on-finished": "2.3.0", + "socket.io": "2.0.3", + "ts-node": "3.3.0", + "uglify-js": "2.8.16", + "uuid": "3.3.2" + }, + "dependencies": { + "glob": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "integrity": "sha1-tCAqaQmbu00pKnwblbZoK2fr3JU=", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + }, + "moment": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + } + } + }, + "tyranid-openapi": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/tyranid-openapi/-/tyranid-openapi-0.5.0.tgz", + "integrity": "sha1-MnlsJzqvjhH8Ds4Rx2xndm47Fxk=", + "dev": true, + "requires": { + "@types/js-yaml": "3.9.1", + "@types/swagger-schema-official": "2.0.14", + "ajv": "5.5.2", + "js-yaml": "3.12.1", + "swagger-schema-official": "2.0.0-bab6bed" + } + }, + "tyranid-tdgen": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/tyranid-tdgen/-/tyranid-tdgen-0.5.17.tgz", + "integrity": "sha512-EmDRlUOGbAVgA14cgSGIwWHpXkkXN+xfwNMtVf60gTLOlPyiKyL93K/oLC/vjUGH7XfL+xtC4PXIDneE/QWtvw==", + "dev": true, + "requires": { + "commander": "2.9.0", + "lodash": "4.17.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "lodash": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.2.tgz", + "integrity": "sha1-NKMFW6vgTOQkZ7YH1wAHLH/2v0I=", + "dev": true + } + } + }, + "uglify-js": { + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.16.tgz", + "integrity": "sha1-0oYZC27vxv1l6w7KxlUeCw6IOaQ=", + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "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=", + "optional": true + }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", + "dev": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "unbzip2-stream": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", + "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "dev": true, + "requires": { + "buffer": "5.2.1", + "through": "2.3.8" + } + }, + "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.1" + } + }, + "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.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unique-temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", + "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", + "dev": true, + "requires": { + "mkdirp": "0.5.1", + "os-tmpdir": "1.0.2", + "uid2": "0.0.3" + } + }, + "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.1" + }, + "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.6", + "has-values": "0.1.4", + "isobject": "2.1.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 + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.1", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.2.1", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "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.4" + } + }, + "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-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "uws": { + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", + "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", + "optional": true + }, + "v8flags": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz", + "integrity": "sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw==", + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "3.1.0", + "spdx-expression-parse": "3.0.0" + } + }, + "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.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "well-known-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", + "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", + "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "dev": true, + "requires": { + "detect-indent": "5.0.0", + "graceful-fs": "4.1.15", + "make-dir": "1.3.0", + "pify": "3.0.0", + "sort-keys": "2.0.0", + "write-file-atomic": "2.4.2" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + } + } + }, + "write-pkg": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", + "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", + "dev": true, + "requires": { + "sort-keys": "2.0.0", + "write-json-file": "2.3.0" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.2", + "ultron": "1.1.1" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "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": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + } + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + }, + "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.13", + "fd-slicer": "1.1.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=" + } + } +} diff --git a/package.json b/package.json index 09d728c..e064c4c 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,12 @@ { "name": "tyranid-obfuscate", - "version": "0.0.0", + "version": "0.0.1", "description": "tyranid-obfuscate", - "license": "MIT", - "repository": "", - "author": "", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git@github.com:CrossLead/tyranid-obfuscate.git" + }, "keywords": [ "" ], @@ -25,20 +27,31 @@ "watch": "npm run build -- --watch", "watch:test": "npm run test -- --watch" }, - "dependencies": {}, + "dependencies": { + "@types/mongodb": "^3.1.19", + "mongodb": "^3.1.10", + "tyranid": "^0.5.66" + }, "devDependencies": { "@commitlint/cli": "^7.5.0", "@commitlint/config-conventional": "^7.5.0", - "@types/node": "^7.0.0", + "@types/express": "^4.16.1", + "@types/mongodb-memory-server": "^1.8.0", + "@types/node": "^7.10.3", "ava": "^0.20.0", + "chai": "^4.2.0", "coveralls": "^2.0.0", "husky": "^1.3.1", + "mocha": "^5.2.0", + "mongodb-memory-server": "^3.0.0", "nyc": "^10.0.0", "prettier": "^1.5.2", "rimraf": "^2.0.0", "tslint": "^5.0.0", "tslint-config-prettier": "^1.1.0", - "typescript": "^3.0.0" + "typescript": "^2.9.2", + "tyranid-openapi": "^0.5.0", + "tyranid-tdgen": "^0.5.17" }, "engines": { "node": ">=6.0.0" @@ -51,6 +64,6 @@ "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" - } + } } } diff --git a/src/encryptor.ts b/src/encryptor.ts new file mode 100644 index 0000000..bd18d97 --- /dev/null +++ b/src/encryptor.ts @@ -0,0 +1,80 @@ +import * as crypto from 'crypto'; + +export interface Encryptor { + encryptString(input: string): string; + decrypt(encdata: string): string; +} +/** + * For now defaulting to one method of encryption + * Later add support to extend encryption modes + * + * Also allow decryption auth. + */ +export class AesUtil implements Encryptor { + private masterKey: string; + private salt: string | Buffer; + private digest: string; + private algo: string; + + constructor(masterKey: string, salt?: string, digest?: string) { + this.masterKey = masterKey; + this.salt = salt ? salt : crypto.randomBytes(64); + this.digest = digest ? digest : 'sha512'; + this.algo = 'aes-256-ctr'; + } + + public encryptString(input: string ): string { + // random initialization vector + //const iv = crypto.randomBytes(16); + + // derive encryption key: 32 byte key length + // in assumption the masterkey is a cryptographic and NOT a password there is no need for + // a large number of iterations. It may can replaced by HKDF + // the value of 2145 is randomly chosen + // const key: Buffer = crypto.pbkdf2Sync(this.masterKey, this.salt, 2145, 32, this.digest); + + // AES 256 GCM Mode + // const cipher: crypto.Cipher = crypto.createCipheriv('aes-256-gcm', key, iv); + + // For now don't waut to deal with auth tags + const cipher: crypto.Cipher = crypto.createCipher(this.algo, this.masterKey); + + // encrypt the given text + // const encryptedText = Buffer.concat([cipher.update(input, 'utf8'), cipher.final()]); + + // extract the auth tag + // TODO: Save this with metadata, provide option to validate; + //const tag = cipher.getAuthTag(); + var encryptedText = cipher.update(input, 'utf8', 'hex') + encryptedText += cipher.final('hex'); + return encryptedText; + } + + public decrypt (encdata: string): string{ + // base64 decoding + // const bData = Buffer.from(encdata, 'base64'); + + // convert data to buffers + // const salt = bData.slice(0, 64); + // const iv = bData.slice(64, 80); + // const tag = bData.slice(80, 96); + // const text = bData.slice(96); + + // derive key using; 32 byte key length + // const key = crypto.pbkdf2Sync(this.masterKey, salt, 2145, 32, 'sha512'); + + // AES 256 GCM Mode + // const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv); + // decipher.setAuthTag(tag); + + // encrypt the given text + // const decrypted = decipher.update(text, 'binary', 'utf8') + decipher.final('utf8'); + + + /** No Auth Tag Solution, not as secure */ + const decipher = crypto.createDecipher(this.algo, this.masterKey); + let dec = decipher.update(encdata, 'hex', 'utf8'); + dec += decipher.final('utf8'); + return dec; +} +} \ No newline at end of file diff --git a/src/greeter.ts b/src/greeter.ts deleted file mode 100644 index b384fef..0000000 --- a/src/greeter.ts +++ /dev/null @@ -1,11 +0,0 @@ -export class Greeter { - private greeting: string; - - constructor(message: string) { - this.greeting = message; - } - - public greet() { - return "Bonjour, " + this.greeting + "!"; - } -} diff --git a/src/index.ts b/src/index.ts index a99cfb6..99c769e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1,2 @@ -export * from "./greeter"; +export { Encryptor } from './encryptor'; // TODO: Allow consumer to provide designated encryption module +export * from './obfuscator'; \ No newline at end of file diff --git a/src/obfuscator.ts b/src/obfuscator.ts new file mode 100644 index 0000000..9d9d961 --- /dev/null +++ b/src/obfuscator.ts @@ -0,0 +1,259 @@ +/// + +import { Tyr } from "tyranid"; +import { Cursor, Collection, FilterQuery, BulkWriteResult, UpdateWriteOpResult, UnorderedBulkOperation } from "mongodb"; +import { ObjectID } from 'bson'; +import { AesUtil } from './encryptor'; + +const defaultBatchSize = 500; +const idOnlyProjection = { _id: 1 }; +interface IdRecord { + _id: ObjectID +} +interface FieldObject { + [name: string]: string; +} + +/** + * TODO: Really large Document support with GridFS API + */ +Tyr.obfuscate = async (opts: Tyr.ObfuscateBatchOpts): Promise => { + const { collection, query, replacementValues, replacementValCollection, metadataSuffix } = opts; + + const sourceCollectionName: string = collection.def.dbName; + const mongoSrcCollection: Collection = Tyr.db.collection(sourceCollectionName); + + // Complicated extending Tyr.Collection to have configurable name + // Going with convention for now + const metaCollecName = `${sourceCollectionName}${metadataSuffix}`; + const metaDataCollection: Collection = await getMetaDataCollection(metaCollecName); + + const obfsctFields = obfuscateableFieldsFromCollection(collection); + + return createBatchMetaData(obfsctFields, mongoSrcCollection, metaDataCollection, query, replacementValues, replacementValCollection); +}; + +//TBD: Maybe part out to an internal Tyr collection to collection migration fn +//TBD: Error handling +Tyr.copyObfuscateableData = async (query: Tyr.MongoQuery, sourceCollection: Tyr.CollectionInstance, targetCollection: Tyr.CollectionInstance ) => { + Tyr.info(`Migrating obfuscateable fields from ${sourceCollection.name} to ${targetCollection.name} `); + const projection = projectionForObfuscateableFields(sourceCollection); + + const options = { + cursor: { batchSize: defaultBatchSize }, + allowDiskUse: true + }; + + const migrationSteps = [ + { $match: query }, + { $project: projection}, // Limit to just obfuscateable fields + { $out: targetCollection.def.dbName } // Will overwrite what is currently in collection + ] + + const emptyCursor = await sourceCollection.db.aggregate(migrationSteps, options); + + // $out does not take effect until the empty cursor is acted upon. + // .toArray() should not return any data + // 'Works as designed' https://jira.mongodb.org/browse/NODE-1398 + await emptyCursor.toArray(); + Tyr.info(`Completed migration of obfuscateable fields from ${sourceCollection.name} to ${targetCollection.name}`); +} + +// Probably not as efficient as mapreduce +// TODO: recovery of mid encryption failure +// TODO: trace logging +Tyr.encryptCollection = async (collection: Tyr.CollectionInstance, masterKey: string) => { + await encryptDecryptData(collection, masterKey, {}, false); +} + +const encryptDecryptData = async (collection: Tyr.CollectionInstance, masterKey: string, query: Tyr.MongoQuery, decrypt?: boolean) => { + + const aesUtil = new AesUtil(masterKey); + const cursor = await collection.db.find(query); + let bulkOp = collection.db.initializeUnorderedBulkOp(); + + const count = await cursor.count(); + let doc; + for (let i = 1; i <= count; i++) { + doc = await cursor.next(); + + bulkOp.find({ _id: doc._id }).update({ $set: encryptDocument(doc, aesUtil, decrypt) }); + + if ((i % defaultBatchSize === 0) || i === count) { + Tyr.info('Flushing encrypted batch'); + const result: BulkWriteResult = await bulkOp.execute(); + + if (!result.ok) { + throw new Error(`Encryption of collection failed`) + } + bulkOp = collection.db.initializeUnorderedBulkOp(); + } + } +} +// TODO: Need to think of wording +const encryptDocument = (doc: any, aesUtil: AesUtil, decrypt?: boolean): object => { + //TODO: figure out better approach to typing obj + let encObj: any = {}; + + Object.getOwnPropertyNames(doc).forEach(key => { + if (key !== "_id") { + //Encryption util is simplistic right now + //should replace with established library + const val = doc[key]; + //simple attempt at supporting datatypes other than string + encObj[key] = decrypt ? aesUtil.decrypt(doc[key]) : aesUtil.encryptString((typeof val === 'string') ? val : JSON.stringify(val)); + } + }); + + return encObj; +} + +Tyr.restoreObfuscatedData = async (targetCollection: Tyr.CollectionInstance, sourceCollection: Tyr.CollectionInstance, query ?: Tyr.MongoQuery, decryptionKey ?: string) => { + //decrypt collection + if (decryptionKey) { + // need better method naming + await encryptDecryptData(sourceCollection, decryptionKey, query, true); + } + //migrate data back to targetCollection + await migrateData(targetCollection.db, sourceCollection.db, query); + +} + +const migrateData = async (targetCollection: Collection, sourceCollection: Collection, query?: Tyr.MongoQuery) => { + const q = query ? query : {}; + const cursor = await sourceCollection.find(q); + let bulkOp: UnorderedBulkOperation = targetCollection.initializeUnorderedBulkOp(); + + const count = await cursor.count(); + + let doc; + for (let i = 1; i <= count; i++) { + doc = await cursor.next(); + console.log(await (await targetCollection.find({ _id: doc._id })).toArray()); + + // console.log(`DOC: ${JSON.stringify(doc)}`); + bulkOp.find({ _id: doc._id }).update({ $set: doc }); + + if ((i % defaultBatchSize === 0) || i === count) { + Tyr.info('Flushing bulk update batch'); + const result: BulkWriteResult = await bulkOp.execute(); + + if (!result.ok) { + throw new Error(`Failed migration of collection ${sourceCollection.collectionName} to ${targetCollection.collectionName} \n ${JSON.stringify(result.getWriteErrors())}`); + } + bulkOp = targetCollection.initializeUnorderedBulkOp(); + } + } +} + +// MapReduce attempt, not sure how to specify dynamic fields. +// Tyr.encryptCollection = async (collection: Tyr.CollectionInstance, masterKey: string) => { +// const mapFunction = () => { +// let key = this._id; +// let vals = {}; + +// Object.getOwnPropertyNames(collection.def.fields).forEach(key => { +// vals[key] = +// //use key and value here +// }); + +// emit(key, vals ); +// }; +// const reduceFunction = () => { + +// } +// collection.db.mapReduce(mapFunction, reduceFunction); +// } + +const projectionForObfuscateableFields = (collection: Tyr.CollectionInstance): object => { + const obfsctFields = obfuscateableFieldsFromCollection(collection); + let projection: any = {}; + + obfsctFields.forEach((f: string) => { + projection[f] = 1; + }) + return projection; +} + +const obfuscateableFieldsFromCollection = (collection: Tyr.CollectionInstance): Array => { + const names: Array = []; + for (const fieldName in collection.def.fields) { + if (collection.def.fields[fieldName].def.obfuscateable) { + names.push(fieldName); + } + } + return names; +} + +const getMetaDataCollection = async (name: string): Promise => { + const existingCollection = await Tyr.db.collection(name); + if (!existingCollection) { + return createMetaDataCollection(name); + } + return existingCollection; +} + +//TODO: probably remove, up to consumer to provide collection +const createMetaDataCollection = async (name: string): Promise => { + return await Tyr.db.createCollection(name, { autoIndexId: true }); +} + +const createBatchMetaData = async (fields: Array, srcCollection: Collection, + targetCollection: Collection, query: FilterQuery, replaceVals: object, replaceValCollection: Collection): Promise => { + + const timeStamp: number = new Date().getTime(); + const batchTag: ObjectID = new ObjectID(); + const docIdsCursor: Cursor = await srcCollection.find(query).project(idOnlyProjection); + + const count = await docIdsCursor.count(); + Tyr.info(`Obfuscating ${count} documents from ${srcCollection.namespace} tag ${batchTag}`); + + let bulkMetaData = targetCollection.initializeUnorderedBulkOp(); + + let doc: IdRecord; + let metaDataRecord: Tyr.ObfuscateMetaDataSchema; + let batchRecIds = []; + + for (let i = 1; i <= count; i++) { + doc = await docIdsCursor.next(); + + metaDataRecord = { + timestamp: timeStamp, recordId: doc._id, fields, batchTag + }; + batchRecIds.push(doc._id); + bulkMetaData.insert(metaDataRecord); + + if ((i % defaultBatchSize === 0) || i === count) { + try { + const metaDataResult: BulkWriteResult = await bulkMetaData.execute(); + } catch (error) { + console.log(`MetaData Error: ${JSON.stringify(error)}`); + } + + if (replaceValCollection) { + //Move data from given collection to be mask + await migrateData(srcCollection, replaceValCollection, { _id: { $in: batchRecIds } }); + } + + bulkMetaData = targetCollection.initializeUnorderedBulkOp(); + } + } + + if (replaceVals) { + try { + //Static replacement values can be applied at once + const maskResult: UpdateWriteOpResult = await srcCollection.updateMany(query, { $set: replaceVals }); + } catch (error) { + console.log(`Masking Error: ${JSON.stringify(error)}`); + } + } + + Tyr.info(`Finished obfuscating collection ${srcCollection.namespace} tag ${batchTag}`); + + // TODO: Get count from batch results + return { batchTag: batchTag, count: count }; +} + +export const validate = () => { + //TDB: Validate obfuscate config +}; \ No newline at end of file diff --git a/src/typings/tyranid-extensions.d.ts b/src/typings/tyranid-extensions.d.ts new file mode 100644 index 0000000..bf5af62 --- /dev/null +++ b/src/typings/tyranid-extensions.d.ts @@ -0,0 +1,147 @@ +import { Tyr } from 'tyranid'; +import { ObjectId, Collection } from 'mongodb'; + +/** + * Extend the Tyranid FieldInstance definition to include: + * flag for which fields to obfuscate, and function on + * collection to call obfuscation + */ + +declare module 'tyranid' { + namespace Tyr { + /** + * Relocates the data to given location + * + * Returns cursor to affected documents + * + * @param opts ObfuscateBatchConfig + * @returns ObfuscateBatchResult + */ + export function obfuscate(opts: ObfuscateBatchOpts): Promise; + + /** + * TODO: $out fn used can only replace data in collection previous + * to v4.2, multiple runs will right now replace entire dataset + * Workaround: create multiple collections for each obfuscation batch run + * + * Copy data from fields marked as 'obfuscateable' from + * source collection to target collection + * The source _id field will also be copied to the target + * + * @param query selector for which records to + * @param sourceCollection + * @param targetCollection existing collection in which to hold the results + */ + export function copyObfuscateableData(query: MongoQuery, sourceCollection: Tyr.CollectionInstance, targetCollection: Tyr.CollectionInstance); + + /** + * TODO: Uses very simplistic encryption, find library + * TODO: If updated to use Auth Tags, how to persist? + * + * Encrypts the field values of the provided collection utilizing AES + * Does not encrypt the _id field + * + * @param targetCollection Collection to encrypt + * @param masterKey string key to use for encryption, must be preserved for decryption + * + */ + export function encryptCollection(targetCollection: Tyr.CollectionInstance, encryptionKey: string); + + /** + * TODO: Still need to figure out how to tie metadata collection to target + * For now just explicitly pass in collections + * TODO: When restoring, what do we want to do with metadata? + * + * Restores data that was masked to its original state + * + * @param targetCollection Collection to have data inserted into + * @param sourceCollection Collection that data will be pulled from + * @param query optionally specify subset of data to restore, if no query specified all records will be replaced + * @param decryptionKey Decryption key for the supplied data if it is encrypted. + */ + export function restoreObfuscatedData(targetCollection: Tyr.CollectionInstance, sourceCollection: Tyr.CollectionInstance, query?: Tyr.MongoQuery, decryptionKey?: string) + export interface ObfuscateBatchConfig { + metadataCollectionName: string + + } + export interface ObfuscateBatchResult { + /** + * Unique identifier for the obfuscate batch. + * Set on each metadata record instance to later identify + * affected records. + */ + batchTag: ObjectId, //Might use UUID? + + /** + * Number of records affected + */ + count: number, + + } + export interface ObfuscateBatchOpts { + /** + * MongoDB query for selecting which records to obfuscate + */ + query: FilterQuery, + + /** + * Target Tyranid collection + */ + collection: ObfuscateableCollectionInstance, + + /** + * String appended to the given collection name to designate the + * metadata collection + */ + metadataSuffix: string; + + /** + * Optionally specify a collecton that contains records with the associated masked records _id field + * Fields on the record not specified here will not be altered. + * + * [{ + * _id: {id of record to alter}, + * field: value + * },{ + * _id: 2, + * name: 'John Doe' + * }] + * + */ + replacementValCollection?: Collection, + + /** + * Optionally define replacement values for each field of every record + * Obfuscated. + * { + * field: value + * } + */ + replacementValues?: object, + + } + + /** + * Will probably need an overall batch table that relates to the data run for that batch + */ + export interface ObfuscateMetaDataSchema { + //Unix Epoch Time + timestamp: number; + _id?: ObjectID; + /** + * ID of the record being obfuscated + */ + recordId: ObjectID; + fields: Array; //Names of fields that were obfuscated + + /** + * Uniquie Identifier for individual batch run + */ + batchTag: ObjectId; + } + + interface FieldInstance { + obfuscateable: string; + } + } +} \ No newline at end of file diff --git a/test/datasets/expected-results.ts b/test/datasets/expected-results.ts new file mode 100644 index 0000000..34791c3 --- /dev/null +++ b/test/datasets/expected-results.ts @@ -0,0 +1,55 @@ +import { Tyr } from 'tyranid'; +import { Collection } from 'mongodb'; + +const collectionMaskValues = [{ _id: 11, firstName: 'id_1Name', lastName: 'test_lastname', ip_address: '1.1.1.1' }, + { _id: 12, firstName: 'id_2Name', lastName: 'test_lastname1', ip_address: '1.1.1.2' }, + { _id: 13, firstName: 'id_3Name', lastName: 'test_lastname2', ip_address: '1.1.1.3' }, + { _id: 14, firstName: 'id_4Name', lastName: 'test_lastname3', ip_address: '1.1.1.1' }, + { _id: 15, firstName: 'id_5Name', lastName: 'test_lastname4', ip_address: '1.1.1.4' },]; + +export const ExpectedResults = { + MaskPIIWithStaticValues: '[{"_id":1,"email":"ncroasdale0@cpanel.net","firstName":"USER","lastName":"x","gender":"Male","ip_address":"0.0.0.0","createdAt":"6/30/2018"},' + + '{"_id":2,"email":"crooper1@guardian.co.uk","firstName":"USER","lastName":"x","gender":"Male","ip_address":"0.0.0.0","createdAt":"11/10/2018"},' + + '{"_id":3,"email":"ftorfin2@youtu.be","firstName":"USER","lastName":"x","gender":"Male","ip_address":"0.0.0.0","createdAt":"12/22/2018"},' + + '{"_id":4,"email":"ldenidge3@quantcast.com","firstName":"USER","lastName":"x","gender":"Male","ip_address":"0.0.0.0","createdAt":"10/20/2018"},' + + '{"_id":5,"email":"charnes4@redcross.org","firstName":"USER","lastName":"x","gender":"Male","ip_address":"0.0.0.0","createdAt":"11/21/2018"},' + + '{"_id":6,"email":"dfishpoole5@example.com","firstName":"USER","lastName":"x","gender":"Female","ip_address":"0.0.0.0","createdAt":"10/11/2018"},' + + '{"_id":7,"email":"gbrandolini6@aol.com","firstName":"USER","lastName":"x","gender":"Female","ip_address":"0.0.0.0","createdAt":"12/8/2018"},' + + '{"_id":8,"email":"snapthine7@fotki.com","firstName":"USER","lastName":"x","gender":"Male","ip_address":"0.0.0.0","createdAt":"11/10/2018"},' + + '{"_id":9,"email":"lrijkeseis8@deviantart.com","firstName":"USER","lastName":"x","gender":"Female","ip_address":"0.0.0.0","createdAt":"1/3/2019"},' + + '{"_id":10,"email":"lyashnov9@howstuffworks.com","firstName":"USER","lastName":"x","gender":"Female","ip_address":"0.0.0.0","createdAt":"11/19/2018"}]', + + MaskPIIWithCollectionValues: '[{"_id":11,"email":"jcockrilla@blogspot.com","firstName":"id_1Name","lastName":"test_lastname","gender":"Male","ip_address":"1.1.1.1","createdAt":"1/28/2019"},' + + '{"_id":12,"email":"aorringeb@ox.ac.uk","firstName":"id_2Name","lastName":"test_lastname1","gender":"Female","ip_address":"1.1.1.2","createdAt":"4/15/2018"},' + + '{"_id":13,"email":"amalsterc@epa.gov","firstName":"id_3Name","lastName":"test_lastname2","gender":"Male","ip_address":"1.1.1.3","createdAt":"4/4/2018"},' + + '{"_id":14,"email":"jmcelweed@t-online.de","firstName":"id_4Name","lastName":"test_lastname3","gender":"Male","ip_address":"1.1.1.1","createdAt":"3/18/2018"},' + + '{"_id":15,"email":"ttateme@bizjournals.com","firstName":"id_5Name","lastName":"test_lastname4","gender":"Female","ip_address":"1.1.1.4","createdAt":"8/10/2018"}]', + + CopiedObfuscateableData: '[{"_id":1,"firstName":"Nye","lastName":"Croasdale","ip_address":"173.155.66.90"},' + + '{"_id":2,"firstName":"Coleman","lastName":"Rooper","ip_address":"203.52.25.41"},' + + '{"_id":3,"firstName":"Friedrich","lastName":"Torfin","ip_address":"59.28.45.28"},' + + '{"_id":4,"firstName":"Luigi","lastName":"Denidge","ip_address":"127.47.116.41"},' + + '{"_id":5,"firstName":"Claiborn","lastName":"Harnes","ip_address":"219.146.160.42"},' + + '{"_id":6,"firstName":"Doretta","lastName":"Fishpoole","ip_address":"196.50.150.64"},' + + '{"_id":7,"firstName":"Glennie","lastName":"Brandolini","ip_address":"91.218.223.160"},' + + '{"_id":8,"firstName":"Stearne","lastName":"Napthine","ip_address":"138.19.53.74"},' + + '{"_id":9,"firstName":"Laureen","lastName":"Rijkeseis","ip_address":"201.53.250.84"},' + + '{"_id":10,"firstName":"Lulita","lastName":"Yashnov","ip_address":"114.100.49.94"}]', + + OriginalFirstTenRecords: '[{"_id":1,"email":"ncroasdale0@cpanel.net","firstName":"Nye","lastName":"Croasdale","gender":"Male","ip_address":"173.155.66.90","createdAt":"6/30/2018"},' + + '{"_id":2,"email":"crooper1@guardian.co.uk","firstName":"Coleman","lastName":"Rooper","gender":"Male","ip_address":"203.52.25.41","createdAt":"11/10/2018"},' + + '{"_id":3,"email":"ftorfin2@youtu.be","firstName":"Friedrich","lastName":"Torfin","gender":"Male","ip_address":"59.28.45.28","createdAt":"12/22/2018"},' + + '{"_id":4,"email":"ldenidge3@quantcast.com","firstName":"Luigi","lastName":"Denidge","gender":"Male","ip_address":"127.47.116.41","createdAt":"10/20/2018"},' + + '{"_id":5,"email":"charnes4@redcross.org","firstName":"Claiborn","lastName":"Harnes","gender":"Male","ip_address":"219.146.160.42","createdAt":"11/21/2018"},' + + '{"_id":6,"email":"dfishpoole5@example.com","firstName":"Doretta","lastName":"Fishpoole","gender":"Female","ip_address":"196.50.150.64","createdAt":"10/11/2018"},' + + '{"_id":7,"email":"gbrandolini6@aol.com","firstName":"Glennie","lastName":"Brandolini","gender":"Female","ip_address":"91.218.223.160","createdAt":"12/8/2018"},' + + '{"_id":8,"email":"snapthine7@fotki.com","firstName":"Stearne","lastName":"Napthine","gender":"Male","ip_address":"138.19.53.74","createdAt":"11/10/2018"},' + + '{"_id":9,"email":"lrijkeseis8@deviantart.com","firstName":"Laureen","lastName":"Rijkeseis","gender":"Female","ip_address":"201.53.250.84","createdAt":"1/3/2019"},' + + '{"_id":10,"email":"lyashnov9@howstuffworks.com","firstName":"Lulita","lastName":"Yashnov","gender":"Female","ip_address":"114.100.49.94","createdAt":"11/19/2018"}]' +} + +export const createMaskingValuesCollection = async (): Promise => { + const collection = await Tyr.db.createCollection('testMask'); + await collection.insertMany(collectionMaskValues); + return collection; +} \ No newline at end of file diff --git a/test/datasets/users.ts b/test/datasets/users.ts new file mode 100644 index 0000000..b16ecbe --- /dev/null +++ b/test/datasets/users.ts @@ -0,0 +1,1000 @@ +export default [{ _id: 1, firstName: "Nye", lastName: "Croasdale", email: "ncroasdale0@cpanel.net", gender: "Male", ip_address: "173.155.66.90", createdAt: "6/30/2018" }, +{ _id: 2, firstName: "Coleman", lastName: "Rooper", email: "crooper1@guardian.co.uk", gender: "Male", ip_address: "203.52.25.41", createdAt: "11/10/2018" }, +{ _id: 3, firstName: "Friedrich", lastName: "Torfin", email: "ftorfin2@youtu.be", gender: "Male", ip_address: "59.28.45.28", createdAt: "12/22/2018" }, +{ _id: 4, firstName: "Luigi", lastName: "Denidge", email: "ldenidge3@quantcast.com", gender: "Male", ip_address: "127.47.116.41", createdAt: "10/20/2018" }, +{ _id: 5, firstName: "Claiborn", lastName: "Harnes", email: "charnes4@redcross.org", gender: "Male", ip_address: "219.146.160.42", createdAt: "11/21/2018" }, +{ _id: 6, firstName: "Doretta", lastName: "Fishpoole", email: "dfishpoole5@example.com", gender: "Female", ip_address: "196.50.150.64", createdAt: "10/11/2018" }, +{ _id: 7, firstName: "Glennie", lastName: "Brandolini", email: "gbrandolini6@aol.com", gender: "Female", ip_address: "91.218.223.160", createdAt: "12/8/2018" }, +{ _id: 8, firstName: "Stearne", lastName: "Napthine", email: "snapthine7@fotki.com", gender: "Male", ip_address: "138.19.53.74", createdAt: "11/10/2018" }, +{ _id: 9, firstName: "Laureen", lastName: "Rijkeseis", email: "lrijkeseis8@deviantart.com", gender: "Female", ip_address: "201.53.250.84", createdAt: "1/3/2019" }, +{ _id: 10, firstName: "Lulita", lastName: "Yashnov", email: "lyashnov9@howstuffworks.com", gender: "Female", ip_address: "114.100.49.94", createdAt: "11/19/2018" }, +{ _id: 11, firstName: "Jakie", lastName: "Cockrill", email: "jcockrilla@blogspot.com", gender: "Male", ip_address: "60.184.75.22", createdAt: "1/28/2019" }, +{ _id: 12, firstName: "Audrey", lastName: "Orringe", email: "aorringeb@ox.ac.uk", gender: "Female", ip_address: "158.184.9.84", createdAt: "4/15/2018" }, +{ _id: 13, firstName: "Abram", lastName: "Malster", email: "amalsterc@epa.gov", gender: "Male", ip_address: "131.193.92.167", createdAt: "4/4/2018" }, +{ _id: 14, firstName: "Jarrad", lastName: "McElwee", email: "jmcelweed@t-online.de", gender: "Male", ip_address: "74.2.188.137", createdAt: "3/18/2018" }, +{ _id: 15, firstName: "Tedra", lastName: "Tatem", email: "ttateme@bizjournals.com", gender: "Female", ip_address: "50.69.112.239", createdAt: "8/10/2018" }, +{ _id: 16, firstName: "Eunice", lastName: "Camell", email: "ecamellf@china.com.cn", gender: "Female", ip_address: "28.117.0.57", createdAt: "11/3/2018" }, +{ _id: 17, firstName: "Ardine", lastName: "de Guerre", email: "adeguerreg@whitehouse.gov", gender: "Female", ip_address: "87.238.13.82", createdAt: "2/10/2019" }, +{ _id: 18, firstName: "Roderick", lastName: "Arnaudin", email: "rarnaudinh@senate.gov", gender: "Male", ip_address: "192.84.221.252", createdAt: "4/9/2018" }, +{ _id: 19, firstName: "Bruis", lastName: "Humblestone", email: "bhumblestonei@wp.com", gender: "Male", ip_address: "90.146.36.111", createdAt: "4/7/2018" }, +{ _id: 20, firstName: "Trefor", lastName: "Treversh", email: "ttrevershj@hibu.com", gender: "Male", ip_address: "240.241.98.142", createdAt: "7/14/2018" }, +{ _id: 21, firstName: "Ashlee", lastName: "Doumer", email: "adoumerk@arstechnica.com", gender: "Female", ip_address: "54.73.61.73", createdAt: "4/4/2018" }, +{ _id: 22, firstName: "Antonio", lastName: "Borman", email: "abormanl@dailymail.co.uk", gender: "Male", ip_address: "16.90.199.233", createdAt: "7/19/2018" }, +{ _id: 23, firstName: "Deane", lastName: "Daen", email: "ddaenm@dagondesign.com", gender: "Female", ip_address: "126.200.238.198", createdAt: "3/4/2018" }, +{ _id: 24, firstName: "Marni", lastName: "Blazej", email: "mblazejn@plala.or.jp", gender: "Female", ip_address: "153.168.103.103", createdAt: "5/15/2018" }, +{ _id: 25, firstName: "Amelie", lastName: "Arden", email: "aardeno@fema.gov", gender: "Female", ip_address: "13.181.143.103", createdAt: "7/1/2018" }, +{ _id: 26, firstName: "Brooke", lastName: "O'Hegertie", email: "bohegertiep@prlog.org", gender: "Male", ip_address: "206.191.236.28", createdAt: "12/14/2018" }, +{ _id: 27, firstName: "Darla", lastName: "Copello", email: "dcopelloq@constantcontact.com", gender: "Female", ip_address: "54.81.54.97", createdAt: "6/27/2018" }, +{ _id: 28, firstName: "Stefanie", lastName: "Saket", email: "ssaketr@bluehost.com", gender: "Female", ip_address: "127.68.111.85", createdAt: "1/19/2019" }, +{ _id: 29, firstName: "Yule", lastName: "Rudolph", email: "yrudolphs@booking.com", gender: "Male", ip_address: "25.224.202.234", createdAt: "6/19/2018" }, +{ _id: 30, firstName: "Eddy", lastName: "Sallenger", email: "esallengert@msu.edu", gender: "Male", ip_address: "46.91.39.254", createdAt: "8/14/2018" }, +{ _id: 31, firstName: "Montague", lastName: "Burtt", email: "mburttu@ehow.com", gender: "Male", ip_address: "155.250.199.39", createdAt: "2/22/2018" }, +{ _id: 32, firstName: "Chico", lastName: "Stanes", email: "cstanesv@umn.edu", gender: "Male", ip_address: "203.174.232.207", createdAt: "12/19/2018" }, +{ _id: 33, firstName: "Pauli", lastName: "Spindler", email: "pspindlerw@earthlink.net", gender: "Female", ip_address: "187.108.144.145", createdAt: "4/8/2018" }, +{ _id: 34, firstName: "Shalom", lastName: "Loveredge", email: "sloveredgex@fotki.com", gender: "Male", ip_address: "231.205.250.204", createdAt: "6/14/2018" }, +{ _id: 35, firstName: "Chuck", lastName: "Frayne", email: "cfrayney@disqus.com", gender: "Male", ip_address: "74.175.246.182", createdAt: "3/8/2018" }, +{ _id: 36, firstName: "Hermon", lastName: "Kitcatt", email: "hkitcattz@qq.com", gender: "Male", ip_address: "51.157.191.179", createdAt: "1/7/2019" }, +{ _id: 37, firstName: "Gabbie", lastName: "Bohman", email: "gbohman10@livejournal.com", gender: "Male", ip_address: "181.26.36.151", createdAt: "1/17/2019" }, +{ _id: 38, firstName: "Krissy", lastName: "Lutsch", email: "klutsch11@soup.io", gender: "Female", ip_address: "113.133.237.133", createdAt: "4/14/2018" }, +{ _id: 39, firstName: "Virgilio", lastName: "Prescote", email: "vprescote12@php.net", gender: "Male", ip_address: "149.54.1.78", createdAt: "1/21/2019" }, +{ _id: 40, firstName: "Josiah", lastName: "McAulay", email: "jmcaulay13@squidoo.com", gender: "Male", ip_address: "81.178.58.8", createdAt: "10/19/2018" }, +{ _id: 41, firstName: "Darcy", lastName: "MacGahy", email: "dmacgahy14@cam.ac.uk", gender: "Male", ip_address: "222.249.178.198", createdAt: "12/29/2018" }, +{ _id: 42, firstName: "Mitchell", lastName: "Mandel", email: "mmandel15@hud.gov", gender: "Male", ip_address: "171.30.63.8", createdAt: "1/8/2019" }, +{ _id: 43, firstName: "Latashia", lastName: "Bacop", email: "lbacop16@imgur.com", gender: "Female", ip_address: "223.15.16.15", createdAt: "10/14/2018" }, +{ _id: 44, firstName: "Grantley", lastName: "Welburn", email: "gwelburn17@oaic.gov.au", gender: "Male", ip_address: "173.89.228.194", createdAt: "12/13/2018" }, +{ _id: 45, firstName: "Maddi", lastName: "Cobbledick", email: "mcobbledick18@rakuten.co.jp", gender: "Female", ip_address: "135.93.164.253", createdAt: "1/31/2019" }, +{ _id: 46, firstName: "Abigael", lastName: "Glasser", email: "aglasser19@slate.com", gender: "Female", ip_address: "9.157.98.217", createdAt: "2/19/2018" }, +{ _id: 47, firstName: "Salvador", lastName: "Bucksey", email: "sbucksey1a@sciencedaily.com", gender: "Male", ip_address: "238.81.242.4", createdAt: "3/17/2018" }, +{ _id: 48, firstName: "Mendy", lastName: "Van Zon", email: "mvanzon1b@jigsy.com", gender: "Male", ip_address: "54.61.213.64", createdAt: "11/28/2018" }, +{ _id: 49, firstName: "Bibi", lastName: "Whetson", email: "bwhetson1c@springer.com", gender: "Female", ip_address: "224.96.171.79", createdAt: "7/19/2018" }, +{ _id: 50, firstName: "Helen-elizabeth", lastName: "Chipchase", email: "hchipchase1d@oakley.com", gender: "Female", ip_address: "135.155.58.230", createdAt: "11/14/2018" }, +{ _id: 51, firstName: "Lancelot", lastName: "Andries", email: "landries1e@soundcloud.com", gender: "Male", ip_address: "105.235.82.127", createdAt: "4/24/2018" }, +{ _id: 52, firstName: "Kinny", lastName: "Moodycliffe", email: "kmoodycliffe1f@surveymonkey.com", gender: "Male", ip_address: "51.32.2.160", createdAt: "6/16/2018" }, +{ _id: 53, firstName: "Romonda", lastName: "Kingscott", email: "rkingscott1g@i2i.jp", gender: "Female", ip_address: "178.247.166.106", createdAt: "12/12/2018" }, +{ _id: 54, firstName: "Wendall", lastName: "Egleton", email: "wegleton1h@acquirethisname.com", gender: "Male", ip_address: "105.68.207.119", createdAt: "8/5/2018" }, +{ _id: 55, firstName: "Carmen", lastName: "Sleath", email: "csleath1i@feedburner.com", gender: "Female", ip_address: "41.145.154.30", createdAt: "11/13/2018" }, +{ _id: 56, firstName: "Clint", lastName: "Hurlin", email: "churlin1j@imdb.com", gender: "Male", ip_address: "41.17.64.4", createdAt: "7/24/2018" }, +{ _id: 57, firstName: "Antonio", lastName: "Ionesco", email: "aionesco1k@slashdot.org", gender: "Male", ip_address: "238.250.20.221", createdAt: "3/7/2018" }, +{ _id: 58, firstName: "Sol", lastName: "Ramme", email: "sramme1l@uol.com.br", gender: "Male", ip_address: "152.80.109.28", createdAt: "9/23/2018" }, +{ _id: 59, firstName: "Isadore", lastName: "Guthrie", email: "iguthrie1m@narod.ru", gender: "Male", ip_address: "35.123.59.130", createdAt: "12/7/2018" }, +{ _id: 60, firstName: "Josy", lastName: "Flori", email: "jflori1n@technorati.com", gender: "Female", ip_address: "180.158.47.59", createdAt: "8/1/2018" }, +{ _id: 61, firstName: "Derrick", lastName: "O'Dea", email: "dodea1o@army.mil", gender: "Male", ip_address: "2.237.232.43", createdAt: "7/23/2018" }, +{ _id: 62, firstName: "Elna", lastName: "Scola", email: "escola1p@tumblr.com", gender: "Female", ip_address: "149.83.0.81", createdAt: "3/20/2018" }, +{ _id: 63, firstName: "Krishna", lastName: "Pitcaithly", email: "kpitcaithly1q@businessweek.com", gender: "Male", ip_address: "177.227.41.152", createdAt: "4/9/2018" }, +{ _id: 64, firstName: "Hayyim", lastName: "Sadler", email: "hsadler1r@oakley.com", gender: "Male", ip_address: "24.248.91.172", createdAt: "6/13/2018" }, +{ _id: 65, firstName: "Evelin", lastName: "Cremins", email: "ecremins1s@netscape.com", gender: "Male", ip_address: "19.71.248.180", createdAt: "11/19/2018" }, +{ _id: 66, firstName: "Cammy", lastName: "Hofer", email: "chofer1t@google.ru", gender: "Male", ip_address: "31.10.49.36", createdAt: "2/19/2018" }, +{ _id: 67, firstName: "Roddie", lastName: "Munby", email: "rmunby1u@hhs.gov", gender: "Male", ip_address: "12.137.110.59", createdAt: "8/28/2018" }, +{ _id: 68, firstName: "Ramon", lastName: "de Banke", email: "rdebanke1v@lycos.com", gender: "Male", ip_address: "202.86.132.239", createdAt: "2/2/2019" }, +{ _id: 69, firstName: "Alejandro", lastName: "Hansbury", email: "ahansbury1w@tripadvisor.com", gender: "Male", ip_address: "59.184.146.140", createdAt: "9/30/2018" }, +{ _id: 70, firstName: "Barnabe", lastName: "Soldner", email: "bsoldner1x@ifeng.com", gender: "Male", ip_address: "216.115.231.91", createdAt: "2/14/2018" }, +{ _id: 71, firstName: "Payton", lastName: "Guilfoyle", email: "pguilfoyle1y@ebay.co.uk", gender: "Male", ip_address: "160.121.144.225", createdAt: "6/29/2018" }, +{ _id: 72, firstName: "Enoch", lastName: "Mackro", email: "emackro1z@nationalgeographic.com", gender: "Male", ip_address: "126.160.5.146", createdAt: "9/11/2018" }, +{ _id: 73, firstName: "Welbie", lastName: "O'Nion", email: "wonion20@list-manage.com", gender: "Male", ip_address: "131.192.58.3", createdAt: "10/16/2018" }, +{ _id: 74, firstName: "Ricoriki", lastName: "Merrisson", email: "rmerrisson21@dailymail.co.uk", gender: "Male", ip_address: "246.251.180.18", createdAt: "5/24/2018" }, +{ _id: 75, firstName: "Huntington", lastName: "Wann", email: "hwann22@cpanel.net", gender: "Male", ip_address: "83.247.195.189", createdAt: "6/19/2018" }, +{ _id: 76, firstName: "Sharla", lastName: "Gadsby", email: "sgadsby23@ovh.net", gender: "Female", ip_address: "60.90.229.244", createdAt: "11/9/2018" }, +{ _id: 77, firstName: "Waneta", lastName: "Eilers", email: "weilers24@about.me", gender: "Female", ip_address: "14.233.60.80", createdAt: "10/1/2018" }, +{ _id: 78, firstName: "Carlin", lastName: "Warbrick", email: "cwarbrick25@pagesperso-orange.fr", gender: "Male", ip_address: "52.35.151.15", createdAt: "3/19/2018" }, +{ _id: 79, firstName: "Giacinta", lastName: "Hillan", email: "ghillan26@ibm.com", gender: "Female", ip_address: "148.81.166.192", createdAt: "12/23/2018" }, +{ _id: 80, firstName: "Donovan", lastName: "Basketter", email: "dbasketter27@dell.com", gender: "Male", ip_address: "241.26.28.64", createdAt: "2/2/2019" }, +{ _id: 81, firstName: "Francoise", lastName: "Carbett", email: "fcarbett28@tamu.edu", gender: "Female", ip_address: "172.238.61.229", createdAt: "11/27/2018" }, +{ _id: 82, firstName: "Arleyne", lastName: "O'Shee", email: "aoshee29@dmoz.org", gender: "Female", ip_address: "190.248.76.217", createdAt: "2/23/2018" }, +{ _id: 83, firstName: "Trixie", lastName: "Gyer", email: "tgyer2a@globo.com", gender: "Female", ip_address: "9.230.22.191", createdAt: "10/15/2018" }, +{ _id: 84, firstName: "Bucky", lastName: "Gladyer", email: "bgladyer2b@fotki.com", gender: "Male", ip_address: "216.94.252.144", createdAt: "5/29/2018" }, +{ _id: 85, firstName: "Jenda", lastName: "Benyan", email: "jbenyan2c@arizona.edu", gender: "Female", ip_address: "199.83.63.178", createdAt: "8/5/2018" }, +{ _id: 86, firstName: "Ethelbert", lastName: "Ketchell", email: "eketchell2d@purevolume.com", gender: "Male", ip_address: "126.170.239.85", createdAt: "10/23/2018" }, +{ _id: 87, firstName: "Cesar", lastName: "Filewood", email: "cfilewood2e@rambler.ru", gender: "Male", ip_address: "117.60.226.133", createdAt: "4/9/2018" }, +{ _id: 88, firstName: "Kiley", lastName: "Dibdall", email: "kdibdall2f@hostgator.com", gender: "Male", ip_address: "154.117.60.207", createdAt: "7/7/2018" }, +{ _id: 89, firstName: "Val", lastName: "Pointon", email: "vpointon2g@biglobe.ne.jp", gender: "Male", ip_address: "143.147.150.202", createdAt: "3/4/2018" }, +{ _id: 90, firstName: "Christel", lastName: "Chadbourne", email: "cchadbourne2h@usnews.com", gender: "Female", ip_address: "170.33.157.87", createdAt: "1/31/2019" }, +{ _id: 91, firstName: "Libbie", lastName: "Youthed", email: "lyouthed2i@hexun.com", gender: "Female", ip_address: "87.73.228.50", createdAt: "8/14/2018" }, +{ _id: 92, firstName: "Esmeralda", lastName: "Hayers", email: "ehayers2j@barnesandnoble.com", gender: "Female", ip_address: "98.48.43.100", createdAt: "10/30/2018" }, +{ _id: 93, firstName: "Corrianne", lastName: "Lusty", email: "clusty2k@intel.com", gender: "Female", ip_address: "26.70.164.16", createdAt: "9/29/2018" }, +{ _id: 94, firstName: "Jeannette", lastName: "Kapiloff", email: "jkapiloff2l@earthlink.net", gender: "Female", ip_address: "22.220.97.13", createdAt: "9/7/2018" }, +{ _id: 95, firstName: "Frants", lastName: "Raoul", email: "fraoul2m@gravatar.com", gender: "Male", ip_address: "14.23.149.153", createdAt: "12/2/2018" }, +{ _id: 96, firstName: "Risa", lastName: "MacCallam", email: "rmaccallam2n@a8.net", gender: "Female", ip_address: "58.77.94.108", createdAt: "12/18/2018" }, +{ _id: 97, firstName: "Ulrica", lastName: "Agates", email: "uagates2o@ed.gov", gender: "Female", ip_address: "84.83.83.45", createdAt: "11/8/2018" }, +{ _id: 98, firstName: "Ariadne", lastName: "Sneesbie", email: "asneesbie2p@amazon.co.uk", gender: "Female", ip_address: "217.35.187.78", createdAt: "11/20/2018" }, +{ _id: 99, firstName: "Shelagh", lastName: "Tall", email: "stall2q@wp.com", gender: "Female", ip_address: "8.56.191.179", createdAt: "11/30/2018" }, +{ _id: 100, firstName: "Kylen", lastName: "Cordery", email: "kcordery2r@myspace.com", gender: "Female", ip_address: "237.114.9.98", createdAt: "4/2/2018" }, +{ _id: 101, firstName: "Arel", lastName: "Reiners", email: "areiners2s@hhs.gov", gender: "Male", ip_address: "73.29.36.217", createdAt: "12/6/2018" }, +{ _id: 102, firstName: "Owen", lastName: "Eschalotte", email: "oeschalotte2t@livejournal.com", gender: "Male", ip_address: "31.225.81.146", createdAt: "8/3/2018" }, +{ _id: 103, firstName: "Haslett", lastName: "Foltin", email: "hfoltin2u@elegantthemes.com", gender: "Male", ip_address: "158.208.170.138", createdAt: "9/6/2018" }, +{ _id: 104, firstName: "Neala", lastName: "Yesenin", email: "nyesenin2v@ca.gov", gender: "Female", ip_address: "38.87.42.185", createdAt: "10/25/2018" }, +{ _id: 105, firstName: "Ruby", lastName: "Gallone", email: "rgallone2w@meetup.com", gender: "Male", ip_address: "231.120.130.120", createdAt: "12/11/2018" }, +{ _id: 106, firstName: "Erwin", lastName: "Cordelet", email: "ecordelet2x@toplist.cz", gender: "Male", ip_address: "9.208.91.61", createdAt: "2/24/2018" }, +{ _id: 107, firstName: "Mickie", lastName: "Symmers", email: "msymmers2y@desdev.cn", gender: "Male", ip_address: "85.16.12.233", createdAt: "11/23/2018" }, +{ _id: 108, firstName: "Gideon", lastName: "Soot", email: "gsoot2z@hexun.com", gender: "Male", ip_address: "153.117.120.158", createdAt: "9/29/2018" }, +{ _id: 109, firstName: "Dionis", lastName: "Chamberlen", email: "dchamberlen30@narod.ru", gender: "Female", ip_address: "213.52.125.181", createdAt: "5/10/2018" }, +{ _id: 110, firstName: "Cass", lastName: "Konerding", email: "ckonerding31@ed.gov", gender: "Female", ip_address: "188.151.44.52", createdAt: "11/2/2018" }, +{ _id: 111, firstName: "Micky", lastName: "Dubique", email: "mdubique32@nps.gov", gender: "Female", ip_address: "229.155.198.220", createdAt: "4/13/2018" }, +{ _id: 112, firstName: "Staffard", lastName: "Shaxby", email: "sshaxby33@wisc.edu", gender: "Male", ip_address: "129.205.248.15", createdAt: "3/30/2018" }, +{ _id: 113, firstName: "Issiah", lastName: "Palfreman", email: "ipalfreman34@cocolog-nifty.com", gender: "Male", ip_address: "187.200.25.5", createdAt: "10/23/2018" }, +{ _id: 114, firstName: "Kenyon", lastName: "Jeandillou", email: "kjeandillou35@wikispaces.com", gender: "Male", ip_address: "68.231.6.64", createdAt: "5/23/2018" }, +{ _id: 115, firstName: "Marys", lastName: "Redgewell", email: "mredgewell36@rediff.com", gender: "Female", ip_address: "70.118.133.189", createdAt: "11/12/2018" }, +{ _id: 116, firstName: "Nariko", lastName: "Ferenczi", email: "nferenczi37@mediafire.com", gender: "Female", ip_address: "13.104.19.42", createdAt: "8/28/2018" }, +{ _id: 117, firstName: "Ricard", lastName: "Lowndsborough", email: "rlowndsborough38@friendfeed.com", gender: "Male", ip_address: "173.201.60.132", createdAt: "5/9/2018" }, +{ _id: 118, firstName: "Gerrie", lastName: "Jupe", email: "gjupe39@devhub.com", gender: "Male", ip_address: "55.78.147.198", createdAt: "7/20/2018" }, +{ _id: 119, firstName: "Benton", lastName: "Kirlin", email: "bkirlin3a@baidu.com", gender: "Male", ip_address: "14.215.0.108", createdAt: "6/17/2018" }, +{ _id: 120, firstName: "Augustine", lastName: "Rothman", email: "arothman3b@theglobeandmail.com", gender: "Female", ip_address: "53.174.181.194", createdAt: "6/21/2018" }, +{ _id: 121, firstName: "Stevena", lastName: "Maxwaile", email: "smaxwaile3c@harvard.edu", gender: "Female", ip_address: "91.235.32.157", createdAt: "2/15/2018" }, +{ _id: 122, firstName: "Esteban", lastName: "Tolefree", email: "etolefree3d@so-net.ne.jp", gender: "Male", ip_address: "128.34.99.25", createdAt: "2/24/2018" }, +{ _id: 123, firstName: "Kenon", lastName: "Levinge", email: "klevinge3e@theguardian.com", gender: "Male", ip_address: "39.32.182.100", createdAt: "2/23/2018" }, +{ _id: 124, firstName: "Sibella", lastName: "Coatham", email: "scoatham3f@naver.com", gender: "Female", ip_address: "44.14.90.152", createdAt: "12/21/2018" }, +{ _id: 125, firstName: "Bartholomeus", lastName: "Covely", email: "bcovely3g@msn.com", gender: "Male", ip_address: "38.212.42.103", createdAt: "8/27/2018" }, +{ _id: 126, firstName: "Cherise", lastName: "Alenshev", email: "calenshev3h@theguardian.com", gender: "Female", ip_address: "98.178.222.248", createdAt: "3/15/2018" }, +{ _id: 127, firstName: "Barney", lastName: "Redihough", email: "bredihough3i@github.io", gender: "Male", ip_address: "214.23.77.252", createdAt: "9/5/2018" }, +{ _id: 128, firstName: "Beverie", lastName: "Elnor", email: "belnor3j@columbia.edu", gender: "Female", ip_address: "21.186.144.24", createdAt: "8/13/2018" }, +{ _id: 129, firstName: "Charlena", lastName: "Leathes", email: "cleathes3k@cpanel.net", gender: "Female", ip_address: "122.24.28.156", createdAt: "4/29/2018" }, +{ _id: 130, firstName: "Clevie", lastName: "Ockenden", email: "cockenden3l@homestead.com", gender: "Male", ip_address: "165.38.210.141", createdAt: "3/8/2018" }, +{ _id: 131, firstName: "Skipp", lastName: "Orcas", email: "sorcas3m@zimbio.com", gender: "Male", ip_address: "91.207.66.183", createdAt: "2/3/2019" }, +{ _id: 132, firstName: "Sydney", lastName: "Jewar", email: "sjewar3n@apple.com", gender: "Male", ip_address: "16.105.189.50", createdAt: "8/20/2018" }, +{ _id: 133, firstName: "Mose", lastName: "Penright", email: "mpenright3o@biglobe.ne.jp", gender: "Male", ip_address: "174.188.112.43", createdAt: "8/9/2018" }, +{ _id: 134, firstName: "Regina", lastName: "Maytom", email: "rmaytom3p@networkadvertising.org", gender: "Female", ip_address: "71.69.119.204", createdAt: "1/4/2019" }, +{ _id: 135, firstName: "Clary", lastName: "Bounds", email: "cbounds3q@exblog.jp", gender: "Female", ip_address: "78.22.210.45", createdAt: "7/18/2018" }, +{ _id: 136, firstName: "Francis", lastName: "Dehn", email: "fdehn3r@bravesites.com", gender: "Male", ip_address: "165.22.154.183", createdAt: "5/14/2018" }, +{ _id: 137, firstName: "Shaine", lastName: "Stringfellow", email: "sstringfellow3s@dagondesign.com", gender: "Male", ip_address: "237.29.72.6", createdAt: "9/5/2018" }, +{ _id: 138, firstName: "Yvor", lastName: "Schach", email: "yschach3t@youtube.com", gender: "Male", ip_address: "197.109.204.12", createdAt: "5/28/2018" }, +{ _id: 139, firstName: "Melloney", lastName: "Aizikov", email: "maizikov3u@cdbaby.com", gender: "Female", ip_address: "7.217.97.14", createdAt: "7/1/2018" }, +{ _id: 140, firstName: "Moria", lastName: "Beviss", email: "mbeviss3v@amazon.de", gender: "Female", ip_address: "103.134.126.50", createdAt: "6/10/2018" }, +{ _id: 141, firstName: "Traver", lastName: "Button", email: "tbutton3w@addthis.com", gender: "Male", ip_address: "235.251.50.124", createdAt: "8/16/2018" }, +{ _id: 142, firstName: "Brennen", lastName: "Tooker", email: "btooker3x@prlog.org", gender: "Male", ip_address: "253.212.87.128", createdAt: "12/21/2018" }, +{ _id: 143, firstName: "Eb", lastName: "Ganniclifft", email: "eganniclifft3y@bbc.co.uk", gender: "Male", ip_address: "193.174.130.51", createdAt: "1/23/2019" }, +{ _id: 144, firstName: "Dannie", lastName: "Halpeine", email: "dhalpeine3z@wordpress.org", gender: "Female", ip_address: "246.150.11.168", createdAt: "12/27/2018" }, +{ _id: 145, firstName: "Alwyn", lastName: "Pierrepoint", email: "apierrepoint40@cnet.com", gender: "Male", ip_address: "233.55.1.250", createdAt: "7/9/2018" }, +{ _id: 146, firstName: "Baillie", lastName: "Linden", email: "blinden41@amazon.de", gender: "Male", ip_address: "135.221.249.129", createdAt: "1/9/2019" }, +{ _id: 147, firstName: "Patrice", lastName: "Greatbatch", email: "pgreatbatch42@symantec.com", gender: "Female", ip_address: "32.2.145.179", createdAt: "10/30/2018" }, +{ _id: 148, firstName: "Udale", lastName: "Skerrett", email: "uskerrett43@accuweather.com", gender: "Male", ip_address: "10.247.174.180", createdAt: "9/22/2018" }, +{ _id: 149, firstName: "Noble", lastName: "Wilcher", email: "nwilcher44@admin.ch", gender: "Male", ip_address: "23.50.12.250", createdAt: "8/27/2018" }, +{ _id: 150, firstName: "Tremayne", lastName: "Dilston", email: "tdilston45@yandex.ru", gender: "Male", ip_address: "225.88.50.247", createdAt: "3/5/2018" }, +{ _id: 151, firstName: "Frants", lastName: "Gibbe", email: "fgibbe46@google.fr", gender: "Male", ip_address: "233.53.229.110", createdAt: "11/9/2018" }, +{ _id: 152, firstName: "Jillian", lastName: "Jelliman", email: "jjelliman47@uiuc.edu", gender: "Female", ip_address: "13.244.98.86", createdAt: "8/16/2018" }, +{ _id: 153, firstName: "Clem", lastName: "Oneil", email: "coneil48@usgs.gov", gender: "Female", ip_address: "48.30.189.80", createdAt: "1/6/2019" }, +{ _id: 154, firstName: "Yehudi", lastName: "Bennellick", email: "ybennellick49@time.com", gender: "Male", ip_address: "29.124.124.255", createdAt: "10/25/2018" }, +{ _id: 155, firstName: "Borg", lastName: "Tummasutti", email: "btummasutti4a@amazon.de", gender: "Male", ip_address: "118.26.173.85", createdAt: "10/28/2018" }, +{ _id: 156, firstName: "Norri", lastName: "Tedder", email: "ntedder4b@vkontakte.ru", gender: "Female", ip_address: "85.145.76.201", createdAt: "9/26/2018" }, +{ _id: 157, firstName: "Hilton", lastName: "Pickance", email: "hpickance4c@sogou.com", gender: "Male", ip_address: "119.206.117.154", createdAt: "12/17/2018" }, +{ _id: 158, firstName: "Townsend", lastName: "Crudginton", email: "tcrudginton4d@chicagotribune.com", gender: "Male", ip_address: "135.66.70.154", createdAt: "7/28/2018" }, +{ _id: 159, firstName: "Worthy", lastName: "Nickels", email: "wnickels4e@discovery.com", gender: "Male", ip_address: "50.11.26.180", createdAt: "1/5/2019" }, +{ _id: 160, firstName: "Udell", lastName: "McMeeking", email: "umcmeeking4f@hao123.com", gender: "Male", ip_address: "145.80.32.225", createdAt: "8/3/2018" }, +{ _id: 161, firstName: "Yelena", lastName: "Sommersett", email: "ysommersett4g@nydailynews.com", gender: "Female", ip_address: "198.163.139.168", createdAt: "5/29/2018" }, +{ _id: 162, firstName: "Gayler", lastName: "Gretton", email: "ggretton4h@dedecms.com", gender: "Male", ip_address: "38.115.88.55", createdAt: "9/27/2018" }, +{ _id: 163, firstName: "Ashla", lastName: "Bicknell", email: "abicknell4i@bloglovin.com", gender: "Female", ip_address: "97.78.71.202", createdAt: "4/6/2018" }, +{ _id: 164, firstName: "Ferdy", lastName: "Birtwistle", email: "fbirtwistle4j@arstechnica.com", gender: "Male", ip_address: "217.0.196.172", createdAt: "4/23/2018" }, +{ _id: 165, firstName: "Orin", lastName: "Dugald", email: "odugald4k@last.fm", gender: "Male", ip_address: "141.245.51.60", createdAt: "6/12/2018" }, +{ _id: 166, firstName: "Giff", lastName: "Wilgar", email: "gwilgar4l@cam.ac.uk", gender: "Male", ip_address: "218.209.185.222", createdAt: "11/17/2018" }, +{ _id: 167, firstName: "Nevil", lastName: "Dineges", email: "ndineges4m@washingtonpost.com", gender: "Male", ip_address: "56.62.31.103", createdAt: "1/9/2019" }, +{ _id: 168, firstName: "Paddy", lastName: "Keningley", email: "pkeningley4n@youtube.com", gender: "Male", ip_address: "139.193.134.119", createdAt: "11/22/2018" }, +{ _id: 169, firstName: "Aluino", lastName: "Sherborne", email: "asherborne4o@sun.com", gender: "Male", ip_address: "116.220.89.212", createdAt: "1/9/2019" }, +{ _id: 170, firstName: "Cybil", lastName: "Dybell", email: "cdybell4p@scientificamerican.com", gender: "Female", ip_address: "24.81.212.58", createdAt: "6/23/2018" }, +{ _id: 171, firstName: "Marcille", lastName: "Paoletto", email: "mpaoletto4q@dedecms.com", gender: "Female", ip_address: "146.240.230.21", createdAt: "9/14/2018" }, +{ _id: 172, firstName: "Yardley", lastName: "Duester", email: "yduester4r@amazon.de", gender: "Male", ip_address: "178.72.129.62", createdAt: "7/24/2018" }, +{ _id: 173, firstName: "Arlina", lastName: "McGeneay", email: "amcgeneay4s@mashable.com", gender: "Female", ip_address: "15.137.35.106", createdAt: "8/31/2018" }, +{ _id: 174, firstName: "Lauren", lastName: "Joynes", email: "ljoynes4t@indiatimes.com", gender: "Female", ip_address: "60.25.20.88", createdAt: "6/19/2018" }, +{ _id: 175, firstName: "Bren", lastName: "Brokenshire", email: "bbrokenshire4u@addtoany.com", gender: "Male", ip_address: "4.212.87.63", createdAt: "1/24/2019" }, +{ _id: 176, firstName: "Coraline", lastName: "Lowerson", email: "clowerson4v@timesonline.co.uk", gender: "Female", ip_address: "237.215.190.63", createdAt: "5/29/2018" }, +{ _id: 177, firstName: "Welch", lastName: "Kock", email: "wkock4w@hao123.com", gender: "Male", ip_address: "1.51.84.98", createdAt: "5/1/2018" }, +{ _id: 178, firstName: "Briant", lastName: "Tangye", email: "btangye4x@wisc.edu", gender: "Male", ip_address: "42.41.18.127", createdAt: "10/27/2018" }, +{ _id: 179, firstName: "Rafael", lastName: "Timmins", email: "rtimmins4y@discovery.com", gender: "Male", ip_address: "211.62.170.235", createdAt: "1/25/2019" }, +{ _id: 180, firstName: "Lorianna", lastName: "Kalinowsky", email: "lkalinowsky4z@theguardian.com", gender: "Female", ip_address: "209.88.77.122", createdAt: "3/18/2018" }, +{ _id: 181, firstName: "Danyelle", lastName: "MacIlraith", email: "dmacilraith50@wired.com", gender: "Female", ip_address: "205.112.233.40", createdAt: "10/23/2018" }, +{ _id: 182, firstName: "Maxwell", lastName: "Eckels", email: "meckels51@1und1.de", gender: "Male", ip_address: "162.76.72.101", createdAt: "3/4/2018" }, +{ _id: 183, firstName: "Clywd", lastName: "Castagnet", email: "ccastagnet52@latimes.com", gender: "Male", ip_address: "238.174.32.47", createdAt: "10/1/2018" }, +{ _id: 184, firstName: "Thoma", lastName: "Humpherson", email: "thumpherson53@etsy.com", gender: "Male", ip_address: "168.1.215.144", createdAt: "9/18/2018" }, +{ _id: 185, firstName: "Jacky", lastName: "Lutwyche", email: "jlutwyche54@elegantthemes.com", gender: "Male", ip_address: "29.210.196.182", createdAt: "8/7/2018" }, +{ _id: 186, firstName: "Dasha", lastName: "Zylberdik", email: "dzylberdik55@indiatimes.com", gender: "Female", ip_address: "10.157.110.167", createdAt: "11/16/2018" }, +{ _id: 187, firstName: "Mallory", lastName: "Rustich", email: "mrustich56@cbsnews.com", gender: "Female", ip_address: "99.174.63.5", createdAt: "4/17/2018" }, +{ _id: 188, firstName: "Arther", lastName: "Lagen", email: "alagen57@sun.com", gender: "Male", ip_address: "132.133.87.9", createdAt: "9/17/2018" }, +{ _id: 189, firstName: "Grantham", lastName: "Rosenvasser", email: "grosenvasser58@unesco.org", gender: "Male", ip_address: "184.53.200.180", createdAt: "2/12/2018" }, +{ _id: 190, firstName: "Boonie", lastName: "Thirlwall", email: "bthirlwall59@jimdo.com", gender: "Male", ip_address: "70.194.231.164", createdAt: "9/24/2018" }, +{ _id: 191, firstName: "Nikolaos", lastName: "Cogman", email: "ncogman5a@shop-pro.jp", gender: "Male", ip_address: "197.48.157.77", createdAt: "4/26/2018" }, +{ _id: 192, firstName: "Shena", lastName: "Oakley", email: "soakley5b@dedecms.com", gender: "Female", ip_address: "224.19.149.132", createdAt: "4/7/2018" }, +{ _id: 193, firstName: "Johan", lastName: "Begley", email: "jbegley5c@accuweather.com", gender: "Male", ip_address: "124.225.89.113", createdAt: "10/2/2018" }, +{ _id: 194, firstName: "Karena", lastName: "Snowball", email: "ksnowball5d@nba.com", gender: "Female", ip_address: "201.70.111.56", createdAt: "3/2/2018" }, +{ _id: 195, firstName: "Claire", lastName: "Boutcher", email: "cboutcher5e@netvibes.com", gender: "Male", ip_address: "205.140.17.151", createdAt: "2/5/2019" }, +{ _id: 196, firstName: "Gilbertina", lastName: "Bathow", email: "gbathow5f@shutterfly.com", gender: "Female", ip_address: "80.67.57.171", createdAt: "1/18/2019" }, +{ _id: 197, firstName: "Dunstan", lastName: "Dakhov", email: "ddakhov5g@ucoz.com", gender: "Male", ip_address: "139.58.195.183", createdAt: "11/15/2018" }, +{ _id: 198, firstName: "Shae", lastName: "Spinozzi", email: "sspinozzi5h@nbcnews.com", gender: "Male", ip_address: "38.45.146.21", createdAt: "5/1/2018" }, +{ _id: 199, firstName: "Jacqueline", lastName: "Wrotham", email: "jwrotham5i@xinhuanet.com", gender: "Female", ip_address: "51.153.153.15", createdAt: "12/28/2018" }, +{ _id: 200, firstName: "Carlie", lastName: "Gloves", email: "cgloves5j@mapquest.com", gender: "Female", ip_address: "163.48.191.88", createdAt: "4/11/2018" }, +{ _id: 201, firstName: "Jereme", lastName: "Nisius", email: "jnisius5k@cbsnews.com", gender: "Male", ip_address: "37.39.19.180", createdAt: "12/23/2018" }, +{ _id: 202, firstName: "Marlo", lastName: "Papa", email: "mpapa5l@mac.com", gender: "Female", ip_address: "105.19.114.179", createdAt: "7/19/2018" }, +{ _id: 203, firstName: "Darcey", lastName: "Hryskiewicz", email: "dhryskiewicz5m@mail.ru", gender: "Female", ip_address: "52.6.126.106", createdAt: "12/21/2018" }, +{ _id: 204, firstName: "Magdaia", lastName: "Collidge", email: "mcollidge5n@blog.com", gender: "Female", ip_address: "188.188.181.188", createdAt: "1/18/2019" }, +{ _id: 205, firstName: "Annabal", lastName: "Meneer", email: "ameneer5o@ca.gov", gender: "Female", ip_address: "208.222.254.238", createdAt: "1/27/2019" }, +{ _id: 206, firstName: "Richard", lastName: "Hemmingway", email: "rhemmingway5p@amazon.com", gender: "Male", ip_address: "242.104.19.22", createdAt: "4/13/2018" }, +{ _id: 207, firstName: "Xaviera", lastName: "Golby", email: "xgolby5q@nifty.com", gender: "Female", ip_address: "97.110.223.81", createdAt: "6/10/2018" }, +{ _id: 208, firstName: "Kermie", lastName: "Melly", email: "kmelly5r@technorati.com", gender: "Male", ip_address: "220.25.171.121", createdAt: "11/17/2018" }, +{ _id: 209, firstName: "Birk", lastName: "Crush", email: "bcrush5s@yale.edu", gender: "Male", ip_address: "212.212.176.18", createdAt: "11/24/2018" }, +{ _id: 210, firstName: "Nettie", lastName: "Estcourt", email: "nestcourt5t@w3.org", gender: "Female", ip_address: "213.209.1.57", createdAt: "7/4/2018" }, +{ _id: 211, firstName: "Demott", lastName: "Fermin", email: "dfermin5u@uol.com.br", gender: "Male", ip_address: "228.169.23.6", createdAt: "9/13/2018" }, +{ _id: 212, firstName: "Madelyn", lastName: "Bartkowiak", email: "mbartkowiak5v@hostgator.com", gender: "Female", ip_address: "3.182.126.242", createdAt: "10/8/2018" }, +{ _id: 213, firstName: "Isaak", lastName: "Draycott", email: "idraycott5w@oaic.gov.au", gender: "Male", ip_address: "24.15.87.178", createdAt: "6/12/2018" }, +{ _id: 214, firstName: "Willdon", lastName: "Trouncer", email: "wtrouncer5x@twitpic.com", gender: "Male", ip_address: "200.243.79.216", createdAt: "5/26/2018" }, +{ _id: 215, firstName: "Ruddie", lastName: "Breukelman", email: "rbreukelman5y@prlog.org", gender: "Male", ip_address: "18.6.223.172", createdAt: "5/28/2018" }, +{ _id: 216, firstName: "Jeralee", lastName: "Tidcombe", email: "jtidcombe5z@cargocollective.com", gender: "Female", ip_address: "209.87.221.215", createdAt: "6/1/2018" }, +{ _id: 217, firstName: "Tripp", lastName: "Van den Dael", email: "tvandendael60@berkeley.edu", gender: "Male", ip_address: "100.250.44.105", createdAt: "12/1/2018" }, +{ _id: 218, firstName: "Bree", lastName: "Holworth", email: "bholworth61@hhs.gov", gender: "Female", ip_address: "243.48.253.86", createdAt: "1/9/2019" }, +{ _id: 219, firstName: "Zorine", lastName: "Matys", email: "zmatys62@latimes.com", gender: "Female", ip_address: "73.245.137.89", createdAt: "7/5/2018" }, +{ _id: 220, firstName: "Annaliese", lastName: "Piele", email: "apiele63@utexas.edu", gender: "Female", ip_address: "220.92.169.71", createdAt: "10/15/2018" }, +{ _id: 221, firstName: "Ewell", lastName: "Hendrikse", email: "ehendrikse64@wikia.com", gender: "Male", ip_address: "197.19.215.162", createdAt: "2/20/2018" }, +{ _id: 222, firstName: "Shurlocke", lastName: "Dommett", email: "sdommett65@over-blog.com", gender: "Male", ip_address: "181.220.10.132", createdAt: "3/10/2018" }, +{ _id: 223, firstName: "Stephani", lastName: "Livings", email: "slivings66@jalbum.net", gender: "Female", ip_address: "0.42.36.236", createdAt: "9/5/2018" }, +{ _id: 224, firstName: "Harriett", lastName: "Bickerdike", email: "hbickerdike67@networkadvertising.org", gender: "Female", ip_address: "240.192.20.243", createdAt: "7/4/2018" }, +{ _id: 225, firstName: "Shaylyn", lastName: "Forsdicke", email: "sforsdicke68@gravatar.com", gender: "Female", ip_address: "191.196.65.145", createdAt: "12/11/2018" }, +{ _id: 226, firstName: "Burch", lastName: "Rablen", email: "brablen69@narod.ru", gender: "Male", ip_address: "34.170.240.164", createdAt: "8/30/2018" }, +{ _id: 227, firstName: "Owen", lastName: "Elion", email: "oelion6a@soundcloud.com", gender: "Male", ip_address: "175.4.251.88", createdAt: "6/9/2018" }, +{ _id: 228, firstName: "Marietta", lastName: "Mudie", email: "mmudie6b@bloglovin.com", gender: "Male", ip_address: "21.73.85.15", createdAt: "10/31/2018" }, +{ _id: 229, firstName: "Rani", lastName: "McGillreich", email: "rmcgillreich6c@cbc.ca", gender: "Female", ip_address: "129.110.199.162", createdAt: "7/20/2018" }, +{ _id: 230, firstName: "Garner", lastName: "Cannavan", email: "gcannavan6d@youku.com", gender: "Male", ip_address: "176.121.1.219", createdAt: "3/3/2018" }, +{ _id: 231, firstName: "Burl", lastName: "Carrier", email: "bcarrier6e@wikipedia.org", gender: "Male", ip_address: "35.47.163.234", createdAt: "3/4/2018" }, +{ _id: 232, firstName: "Lucien", lastName: "Haysman", email: "lhaysman6f@yandex.ru", gender: "Male", ip_address: "26.229.155.35", createdAt: "3/10/2018" }, +{ _id: 233, firstName: "Lorinda", lastName: "Gradley", email: "lgradley6g@geocities.com", gender: "Female", ip_address: "3.80.173.110", createdAt: "7/24/2018" }, +{ _id: 234, firstName: "Rania", lastName: "Brolechan", email: "rbrolechan6h@51.la", gender: "Female", ip_address: "67.95.3.198", createdAt: "1/6/2019" }, +{ _id: 235, firstName: "Earlie", lastName: "Attenborough", email: "eattenborough6i@hibu.com", gender: "Male", ip_address: "137.131.154.195", createdAt: "7/25/2018" }, +{ _id: 236, firstName: "Lainey", lastName: "Cousans", email: "lcousans6j@yahoo.co.jp", gender: "Female", ip_address: "236.38.249.192", createdAt: "6/10/2018" }, +{ _id: 237, firstName: "Zebadiah", lastName: "Creamer", email: "zcreamer6k@joomla.org", gender: "Male", ip_address: "187.132.52.249", createdAt: "1/16/2019" }, +{ _id: 238, firstName: "Lexis", lastName: "Cansdall", email: "lcansdall6l@howstuffworks.com", gender: "Female", ip_address: "196.213.76.211", createdAt: "4/26/2018" }, +{ _id: 239, firstName: "Kitti", lastName: "Maith", email: "kmaith6m@bloomberg.com", gender: "Female", ip_address: "189.69.121.75", createdAt: "6/18/2018" }, +{ _id: 240, firstName: "Ario", lastName: "Loadsman", email: "aloadsman6n@icio.us", gender: "Male", ip_address: "242.201.14.16", createdAt: "8/19/2018" }, +{ _id: 241, firstName: "Tate", lastName: "Uccelli", email: "tuccelli6o@who.int", gender: "Male", ip_address: "56.156.115.146", createdAt: "11/25/2018" }, +{ _id: 242, firstName: "Burnard", lastName: "Popescu", email: "bpopescu6p@cisco.com", gender: "Male", ip_address: "205.200.190.137", createdAt: "6/8/2018" }, +{ _id: 243, firstName: "Phillip", lastName: "Huffadine", email: "phuffadine6q@51.la", gender: "Male", ip_address: "221.219.212.171", createdAt: "8/24/2018" }, +{ _id: 244, firstName: "Jeremiah", lastName: "Copson", email: "jcopson6r@amazon.co.uk", gender: "Male", ip_address: "124.154.75.18", createdAt: "2/16/2018" }, +{ _id: 245, firstName: "Hartley", lastName: "Siehard", email: "hsiehard6s@imgur.com", gender: "Male", ip_address: "5.1.33.108", createdAt: "11/7/2018" }, +{ _id: 246, firstName: "Chandal", lastName: "Gedge", email: "cgedge6t@ed.gov", gender: "Female", ip_address: "205.159.36.138", createdAt: "12/6/2018" }, +{ _id: 247, firstName: "Geri", lastName: "Whether", email: "gwhether6u@xrea.com", gender: "Male", ip_address: "203.204.144.224", createdAt: "11/2/2018" }, +{ _id: 248, firstName: "Shaine", lastName: "Goodhay", email: "sgoodhay6v@drupal.org", gender: "Male", ip_address: "155.118.94.61", createdAt: "12/1/2018" }, +{ _id: 249, firstName: "Yankee", lastName: "Sheldrick", email: "ysheldrick6w@nhs.uk", gender: "Male", ip_address: "15.177.105.179", createdAt: "8/26/2018" }, +{ _id: 250, firstName: "Lynett", lastName: "Swires", email: "lswires6x@mlb.com", gender: "Female", ip_address: "92.214.194.235", createdAt: "1/2/2019" }, +{ _id: 251, firstName: "Edwina", lastName: "Archbould", email: "earchbould6y@hibu.com", gender: "Female", ip_address: "40.65.93.157", createdAt: "4/24/2018" }, +{ _id: 252, firstName: "Dani", lastName: "Brigginshaw", email: "dbrigginshaw6z@gravatar.com", gender: "Female", ip_address: "75.198.59.210", createdAt: "12/2/2018" }, +{ _id: 253, firstName: "Hazel", lastName: "Northridge", email: "hnorthridge70@tinypic.com", gender: "Male", ip_address: "209.45.110.3", createdAt: "11/4/2018" }, +{ _id: 254, firstName: "Carie", lastName: "Danielsohn", email: "cdanielsohn71@sakura.ne.jp", gender: "Female", ip_address: "181.186.29.245", createdAt: "11/19/2018" }, +{ _id: 255, firstName: "Ralina", lastName: "Downham", email: "rdownham72@blog.com", gender: "Female", ip_address: "156.97.55.157", createdAt: "7/29/2018" }, +{ _id: 256, firstName: "Oren", lastName: "Gerritzen", email: "ogerritzen73@people.com.cn", gender: "Male", ip_address: "25.74.152.189", createdAt: "11/1/2018" }, +{ _id: 257, firstName: "Orv", lastName: "Thurstan", email: "othurstan74@nymag.com", gender: "Male", ip_address: "65.241.1.103", createdAt: "12/27/2018" }, +{ _id: 258, firstName: "Jaquenette", lastName: "Storm", email: "jstorm75@dion.ne.jp", gender: "Female", ip_address: "200.52.231.123", createdAt: "9/30/2018" }, +{ _id: 259, firstName: "Ricoriki", lastName: "Watmore", email: "rwatmore76@123-reg.co.uk", gender: "Male", ip_address: "74.212.6.186", createdAt: "1/8/2019" }, +{ _id: 260, firstName: "Anne", lastName: "Jouanot", email: "ajouanot77@skype.com", gender: "Female", ip_address: "91.166.230.20", createdAt: "6/16/2018" }, +{ _id: 261, firstName: "Caresa", lastName: "Stapford", email: "cstapford78@hostgator.com", gender: "Female", ip_address: "174.11.65.248", createdAt: "9/2/2018" }, +{ _id: 262, firstName: "Isaiah", lastName: "Ardron", email: "iardron79@slashdot.org", gender: "Male", ip_address: "234.82.189.71", createdAt: "8/8/2018" }, +{ _id: 263, firstName: "Willa", lastName: "Dalwood", email: "wdalwood7a@dion.ne.jp", gender: "Female", ip_address: "31.90.160.231", createdAt: "12/1/2018" }, +{ _id: 264, firstName: "Kevina", lastName: "Casaletto", email: "kcasaletto7b@cbc.ca", gender: "Female", ip_address: "91.125.74.77", createdAt: "9/26/2018" }, +{ _id: 265, firstName: "Vincents", lastName: "Ondrak", email: "vondrak7c@ft.com", gender: "Male", ip_address: "180.168.241.117", createdAt: "7/3/2018" }, +{ _id: 266, firstName: "Korry", lastName: "Rase", email: "krase7d@ovh.net", gender: "Female", ip_address: "200.199.146.243", createdAt: "1/13/2019" }, +{ _id: 267, firstName: "Linnie", lastName: "Hallor", email: "lhallor7e@stanford.edu", gender: "Female", ip_address: "38.167.214.5", createdAt: "4/19/2018" }, +{ _id: 268, firstName: "Whitney", lastName: "Piele", email: "wpiele7f@google.ca", gender: "Male", ip_address: "12.48.126.49", createdAt: "8/4/2018" }, +{ _id: 269, firstName: "Leora", lastName: "Andree", email: "landree7g@goo.gl", gender: "Female", ip_address: "95.251.248.147", createdAt: "11/16/2018" }, +{ _id: 270, firstName: "Kinna", lastName: "Shellcross", email: "kshellcross7h@com.com", gender: "Female", ip_address: "132.235.238.183", createdAt: "5/11/2018" }, +{ _id: 271, firstName: "Shela", lastName: "Altoft", email: "saltoft7i@addtoany.com", gender: "Female", ip_address: "22.146.145.147", createdAt: "8/25/2018" }, +{ _id: 272, firstName: "Beniamino", lastName: "Elner", email: "belner7j@xrea.com", gender: "Male", ip_address: "208.139.81.75", createdAt: "3/25/2018" }, +{ _id: 273, firstName: "Kylynn", lastName: "Whitcomb", email: "kwhitcomb7k@sourceforge.net", gender: "Female", ip_address: "117.102.175.205", createdAt: "7/9/2018" }, +{ _id: 274, firstName: "Cherice", lastName: "Titcumb", email: "ctitcumb7l@jugem.jp", gender: "Female", ip_address: "70.171.175.3", createdAt: "3/26/2018" }, +{ _id: 275, firstName: "Penny", lastName: "Cogger", email: "pcogger7m@auda.org.au", gender: "Female", ip_address: "151.93.144.35", createdAt: "9/18/2018" }, +{ _id: 276, firstName: "Constantine", lastName: "Chislett", email: "cchislett7n@ucoz.ru", gender: "Female", ip_address: "191.88.224.80", createdAt: "7/21/2018" }, +{ _id: 277, firstName: "Catharine", lastName: "Emloch", email: "cemloch7o@marketwatch.com", gender: "Female", ip_address: "41.54.28.251", createdAt: "2/23/2018" }, +{ _id: 278, firstName: "Wyn", lastName: "Gladdish", email: "wgladdish7p@networkadvertising.org", gender: "Male", ip_address: "88.225.239.29", createdAt: "9/26/2018" }, +{ _id: 279, firstName: "Janean", lastName: "Delahunt", email: "jdelahunt7q@virginia.edu", gender: "Female", ip_address: "148.27.218.55", createdAt: "9/10/2018" }, +{ _id: 280, firstName: "Rex", lastName: "Follen", email: "rfollen7r@bloglovin.com", gender: "Male", ip_address: "175.112.186.152", createdAt: "4/18/2018" }, +{ _id: 281, firstName: "Tory", lastName: "Winsom", email: "twinsom7s@desdev.cn", gender: "Female", ip_address: "169.6.12.226", createdAt: "12/2/2018" }, +{ _id: 282, firstName: "Ferrel", lastName: "Harcombe", email: "fharcombe7t@prnewswire.com", gender: "Male", ip_address: "118.108.129.81", createdAt: "10/14/2018" }, +{ _id: 283, firstName: "Hewie", lastName: "Schubuser", email: "hschubuser7u@craigslist.org", gender: "Male", ip_address: "112.118.141.60", createdAt: "8/16/2018" }, +{ _id: 284, firstName: "Faustina", lastName: "Insoll", email: "finsoll7v@gmpg.org", gender: "Female", ip_address: "53.172.162.190", createdAt: "2/1/2019" }, +{ _id: 285, firstName: "Lon", lastName: "Inman", email: "linman7w@wunderground.com", gender: "Male", ip_address: "142.182.235.212", createdAt: "12/4/2018" }, +{ _id: 286, firstName: "Constancy", lastName: "Staresmeare", email: "cstaresmeare7x@fastcompany.com", gender: "Female", ip_address: "81.16.164.167", createdAt: "11/3/2018" }, +{ _id: 287, firstName: "June", lastName: "Pic", email: "jpic7y@harvard.edu", gender: "Female", ip_address: "179.155.130.9", createdAt: "7/11/2018" }, +{ _id: 288, firstName: "Conroy", lastName: "Delete", email: "cdelete7z@squidoo.com", gender: "Male", ip_address: "180.192.61.254", createdAt: "7/20/2018" }, +{ _id: 289, firstName: "Sibylle", lastName: "Stebbin", email: "sstebbin80@arstechnica.com", gender: "Female", ip_address: "57.169.10.93", createdAt: "12/31/2018" }, +{ _id: 290, firstName: "Antoni", lastName: "Le Noire", email: "alenoire81@hc360.com", gender: "Male", ip_address: "143.116.166.187", createdAt: "9/26/2018" }, +{ _id: 291, firstName: "Leyla", lastName: "Corrin", email: "lcorrin82@apple.com", gender: "Female", ip_address: "219.64.209.249", createdAt: "5/24/2018" }, +{ _id: 292, firstName: "Fanechka", lastName: "Seekings", email: "fseekings83@ovh.net", gender: "Female", ip_address: "100.141.189.19", createdAt: "4/1/2018" }, +{ _id: 293, firstName: "Kelcie", lastName: "De Launde", email: "kdelaunde84@noaa.gov", gender: "Female", ip_address: "237.55.167.72", createdAt: "3/25/2018" }, +{ _id: 294, firstName: "Ash", lastName: "Lancaster", email: "alancaster85@over-blog.com", gender: "Male", ip_address: "204.53.136.46", createdAt: "8/8/2018" }, +{ _id: 295, firstName: "Ysabel", lastName: "Petrazzi", email: "ypetrazzi86@microsoft.com", gender: "Female", ip_address: "6.156.203.237", createdAt: "5/13/2018" }, +{ _id: 296, firstName: "Alick", lastName: "Saggs", email: "asaggs87@yolasite.com", gender: "Male", ip_address: "150.52.74.147", createdAt: "3/30/2018" }, +{ _id: 297, firstName: "Packston", lastName: "Farlham", email: "pfarlham88@webs.com", gender: "Male", ip_address: "246.105.30.243", createdAt: "6/16/2018" }, +{ _id: 298, firstName: "Amye", lastName: "Osbidston", email: "aosbidston89@bloomberg.com", gender: "Female", ip_address: "10.64.117.175", createdAt: "7/7/2018" }, +{ _id: 299, firstName: "Michael", lastName: "Isaksson", email: "misaksson8a@nyu.edu", gender: "Male", ip_address: "114.116.248.150", createdAt: "6/19/2018" }, +{ _id: 300, firstName: "Brock", lastName: "Venable", email: "bvenable8b@blogtalkradio.com", gender: "Male", ip_address: "184.204.184.221", createdAt: "6/11/2018" }, +{ _id: 301, firstName: "Timothy", lastName: "McArt", email: "tmcart8c@amazon.co.uk", gender: "Male", ip_address: "121.152.149.110", createdAt: "1/20/2019" }, +{ _id: 302, firstName: "Balduin", lastName: "Oehme", email: "boehme8d@chronoengine.com", gender: "Male", ip_address: "154.86.187.136", createdAt: "3/23/2018" }, +{ _id: 303, firstName: "Esmaria", lastName: "Andreoletti", email: "eandreoletti8e@archive.org", gender: "Female", ip_address: "207.151.255.219", createdAt: "2/18/2018" }, +{ _id: 304, firstName: "Adolphe", lastName: "Tzuker", email: "atzuker8f@google.es", gender: "Male", ip_address: "102.209.163.45", createdAt: "6/18/2018" }, +{ _id: 305, firstName: "Jorry", lastName: "Laurent", email: "jlaurent8g@flickr.com", gender: "Female", ip_address: "19.13.120.39", createdAt: "9/9/2018" }, +{ _id: 306, firstName: "Tedmund", lastName: "Biggadike", email: "tbiggadike8h@nydailynews.com", gender: "Male", ip_address: "218.170.192.119", createdAt: "4/8/2018" }, +{ _id: 307, firstName: "Deeyn", lastName: "Course", email: "dcourse8i@phpbb.com", gender: "Female", ip_address: "157.240.235.209", createdAt: "5/20/2018" }, +{ _id: 308, firstName: "Sarine", lastName: "Edsall", email: "sedsall8j@ox.ac.uk", gender: "Female", ip_address: "34.47.94.118", createdAt: "3/10/2018" }, +{ _id: 309, firstName: "Manya", lastName: "Jopson", email: "mjopson8k@nasa.gov", gender: "Female", ip_address: "214.82.20.32", createdAt: "10/2/2018" }, +{ _id: 310, firstName: "Viole", lastName: "McGibbon", email: "vmcgibbon8l@yahoo.co.jp", gender: "Female", ip_address: "205.39.158.77", createdAt: "7/5/2018" }, +{ _id: 311, firstName: "Corrianne", lastName: "Matterface", email: "cmatterface8m@cornell.edu", gender: "Female", ip_address: "45.115.177.8", createdAt: "6/11/2018" }, +{ _id: 312, firstName: "Karlyn", lastName: "Vallentine", email: "kvallentine8n@go.com", gender: "Female", ip_address: "185.142.241.232", createdAt: "5/14/2018" }, +{ _id: 313, firstName: "Shanan", lastName: "Gartin", email: "sgartin8o@drupal.org", gender: "Male", ip_address: "179.213.134.201", createdAt: "7/30/2018" }, +{ _id: 314, firstName: "Stanwood", lastName: "Cothey", email: "scothey8p@soup.io", gender: "Male", ip_address: "114.252.95.133", createdAt: "5/7/2018" }, +{ _id: 315, firstName: "Devin", lastName: "Petruska", email: "dpetruska8q@dmoz.org", gender: "Male", ip_address: "175.2.243.167", createdAt: "5/14/2018" }, +{ _id: 316, firstName: "Celeste", lastName: "Altamirano", email: "caltamirano8r@amazon.co.uk", gender: "Female", ip_address: "149.63.177.185", createdAt: "8/30/2018" }, +{ _id: 317, firstName: "Stephan", lastName: "Habeshaw", email: "shabeshaw8s@edublogs.org", gender: "Male", ip_address: "55.131.172.236", createdAt: "3/11/2018" }, +{ _id: 318, firstName: "Sarajane", lastName: "McUre", email: "smcure8t@artisteer.com", gender: "Female", ip_address: "0.168.125.79", createdAt: "7/22/2018" }, +{ _id: 319, firstName: "Arthur", lastName: "Petkens", email: "apetkens8u@163.com", gender: "Male", ip_address: "81.246.42.184", createdAt: "5/23/2018" }, +{ _id: 320, firstName: "Shaylynn", lastName: "Dur", email: "sdur8v@washington.edu", gender: "Female", ip_address: "97.38.220.0", createdAt: "6/26/2018" }, +{ _id: 321, firstName: "Yalonda", lastName: "Strute", email: "ystrute8w@wix.com", gender: "Female", ip_address: "54.228.42.209", createdAt: "5/26/2018" }, +{ _id: 322, firstName: "Fielding", lastName: "Thurlbeck", email: "fthurlbeck8x@altervista.org", gender: "Male", ip_address: "238.159.230.177", createdAt: "7/9/2018" }, +{ _id: 323, firstName: "Debee", lastName: "Lottrington", email: "dlottrington8y@vimeo.com", gender: "Female", ip_address: "86.186.149.190", createdAt: "2/10/2019" }, +{ _id: 324, firstName: "Rudolf", lastName: "Troth", email: "rtroth8z@dell.com", gender: "Male", ip_address: "79.33.214.9", createdAt: "1/2/2019" }, +{ _id: 325, firstName: "Alena", lastName: "Wille", email: "awille90@spotify.com", gender: "Female", ip_address: "25.116.190.235", createdAt: "1/28/2019" }, +{ _id: 326, firstName: "Valene", lastName: "Goublier", email: "vgoublier91@altervista.org", gender: "Female", ip_address: "56.123.144.124", createdAt: "6/14/2018" }, +{ _id: 327, firstName: "Cristina", lastName: "Carbett", email: "ccarbett92@yahoo.co.jp", gender: "Female", ip_address: "44.56.230.195", createdAt: "5/3/2018" }, +{ _id: 328, firstName: "Renado", lastName: "Brounfield", email: "rbrounfield93@wikipedia.org", gender: "Male", ip_address: "238.48.234.251", createdAt: "5/3/2018" }, +{ _id: 329, firstName: "Kettie", lastName: "Buckingham", email: "kbuckingham94@usatoday.com", gender: "Female", ip_address: "174.195.69.55", createdAt: "3/2/2018" }, +{ _id: 330, firstName: "Stephan", lastName: "Le Claire", email: "sleclaire95@wikimedia.org", gender: "Male", ip_address: "239.27.238.34", createdAt: "9/19/2018" }, +{ _id: 331, firstName: "Jeri", lastName: "Chritchlow", email: "jchritchlow96@issuu.com", gender: "Female", ip_address: "95.41.86.132", createdAt: "4/15/2018" }, +{ _id: 332, firstName: "Jonie", lastName: "Meagher", email: "jmeagher97@umn.edu", gender: "Female", ip_address: "150.47.61.203", createdAt: "11/3/2018" }, +{ _id: 333, firstName: "Bevin", lastName: "Caneo", email: "bcaneo98@economist.com", gender: "Male", ip_address: "39.249.62.75", createdAt: "5/7/2018" }, +{ _id: 334, firstName: "Dale", lastName: "Martlew", email: "dmartlew99@mtv.com", gender: "Male", ip_address: "97.27.253.37", createdAt: "7/20/2018" }, +{ _id: 335, firstName: "Tara", lastName: "Scouler", email: "tscouler9a@slideshare.net", gender: "Female", ip_address: "185.63.191.122", createdAt: "6/19/2018" }, +{ _id: 336, firstName: "Lenard", lastName: "Koomar", email: "lkoomar9b@parallels.com", gender: "Male", ip_address: "219.64.47.90", createdAt: "7/8/2018" }, +{ _id: 337, firstName: "Nick", lastName: "Henrie", email: "nhenrie9c@simplemachines.org", gender: "Male", ip_address: "64.146.233.137", createdAt: "2/8/2019" }, +{ _id: 338, firstName: "Falito", lastName: "Monro", email: "fmonro9d@gmpg.org", gender: "Male", ip_address: "160.253.11.243", createdAt: "1/22/2019" }, +{ _id: 339, firstName: "Chrysler", lastName: "Smale", email: "csmale9e@admin.ch", gender: "Female", ip_address: "4.228.5.228", createdAt: "11/11/2018" }, +{ _id: 340, firstName: "Codi", lastName: "Dolling", email: "cdolling9f@dagondesign.com", gender: "Male", ip_address: "247.160.36.75", createdAt: "4/16/2018" }, +{ _id: 341, firstName: "Clarance", lastName: "Pafford", email: "cpafford9g@blogs.com", gender: "Male", ip_address: "129.208.11.176", createdAt: "7/30/2018" }, +{ _id: 342, firstName: "Mauricio", lastName: "Velte", email: "mvelte9h@surveymonkey.com", gender: "Male", ip_address: "126.190.24.93", createdAt: "7/24/2018" }, +{ _id: 343, firstName: "Danni", lastName: "Cyphus", email: "dcyphus9i@oakley.com", gender: "Female", ip_address: "61.76.95.88", createdAt: "12/13/2018" }, +{ _id: 344, firstName: "Lorrayne", lastName: "Ivy", email: "livy9j@time.com", gender: "Female", ip_address: "166.47.91.253", createdAt: "3/28/2018" }, +{ _id: 345, firstName: "Danita", lastName: "Goburn", email: "dgoburn9k@berkeley.edu", gender: "Female", ip_address: "204.52.198.124", createdAt: "2/13/2018" }, +{ _id: 346, firstName: "Dorri", lastName: "Berceros", email: "dberceros9l@google.it", gender: "Female", ip_address: "146.58.19.22", createdAt: "12/20/2018" }, +{ _id: 347, firstName: "Deb", lastName: "Lermit", email: "dlermit9m@earthlink.net", gender: "Female", ip_address: "209.43.202.109", createdAt: "5/23/2018" }, +{ _id: 348, firstName: "Darrell", lastName: "Ritmeyer", email: "dritmeyer9n@themeforest.net", gender: "Male", ip_address: "68.48.24.114", createdAt: "4/22/2018" }, +{ _id: 349, firstName: "Leshia", lastName: "Haddock", email: "lhaddock9o@scribd.com", gender: "Female", ip_address: "151.179.240.196", createdAt: "10/1/2018" }, +{ _id: 350, firstName: "Catlin", lastName: "Yardy", email: "cyardy9p@toplist.cz", gender: "Female", ip_address: "130.250.111.155", createdAt: "3/18/2018" }, +{ _id: 351, firstName: "Thornton", lastName: "Derle", email: "tderle9q@webeden.co.uk", gender: "Male", ip_address: "70.223.38.177", createdAt: "1/11/2019" }, +{ _id: 352, firstName: "Jess", lastName: "Elvey", email: "jelvey9r@umn.edu", gender: "Male", ip_address: "37.4.227.164", createdAt: "3/14/2018" }, +{ _id: 353, firstName: "Zane", lastName: "Hazeup", email: "zhazeup9s@themeforest.net", gender: "Male", ip_address: "252.79.150.109", createdAt: "3/19/2018" }, +{ _id: 354, firstName: "Rabi", lastName: "Hellier", email: "rhellier9t@a8.net", gender: "Male", ip_address: "207.224.57.3", createdAt: "10/21/2018" }, +{ _id: 355, firstName: "Ardine", lastName: "MacBey", email: "amacbey9u@newyorker.com", gender: "Female", ip_address: "87.44.136.199", createdAt: "8/3/2018" }, +{ _id: 356, firstName: "Carver", lastName: "Pohls", email: "cpohls9v@ycombinator.com", gender: "Male", ip_address: "33.122.202.100", createdAt: "12/24/2018" }, +{ _id: 357, firstName: "Yettie", lastName: "McCaughran", email: "ymccaughran9w@studiopress.com", gender: "Female", ip_address: "59.1.194.221", createdAt: "11/30/2018" }, +{ _id: 358, firstName: "Leigh", lastName: "Goude", email: "lgoude9x@hud.gov", gender: "Male", ip_address: "101.61.114.9", createdAt: "12/27/2018" }, +{ _id: 359, firstName: "Cornell", lastName: "Deetlefs", email: "cdeetlefs9y@patch.com", gender: "Male", ip_address: "218.146.63.25", createdAt: "9/26/2018" }, +{ _id: 360, firstName: "Shelley", lastName: "Mattersey", email: "smattersey9z@toplist.cz", gender: "Female", ip_address: "48.253.233.190", createdAt: "12/9/2018" }, +{ _id: 361, firstName: "Augy", lastName: "Schettini", email: "aschettinia0@tripadvisor.com", gender: "Male", ip_address: "177.240.151.242", createdAt: "1/16/2019" }, +{ _id: 362, firstName: "Kean", lastName: "Browse", email: "kbrowsea1@paypal.com", gender: "Male", ip_address: "208.231.159.48", createdAt: "11/3/2018" }, +{ _id: 363, firstName: "Gay", lastName: "Pentecust", email: "gpentecusta2@parallels.com", gender: "Male", ip_address: "88.56.113.120", createdAt: "7/2/2018" }, +{ _id: 364, firstName: "Damaris", lastName: "Brant", email: "dbranta3@unblog.fr", gender: "Female", ip_address: "153.27.156.58", createdAt: "1/25/2019" }, +{ _id: 365, firstName: "Jessika", lastName: "Edmons", email: "jedmonsa4@ask.com", gender: "Female", ip_address: "130.209.194.85", createdAt: "8/1/2018" }, +{ _id: 366, firstName: "Jermain", lastName: "Allenson", email: "jallensona5@wunderground.com", gender: "Male", ip_address: "119.91.91.206", createdAt: "1/9/2019" }, +{ _id: 367, firstName: "Wallie", lastName: "Toffanini", email: "wtoffaninia6@naver.com", gender: "Female", ip_address: "96.225.164.36", createdAt: "1/16/2019" }, +{ _id: 368, firstName: "Lorilyn", lastName: "Pizer", email: "lpizera7@newsvine.com", gender: "Female", ip_address: "253.6.5.93", createdAt: "8/23/2018" }, +{ _id: 369, firstName: "Daniela", lastName: "Slowan", email: "dslowana8@biglobe.ne.jp", gender: "Female", ip_address: "89.110.112.8", createdAt: "11/4/2018" }, +{ _id: 370, firstName: "Madlen", lastName: "Laugheran", email: "mlaugherana9@wired.com", gender: "Female", ip_address: "196.112.233.167", createdAt: "5/21/2018" }, +{ _id: 371, firstName: "Mallissa", lastName: "Souley", email: "msouleyaa@quantcast.com", gender: "Female", ip_address: "117.58.184.172", createdAt: "5/27/2018" }, +{ _id: 372, firstName: "Babita", lastName: "Whitehurst", email: "bwhitehurstab@list-manage.com", gender: "Female", ip_address: "192.41.220.143", createdAt: "8/18/2018" }, +{ _id: 373, firstName: "Krispin", lastName: "Jane", email: "kjaneac@tinyurl.com", gender: "Male", ip_address: "156.65.75.108", createdAt: "8/2/2018" }, +{ _id: 374, firstName: "Marji", lastName: "Prinnett", email: "mprinnettad@xrea.com", gender: "Female", ip_address: "209.133.81.56", createdAt: "10/1/2018" }, +{ _id: 375, firstName: "Paddie", lastName: "Bake", email: "pbakeae@weebly.com", gender: "Male", ip_address: "12.230.125.106", createdAt: "5/13/2018" }, +{ _id: 376, firstName: "Sharlene", lastName: "Heintsch", email: "sheintschaf@webnode.com", gender: "Female", ip_address: "90.156.150.3", createdAt: "5/17/2018" }, +{ _id: 377, firstName: "Joann", lastName: "Middas", email: "jmiddasag@tripadvisor.com", gender: "Female", ip_address: "110.15.88.50", createdAt: "5/1/2018" }, +{ _id: 378, firstName: "Gradeigh", lastName: "Badcock", email: "gbadcockah@creativecommons.org", gender: "Male", ip_address: "214.201.152.191", createdAt: "11/15/2018" }, +{ _id: 379, firstName: "Easter", lastName: "Courtese", email: "ecourteseai@discuz.net", gender: "Female", ip_address: "137.175.100.140", createdAt: "2/26/2018" }, +{ _id: 380, firstName: "Wit", lastName: "Karolewski", email: "wkarolewskiaj@cyberchimps.com", gender: "Male", ip_address: "217.251.122.128", createdAt: "11/28/2018" }, +{ _id: 381, firstName: "Marcos", lastName: "Ruslinge", email: "mruslingeak@google.ru", gender: "Male", ip_address: "64.82.217.54", createdAt: "6/18/2018" }, +{ _id: 382, firstName: "Car", lastName: "Pavek", email: "cpavekal@hao123.com", gender: "Male", ip_address: "58.3.29.26", createdAt: "11/2/2018" }, +{ _id: 383, firstName: "Preston", lastName: "Search", email: "psearcham@themeforest.net", gender: "Male", ip_address: "105.32.187.49", createdAt: "6/28/2018" }, +{ _id: 384, firstName: "Codee", lastName: "Defond", email: "cdefondan@walmart.com", gender: "Female", ip_address: "78.52.209.68", createdAt: "7/9/2018" }, +{ _id: 385, firstName: "Rica", lastName: "Borchardt", email: "rborchardtao@example.com", gender: "Female", ip_address: "157.88.153.238", createdAt: "10/21/2018" }, +{ _id: 386, firstName: "Shae", lastName: "Gantzer", email: "sgantzerap@friendfeed.com", gender: "Female", ip_address: "22.188.128.53", createdAt: "9/17/2018" }, +{ _id: 387, firstName: "Edsel", lastName: "Iowarch", email: "eiowarchaq@chron.com", gender: "Male", ip_address: "132.102.39.95", createdAt: "3/10/2018" }, +{ _id: 388, firstName: "Sumner", lastName: "Pengelley", email: "spengelleyar@nifty.com", gender: "Male", ip_address: "38.90.148.48", createdAt: "8/2/2018" }, +{ _id: 389, firstName: "Keeley", lastName: "Wrey", email: "kwreyas@cyberchimps.com", gender: "Female", ip_address: "168.149.107.190", createdAt: "9/25/2018" }, +{ _id: 390, firstName: "Leelah", lastName: "Moir", email: "lmoirat@a8.net", gender: "Female", ip_address: "5.219.161.5", createdAt: "4/14/2018" }, +{ _id: 391, firstName: "Antonetta", lastName: "Mathan", email: "amathanau@goodreads.com", gender: "Female", ip_address: "214.217.155.196", createdAt: "1/18/2019" }, +{ _id: 392, firstName: "Aryn", lastName: "Hogbin", email: "ahogbinav@weather.com", gender: "Female", ip_address: "141.213.86.7", createdAt: "12/29/2018" }, +{ _id: 393, firstName: "Linea", lastName: "Windmill", email: "lwindmillaw@plala.or.jp", gender: "Female", ip_address: "22.230.53.238", createdAt: "2/20/2018" }, +{ _id: 394, firstName: "Hilliard", lastName: "Solesbury", email: "hsolesburyax@hubpages.com", gender: "Male", ip_address: "156.136.115.115", createdAt: "4/14/2018" }, +{ _id: 395, firstName: "Annmaria", lastName: "Rubinsky", email: "arubinskyay@cloudflare.com", gender: "Female", ip_address: "88.81.44.168", createdAt: "1/27/2019" }, +{ _id: 396, firstName: "Fonsie", lastName: "Malan", email: "fmalanaz@tuttocitta.it", gender: "Male", ip_address: "192.195.141.211", createdAt: "12/18/2018" }, +{ _id: 397, firstName: "Karel", lastName: "Wiggins", email: "kwigginsb0@github.io", gender: "Male", ip_address: "138.126.248.249", createdAt: "3/19/2018" }, +{ _id: 398, firstName: "Bethany", lastName: "Hinkes", email: "bhinkesb1@imageshack.us", gender: "Female", ip_address: "126.79.88.10", createdAt: "3/30/2018" }, +{ _id: 399, firstName: "Wells", lastName: "Cullimore", email: "wcullimoreb2@exblog.jp", gender: "Male", ip_address: "50.231.163.247", createdAt: "8/23/2018" }, +{ _id: 400, firstName: "Claresta", lastName: "Hambatch", email: "chambatchb3@privacy.gov.au", gender: "Female", ip_address: "125.225.234.42", createdAt: "8/5/2018" }, +{ _id: 401, firstName: "Paulina", lastName: "Radbourne", email: "pradbourneb4@fda.gov", gender: "Female", ip_address: "110.127.30.35", createdAt: "9/23/2018" }, +{ _id: 402, firstName: "Hunfredo", lastName: "Fontel", email: "hfontelb5@google.nl", gender: "Male", ip_address: "17.45.18.138", createdAt: "7/26/2018" }, +{ _id: 403, firstName: "Edith", lastName: "Chillingsworth", email: "echillingsworthb6@nhs.uk", gender: "Female", ip_address: "42.41.97.203", createdAt: "5/8/2018" }, +{ _id: 404, firstName: "Ezri", lastName: "Choat", email: "echoatb7@facebook.com", gender: "Male", ip_address: "253.86.35.67", createdAt: "12/8/2018" }, +{ _id: 405, firstName: "Devland", lastName: "Brafield", email: "dbrafieldb8@mail.ru", gender: "Male", ip_address: "49.55.41.153", createdAt: "11/24/2018" }, +{ _id: 406, firstName: "Omero", lastName: "Talkington", email: "otalkingtonb9@example.com", gender: "Male", ip_address: "38.229.16.80", createdAt: "1/15/2019" }, +{ _id: 407, firstName: "Cosmo", lastName: "Adamczewski", email: "cadamczewskiba@jimdo.com", gender: "Male", ip_address: "112.95.241.153", createdAt: "3/21/2018" }, +{ _id: 408, firstName: "Kristien", lastName: "Gotmann", email: "kgotmannbb@sciencedaily.com", gender: "Female", ip_address: "244.174.78.155", createdAt: "6/13/2018" }, +{ _id: 409, firstName: "Celle", lastName: "Wytchard", email: "cwytchardbc@sun.com", gender: "Female", ip_address: "254.227.19.193", createdAt: "9/27/2018" }, +{ _id: 410, firstName: "Erastus", lastName: "Bellocht", email: "ebellochtbd@spotify.com", gender: "Male", ip_address: "53.154.6.203", createdAt: "9/7/2018" }, +{ _id: 411, firstName: "Liz", lastName: "McFaul", email: "lmcfaulbe@weather.com", gender: "Female", ip_address: "217.97.194.144", createdAt: "7/11/2018" }, +{ _id: 412, firstName: "Si", lastName: "Minors", email: "sminorsbf@hp.com", gender: "Male", ip_address: "221.198.242.88", createdAt: "10/15/2018" }, +{ _id: 413, firstName: "Cosme", lastName: "De Filippo", email: "cdefilippobg@hatena.ne.jp", gender: "Male", ip_address: "227.52.203.2", createdAt: "8/8/2018" }, +{ _id: 414, firstName: "Vinny", lastName: "Jenno", email: "vjennobh@tinyurl.com", gender: "Male", ip_address: "36.35.17.195", createdAt: "12/27/2018" }, +{ _id: 415, firstName: "Zelma", lastName: "Ralls", email: "zrallsbi@surveymonkey.com", gender: "Female", ip_address: "126.165.182.148", createdAt: "5/29/2018" }, +{ _id: 416, firstName: "Kelley", lastName: "MacLachlan", email: "kmaclachlanbj@utexas.edu", gender: "Female", ip_address: "151.39.157.232", createdAt: "5/14/2018" }, +{ _id: 417, firstName: "Lothaire", lastName: "Hasselby", email: "lhasselbybk@theatlantic.com", gender: "Male", ip_address: "4.128.128.138", createdAt: "6/23/2018" }, +{ _id: 418, firstName: "Lonni", lastName: "Scheu", email: "lscheubl@arizona.edu", gender: "Female", ip_address: "145.46.9.175", createdAt: "4/29/2018" }, +{ _id: 419, firstName: "Henrieta", lastName: "Mc Giffin", email: "hmcgiffinbm@mysql.com", gender: "Female", ip_address: "2.84.8.9", createdAt: "1/16/2019" }, +{ _id: 420, firstName: "Kalvin", lastName: "Phlippsen", email: "kphlippsenbn@mozilla.org", gender: "Male", ip_address: "228.19.31.73", createdAt: "5/27/2018" }, +{ _id: 421, firstName: "Laina", lastName: "Spurritt", email: "lspurrittbo@list-manage.com", gender: "Female", ip_address: "216.236.89.208", createdAt: "10/7/2018" }, +{ _id: 422, firstName: "Calv", lastName: "Yakovlev", email: "cyakovlevbp@flavors.me", gender: "Male", ip_address: "15.162.170.207", createdAt: "7/6/2018" }, +{ _id: 423, firstName: "Salvidor", lastName: "Duguid", email: "sduguidbq@blog.com", gender: "Male", ip_address: "177.232.251.54", createdAt: "8/27/2018" }, +{ _id: 424, firstName: "Catina", lastName: "Ashworth", email: "cashworthbr@psu.edu", gender: "Female", ip_address: "175.104.250.33", createdAt: "8/22/2018" }, +{ _id: 425, firstName: "Marney", lastName: "Whitechurch", email: "mwhitechurchbs@shop-pro.jp", gender: "Female", ip_address: "99.71.33.27", createdAt: "2/18/2018" }, +{ _id: 426, firstName: "Osbourne", lastName: "Cohani", email: "ocohanibt@trellian.com", gender: "Male", ip_address: "203.211.197.191", createdAt: "2/13/2018" }, +{ _id: 427, firstName: "Pooh", lastName: "Moreinis", email: "pmoreinisbu@princeton.edu", gender: "Female", ip_address: "216.253.168.67", createdAt: "1/23/2019" }, +{ _id: 428, firstName: "Nadeen", lastName: "Shoobridge", email: "nshoobridgebv@unc.edu", gender: "Female", ip_address: "159.82.69.150", createdAt: "5/27/2018" }, +{ _id: 429, firstName: "Sanford", lastName: "Coldwell", email: "scoldwellbw@slashdot.org", gender: "Male", ip_address: "99.73.217.253", createdAt: "5/3/2018" }, +{ _id: 430, firstName: "Babara", lastName: "Curror", email: "bcurrorbx@hibu.com", gender: "Female", ip_address: "240.241.87.86", createdAt: "5/9/2018" }, +{ _id: 431, firstName: "Nicolai", lastName: "Covelle", email: "ncovelleby@irs.gov", gender: "Male", ip_address: "2.191.112.66", createdAt: "2/12/2018" }, +{ _id: 432, firstName: "Felice", lastName: "Grayshan", email: "fgrayshanbz@vinaora.com", gender: "Female", ip_address: "33.213.15.15", createdAt: "1/22/2019" }, +{ _id: 433, firstName: "Leesa", lastName: "Bladen", email: "lbladenc0@istockphoto.com", gender: "Female", ip_address: "174.3.57.60", createdAt: "12/27/2018" }, +{ _id: 434, firstName: "Pippo", lastName: "Snyder", email: "psnyderc1@prweb.com", gender: "Male", ip_address: "117.32.122.164", createdAt: "2/12/2018" }, +{ _id: 435, firstName: "Moll", lastName: "Pennino", email: "mpenninoc2@paginegialle.it", gender: "Female", ip_address: "81.77.213.177", createdAt: "12/24/2018" }, +{ _id: 436, firstName: "Honor", lastName: "Klulisek", email: "hklulisekc3@prlog.org", gender: "Female", ip_address: "111.164.149.69", createdAt: "5/10/2018" }, +{ _id: 437, firstName: "Cahra", lastName: "Barrie", email: "cbarriec4@icq.com", gender: "Female", ip_address: "205.125.198.112", createdAt: "1/4/2019" }, +{ _id: 438, firstName: "Katalin", lastName: "Poel", email: "kpoelc5@bbb.org", gender: "Female", ip_address: "131.203.91.42", createdAt: "11/11/2018" }, +{ _id: 439, firstName: "Leonidas", lastName: "Coad", email: "lcoadc6@phoca.cz", gender: "Male", ip_address: "128.85.3.215", createdAt: "2/22/2018" }, +{ _id: 440, firstName: "Suzanne", lastName: "Herrero", email: "sherreroc7@hexun.com", gender: "Female", ip_address: "251.52.125.87", createdAt: "2/4/2019" }, +{ _id: 441, firstName: "Addie", lastName: "Bang", email: "abangc8@livejournal.com", gender: "Female", ip_address: "216.104.182.176", createdAt: "8/23/2018" }, +{ _id: 442, firstName: "Charin", lastName: "Clorley", email: "cclorleyc9@gov.uk", gender: "Female", ip_address: "217.179.73.14", createdAt: "10/16/2018" }, +{ _id: 443, firstName: "Jennine", lastName: "French", email: "jfrenchca@imdb.com", gender: "Female", ip_address: "220.16.102.181", createdAt: "3/8/2018" }, +{ _id: 444, firstName: "Jaymee", lastName: "Strathdee", email: "jstrathdeecb@wikia.com", gender: "Female", ip_address: "174.87.92.41", createdAt: "3/10/2018" }, +{ _id: 445, firstName: "Rosabel", lastName: "MacCaughey", email: "rmaccaugheycc@google.cn", gender: "Female", ip_address: "247.132.183.243", createdAt: "10/17/2018" }, +{ _id: 446, firstName: "Meir", lastName: "Fayre", email: "mfayrecd@feedburner.com", gender: "Male", ip_address: "255.43.119.92", createdAt: "6/15/2018" }, +{ _id: 447, firstName: "Francklin", lastName: "Alcido", email: "falcidoce@github.io", gender: "Male", ip_address: "21.175.35.12", createdAt: "3/25/2018" }, +{ _id: 448, firstName: "Anabella", lastName: "Fleming", email: "aflemingcf@mail.ru", gender: "Female", ip_address: "68.34.178.159", createdAt: "7/31/2018" }, +{ _id: 449, firstName: "Malvina", lastName: "Micklewicz", email: "mmicklewiczcg@ocn.ne.jp", gender: "Female", ip_address: "252.138.21.228", createdAt: "7/16/2018" }, +{ _id: 450, firstName: "Audi", lastName: "Rodriguez", email: "arodriguezch@gmpg.org", gender: "Female", ip_address: "60.38.79.142", createdAt: "9/17/2018" }, +{ _id: 451, firstName: "Sidonnie", lastName: "Dowrey", email: "sdowreyci@yolasite.com", gender: "Female", ip_address: "200.254.224.165", createdAt: "1/20/2019" }, +{ _id: 452, firstName: "Paxon", lastName: "Jansema", email: "pjansemacj@hc360.com", gender: "Male", ip_address: "96.82.166.54", createdAt: "7/2/2018" }, +{ _id: 453, firstName: "Kaine", lastName: "Janaway", email: "kjanawayck@netvibes.com", gender: "Male", ip_address: "102.2.194.245", createdAt: "1/29/2019" }, +{ _id: 454, firstName: "Juline", lastName: "Stow", email: "jstowcl@reddit.com", gender: "Female", ip_address: "1.232.2.26", createdAt: "9/30/2018" }, +{ _id: 455, firstName: "Saunderson", lastName: "Pindell", email: "spindellcm@bloglines.com", gender: "Male", ip_address: "202.57.71.116", createdAt: "8/3/2018" }, +{ _id: 456, firstName: "Catha", lastName: "Toone", email: "ctoonecn@devhub.com", gender: "Female", ip_address: "167.142.34.101", createdAt: "3/12/2018" }, +{ _id: 457, firstName: "Garwin", lastName: "Pashba", email: "gpashbaco@zimbio.com", gender: "Male", ip_address: "185.79.27.246", createdAt: "6/15/2018" }, +{ _id: 458, firstName: "Rheba", lastName: "Lunge", email: "rlungecp@diigo.com", gender: "Female", ip_address: "11.43.203.248", createdAt: "6/15/2018" }, +{ _id: 459, firstName: "Ritchie", lastName: "Fawthrop", email: "rfawthropcq@diigo.com", gender: "Male", ip_address: "163.47.156.14", createdAt: "12/28/2018" }, +{ _id: 460, firstName: "Sergei", lastName: "Meins", email: "smeinscr@friendfeed.com", gender: "Male", ip_address: "100.178.55.21", createdAt: "4/11/2018" }, +{ _id: 461, firstName: "Cherish", lastName: "Farahar", email: "cfaraharcs@w3.org", gender: "Female", ip_address: "235.74.128.4", createdAt: "10/25/2018" }, +{ _id: 462, firstName: "Shauna", lastName: "Snodin", email: "ssnodinct@ovh.net", gender: "Female", ip_address: "173.195.173.129", createdAt: "2/22/2018" }, +{ _id: 463, firstName: "Dore", lastName: "McPhail", email: "dmcphailcu@sciencedaily.com", gender: "Female", ip_address: "26.54.87.198", createdAt: "5/25/2018" }, +{ _id: 464, firstName: "Marlon", lastName: "Danielovitch", email: "mdanielovitchcv@amazon.com", gender: "Male", ip_address: "241.147.215.32", createdAt: "1/25/2019" }, +{ _id: 465, firstName: "Seline", lastName: "Riggulsford", email: "sriggulsfordcw@rambler.ru", gender: "Female", ip_address: "31.29.135.115", createdAt: "7/15/2018" }, +{ _id: 466, firstName: "Alon", lastName: "Udie", email: "audiecx@bloomberg.com", gender: "Male", ip_address: "103.197.4.97", createdAt: "9/10/2018" }, +{ _id: 467, firstName: "Sallyann", lastName: "Bim", email: "sbimcy@phpbb.com", gender: "Female", ip_address: "28.59.254.188", createdAt: "10/17/2018" }, +{ _id: 468, firstName: "Romain", lastName: "Dimmack", email: "rdimmackcz@jigsy.com", gender: "Male", ip_address: "185.121.62.140", createdAt: "7/17/2018" }, +{ _id: 469, firstName: "Ranique", lastName: "Presslie", email: "rpresslied0@marriott.com", gender: "Female", ip_address: "106.82.181.64", createdAt: "10/21/2018" }, +{ _id: 470, firstName: "Jsandye", lastName: "Rotter", email: "jrotterd1@dailymotion.com", gender: "Female", ip_address: "40.225.17.240", createdAt: "6/9/2018" }, +{ _id: 471, firstName: "Eldredge", lastName: "Dun", email: "edund2@themeforest.net", gender: "Male", ip_address: "58.24.186.143", createdAt: "5/31/2018" }, +{ _id: 472, firstName: "Baldwin", lastName: "Eckh", email: "beckhd3@ed.gov", gender: "Male", ip_address: "101.207.85.44", createdAt: "11/3/2018" }, +{ _id: 473, firstName: "Man", lastName: "Sanchiz", email: "msanchizd4@usatoday.com", gender: "Male", ip_address: "22.54.16.151", createdAt: "5/17/2018" }, +{ _id: 474, firstName: "Shaw", lastName: "Lemar", email: "slemard5@360.cn", gender: "Male", ip_address: "133.11.60.111", createdAt: "4/21/2018" }, +{ _id: 475, firstName: "Prinz", lastName: "Lias", email: "pliasd6@vimeo.com", gender: "Male", ip_address: "40.255.103.127", createdAt: "4/20/2018" }, +{ _id: 476, firstName: "Janek", lastName: "Buy", email: "jbuyd7@sohu.com", gender: "Male", ip_address: "69.254.147.141", createdAt: "12/29/2018" }, +{ _id: 477, firstName: "Franni", lastName: "Giovani", email: "fgiovanid8@craigslist.org", gender: "Female", ip_address: "174.62.250.129", createdAt: "9/29/2018" }, +{ _id: 478, firstName: "Jesselyn", lastName: "Gilphillan", email: "jgilphilland9@examiner.com", gender: "Female", ip_address: "217.32.74.176", createdAt: "8/30/2018" }, +{ _id: 479, firstName: "Kristi", lastName: "Bellis", email: "kbellisda@newsvine.com", gender: "Female", ip_address: "125.219.213.253", createdAt: "1/3/2019" }, +{ _id: 480, firstName: "Andres", lastName: "O'Fergus", email: "aofergusdb@cdbaby.com", gender: "Male", ip_address: "119.99.61.4", createdAt: "4/1/2018" }, +{ _id: 481, firstName: "Randie", lastName: "Cristol", email: "rcristoldc@artisteer.com", gender: "Female", ip_address: "108.217.91.213", createdAt: "8/12/2018" }, +{ _id: 482, firstName: "Cecil", lastName: "MacQuarrie", email: "cmacquarriedd@bigcartel.com", gender: "Male", ip_address: "221.185.193.102", createdAt: "8/16/2018" }, +{ _id: 483, firstName: "Huey", lastName: "O'Connor", email: "hoconnorde@deviantart.com", gender: "Male", ip_address: "138.51.69.200", createdAt: "5/3/2018" }, +{ _id: 484, firstName: "Alphonse", lastName: "Rowe", email: "arowedf@eventbrite.com", gender: "Male", ip_address: "232.109.16.252", createdAt: "11/26/2018" }, +{ _id: 485, firstName: "Nisse", lastName: "Villa", email: "nvilladg@creativecommons.org", gender: "Female", ip_address: "250.77.158.176", createdAt: "12/20/2018" }, +{ _id: 486, firstName: "Kippy", lastName: "Spurrier", email: "kspurrierdh@narod.ru", gender: "Male", ip_address: "164.222.175.77", createdAt: "2/9/2019" }, +{ _id: 487, firstName: "Kalvin", lastName: "Granville", email: "kgranvilledi@bing.com", gender: "Male", ip_address: "82.35.147.52", createdAt: "5/9/2018" }, +{ _id: 488, firstName: "Hort", lastName: "Awin", email: "hawindj@github.com", gender: "Male", ip_address: "200.188.175.242", createdAt: "12/6/2018" }, +{ _id: 489, firstName: "Donnell", lastName: "Geach", email: "dgeachdk@blogs.com", gender: "Male", ip_address: "14.144.113.215", createdAt: "1/18/2019" }, +{ _id: 490, firstName: "Inger", lastName: "Cropp", email: "icroppdl@wix.com", gender: "Male", ip_address: "141.180.89.114", createdAt: "8/10/2018" }, +{ _id: 491, firstName: "Elfrieda", lastName: "Gillopp", email: "egilloppdm@usnews.com", gender: "Female", ip_address: "39.15.97.185", createdAt: "12/21/2018" }, +{ _id: 492, firstName: "Pieter", lastName: "Whyborn", email: "pwhyborndn@wsj.com", gender: "Male", ip_address: "68.212.77.165", createdAt: "11/5/2018" }, +{ _id: 493, firstName: "Valeria", lastName: "Gorhardt", email: "vgorhardtdo@dagondesign.com", gender: "Female", ip_address: "28.146.218.164", createdAt: "2/4/2019" }, +{ _id: 494, firstName: "Jarvis", lastName: "Jachimczak", email: "jjachimczakdp@google.fr", gender: "Male", ip_address: "145.87.113.35", createdAt: "4/13/2018" }, +{ _id: 495, firstName: "Melicent", lastName: "Hartin", email: "mhartindq@army.mil", gender: "Female", ip_address: "94.200.92.147", createdAt: "4/12/2018" }, +{ _id: 496, firstName: "Noella", lastName: "Toffoletto", email: "ntoffolettodr@bbb.org", gender: "Female", ip_address: "50.10.219.171", createdAt: "1/8/2019" }, +{ _id: 497, firstName: "Lowrance", lastName: "Mangeot", email: "lmangeotds@bloglovin.com", gender: "Male", ip_address: "38.201.177.62", createdAt: "12/19/2018" }, +{ _id: 498, firstName: "Orv", lastName: "Cockayne", email: "ocockaynedt@google.es", gender: "Male", ip_address: "118.195.185.135", createdAt: "5/2/2018" }, +{ _id: 499, firstName: "Fredelia", lastName: "Tapton", email: "ftaptondu@constantcontact.com", gender: "Female", ip_address: "228.60.192.72", createdAt: "3/19/2018" }, +{ _id: 500, firstName: "Xerxes", lastName: "Mapston", email: "xmapstondv@indiatimes.com", gender: "Male", ip_address: "175.89.216.194", createdAt: "1/29/2019" }, +{ _id: 501, firstName: "Ody", lastName: "Windham", email: "owindhamdw@mysql.com", gender: "Male", ip_address: "43.164.92.5", createdAt: "6/15/2018" }, +{ _id: 502, firstName: "Jada", lastName: "Priddle", email: "jpriddledx@wunderground.com", gender: "Female", ip_address: "253.240.195.217", createdAt: "7/31/2018" }, +{ _id: 503, firstName: "Horace", lastName: "Keelin", email: "hkeelindy@domainmarket.com", gender: "Male", ip_address: "146.219.19.133", createdAt: "6/12/2018" }, +{ _id: 504, firstName: "Che", lastName: "Ventom", email: "cventomdz@ftc.gov", gender: "Male", ip_address: "38.69.210.241", createdAt: "2/13/2018" }, +{ _id: 505, firstName: "Morse", lastName: "Sawkin", email: "msawkine0@spotify.com", gender: "Male", ip_address: "184.218.185.56", createdAt: "6/5/2018" }, +{ _id: 506, firstName: "Desi", lastName: "Schettini", email: "dschettinie1@ezinearticles.com", gender: "Male", ip_address: "76.2.110.251", createdAt: "9/27/2018" }, +{ _id: 507, firstName: "Monro", lastName: "Strettle", email: "mstrettlee2@ezinearticles.com", gender: "Male", ip_address: "129.42.106.134", createdAt: "6/12/2018" }, +{ _id: 508, firstName: "Siward", lastName: "Sainsbury-Brown", email: "ssainsburybrowne3@amazon.de", gender: "Male", ip_address: "208.22.32.36", createdAt: "1/22/2019" }, +{ _id: 509, firstName: "Delphine", lastName: "Cregeen", email: "dcregeene4@bloglines.com", gender: "Female", ip_address: "205.230.106.161", createdAt: "9/14/2018" }, +{ _id: 510, firstName: "Saw", lastName: "Shorte", email: "sshortee5@t-online.de", gender: "Male", ip_address: "10.90.205.190", createdAt: "7/30/2018" }, +{ _id: 511, firstName: "Hinda", lastName: "Merwe", email: "hmerwee6@ebay.com", gender: "Female", ip_address: "246.154.157.225", createdAt: "2/23/2018" }, +{ _id: 512, firstName: "Leeland", lastName: "Bestall", email: "lbestalle7@twitpic.com", gender: "Male", ip_address: "134.92.34.140", createdAt: "11/17/2018" }, +{ _id: 513, firstName: "Panchito", lastName: "Hugenin", email: "phugenine8@theguardian.com", gender: "Male", ip_address: "145.100.19.122", createdAt: "3/7/2018" }, +{ _id: 514, firstName: "Bendix", lastName: "Dashkovich", email: "bdashkoviche9@constantcontact.com", gender: "Male", ip_address: "83.11.235.144", createdAt: "4/10/2018" }, +{ _id: 515, firstName: "Richardo", lastName: "Dannehl", email: "rdannehlea@illinois.edu", gender: "Male", ip_address: "64.149.148.56", createdAt: "12/22/2018" }, +{ _id: 516, firstName: "Ody", lastName: "Found", email: "ofoundeb@va.gov", gender: "Male", ip_address: "40.63.163.49", createdAt: "1/8/2019" }, +{ _id: 517, firstName: "Gerri", lastName: "Beresfore", email: "gberesforeec@miibeian.gov.cn", gender: "Male", ip_address: "41.16.102.230", createdAt: "11/16/2018" }, +{ _id: 518, firstName: "Nicoli", lastName: "McCullen", email: "nmccullened@gov.uk", gender: "Female", ip_address: "238.195.55.117", createdAt: "10/3/2018" }, +{ _id: 519, firstName: "Hadleigh", lastName: "Jerome", email: "hjeromeee@geocities.jp", gender: "Male", ip_address: "225.60.160.171", createdAt: "5/14/2018" }, +{ _id: 520, firstName: "Trueman", lastName: "Manders", email: "tmandersef@goo.gl", gender: "Male", ip_address: "20.75.89.30", createdAt: "12/1/2018" }, +{ _id: 521, firstName: "Emmott", lastName: "Gabrieli", email: "egabrielieg@wufoo.com", gender: "Male", ip_address: "228.152.167.166", createdAt: "2/22/2018" }, +{ _id: 522, firstName: "Terrie", lastName: "Glanert", email: "tglanerteh@a8.net", gender: "Female", ip_address: "112.146.0.117", createdAt: "3/4/2018" }, +{ _id: 523, firstName: "Beatrisa", lastName: "Danzig", email: "bdanzigei@studiopress.com", gender: "Female", ip_address: "166.28.156.35", createdAt: "9/16/2018" }, +{ _id: 524, firstName: "Dan", lastName: "Grece", email: "dgreceej@paginegialle.it", gender: "Male", ip_address: "41.248.84.139", createdAt: "10/22/2018" }, +{ _id: 525, firstName: "Laverne", lastName: "Walworche", email: "lwalworcheek@bloglines.com", gender: "Female", ip_address: "39.65.33.175", createdAt: "12/25/2018" }, +{ _id: 526, firstName: "Jenifer", lastName: "Worsalls", email: "jworsallsel@cnbc.com", gender: "Female", ip_address: "207.108.186.9", createdAt: "7/15/2018" }, +{ _id: 527, firstName: "Frieda", lastName: "Flobert", email: "fflobertem@ihg.com", gender: "Female", ip_address: "141.35.201.30", createdAt: "1/11/2019" }, +{ _id: 528, firstName: "Taylor", lastName: "Mayho", email: "tmayhoen@sbwire.com", gender: "Male", ip_address: "251.30.175.223", createdAt: "2/25/2018" }, +{ _id: 529, firstName: "Madelina", lastName: "Bolgar", email: "mbolgareo@live.com", gender: "Female", ip_address: "94.143.223.195", createdAt: "10/28/2018" }, +{ _id: 530, firstName: "Ugo", lastName: "Inderwick", email: "uinderwickep@cornell.edu", gender: "Male", ip_address: "135.43.239.64", createdAt: "3/25/2018" }, +{ _id: 531, firstName: "Roseline", lastName: "Jaggi", email: "rjaggieq@hud.gov", gender: "Female", ip_address: "227.145.222.90", createdAt: "12/6/2018" }, +{ _id: 532, firstName: "Mal", lastName: "Cotilard", email: "mcotilarder@mapy.cz", gender: "Male", ip_address: "55.207.143.188", createdAt: "1/10/2019" }, +{ _id: 533, firstName: "Conny", lastName: "Feckey", email: "cfeckeyes@uiuc.edu", gender: "Male", ip_address: "85.45.31.141", createdAt: "3/4/2018" }, +{ _id: 534, firstName: "Nicolle", lastName: "Keasley", email: "nkeasleyet@wufoo.com", gender: "Female", ip_address: "253.240.56.13", createdAt: "2/8/2019" }, +{ _id: 535, firstName: "Callida", lastName: "Poyner", email: "cpoynereu@prlog.org", gender: "Female", ip_address: "64.93.212.46", createdAt: "2/9/2019" }, +{ _id: 536, firstName: "Chilton", lastName: "Decruse", email: "cdecruseev@quantcast.com", gender: "Male", ip_address: "88.115.247.202", createdAt: "9/4/2018" }, +{ _id: 537, firstName: "Brodie", lastName: "Conradsen", email: "bconradsenew@virginia.edu", gender: "Male", ip_address: "113.60.110.187", createdAt: "2/22/2018" }, +{ _id: 538, firstName: "Eddie", lastName: "Sweetman", email: "esweetmanex@google.co.jp", gender: "Male", ip_address: "101.148.198.120", createdAt: "6/30/2018" }, +{ _id: 539, firstName: "Rolland", lastName: "Faust", email: "rfaustey@nymag.com", gender: "Male", ip_address: "58.9.175.208", createdAt: "11/18/2018" }, +{ _id: 540, firstName: "Kris", lastName: "Blanchette", email: "kblanchetteez@jigsy.com", gender: "Female", ip_address: "72.250.9.177", createdAt: "2/2/2019" }, +{ _id: 541, firstName: "Artur", lastName: "Humpherston", email: "ahumpherstonf0@ycombinator.com", gender: "Male", ip_address: "65.220.100.46", createdAt: "2/10/2019" }, +{ _id: 542, firstName: "Tracy", lastName: "Fetherston", email: "tfetherstonf1@ehow.com", gender: "Female", ip_address: "152.106.211.75", createdAt: "4/9/2018" }, +{ _id: 543, firstName: "Zacharia", lastName: "Courtenay", email: "zcourtenayf2@mlb.com", gender: "Male", ip_address: "76.95.72.79", createdAt: "5/26/2018" }, +{ _id: 544, firstName: "Camille", lastName: "Shotton", email: "cshottonf3@biblegateway.com", gender: "Female", ip_address: "55.179.130.116", createdAt: "12/18/2018" }, +{ _id: 545, firstName: "Nessi", lastName: "Shapiro", email: "nshapirof4@usnews.com", gender: "Female", ip_address: "203.19.148.191", createdAt: "4/6/2018" }, +{ _id: 546, firstName: "Salem", lastName: "Fidian", email: "sfidianf5@eventbrite.com", gender: "Male", ip_address: "181.112.37.178", createdAt: "10/20/2018" }, +{ _id: 547, firstName: "Orrin", lastName: "Cotherill", email: "ocotherillf6@biblegateway.com", gender: "Male", ip_address: "246.191.19.88", createdAt: "12/16/2018" }, +{ _id: 548, firstName: "Thomasin", lastName: "Ponder", email: "tponderf7@google.co.uk", gender: "Female", ip_address: "18.178.121.99", createdAt: "2/11/2018" }, +{ _id: 549, firstName: "Paton", lastName: "Reynault", email: "preynaultf8@skyrock.com", gender: "Male", ip_address: "186.236.178.182", createdAt: "12/16/2018" }, +{ _id: 550, firstName: "Felecia", lastName: "Derdes", email: "fderdesf9@tuttocitta.it", gender: "Female", ip_address: "221.42.13.97", createdAt: "10/1/2018" }, +{ _id: 551, firstName: "Gale", lastName: "Tonner", email: "gtonnerfa@squidoo.com", gender: "Male", ip_address: "245.130.116.138", createdAt: "10/8/2018" }, +{ _id: 552, firstName: "Clare", lastName: "Skilling", email: "cskillingfb@theatlantic.com", gender: "Female", ip_address: "218.182.47.214", createdAt: "11/30/2018" }, +{ _id: 553, firstName: "Bernardina", lastName: "Shotton", email: "bshottonfc@parallels.com", gender: "Female", ip_address: "109.78.79.220", createdAt: "11/12/2018" }, +{ _id: 554, firstName: "Devonna", lastName: "Rowcastle", email: "drowcastlefd@themeforest.net", gender: "Female", ip_address: "215.44.189.171", createdAt: "4/2/2018" }, +{ _id: 555, firstName: "Maurise", lastName: "Schoolcroft", email: "mschoolcroftfe@reference.com", gender: "Male", ip_address: "117.159.244.110", createdAt: "11/10/2018" }, +{ _id: 556, firstName: "Bambi", lastName: "Pinard", email: "bpinardff@bloglines.com", gender: "Female", ip_address: "19.118.242.71", createdAt: "8/16/2018" }, +{ _id: 557, firstName: "Erminia", lastName: "Flecknoe", email: "eflecknoefg@narod.ru", gender: "Female", ip_address: "61.88.205.154", createdAt: "12/1/2018" }, +{ _id: 558, firstName: "Brice", lastName: "Heymes", email: "bheymesfh@nps.gov", gender: "Male", ip_address: "142.139.5.125", createdAt: "4/18/2018" }, +{ _id: 559, firstName: "Beatriz", lastName: "Kelf", email: "bkelffi@archive.org", gender: "Female", ip_address: "224.120.170.191", createdAt: "1/18/2019" }, +{ _id: 560, firstName: "Carree", lastName: "Langstone", email: "clangstonefj@europa.eu", gender: "Female", ip_address: "94.177.10.46", createdAt: "7/10/2018" }, +{ _id: 561, firstName: "Amaleta", lastName: "Cannon", email: "acannonfk@hubpages.com", gender: "Female", ip_address: "209.74.121.28", createdAt: "9/12/2018" }, +{ _id: 562, firstName: "Sherwood", lastName: "Cripps", email: "scrippsfl@arizona.edu", gender: "Male", ip_address: "221.106.102.145", createdAt: "1/13/2019" }, +{ _id: 563, firstName: "Torre", lastName: "Brettoner", email: "tbrettonerfm@hatena.ne.jp", gender: "Male", ip_address: "161.206.28.216", createdAt: "7/20/2018" }, +{ _id: 564, firstName: "Georgi", lastName: "Hasloch", email: "ghaslochfn@engadget.com", gender: "Male", ip_address: "47.27.22.207", createdAt: "10/6/2018" }, +{ _id: 565, firstName: "Artus", lastName: "Willcott", email: "awillcottfo@usa.gov", gender: "Male", ip_address: "88.192.139.31", createdAt: "9/30/2018" }, +{ _id: 566, firstName: "Merle", lastName: "Meredith", email: "mmeredithfp@smugmug.com", gender: "Male", ip_address: "94.194.84.115", createdAt: "7/27/2018" }, +{ _id: 567, firstName: "Udale", lastName: "Ferry", email: "uferryfq@reverbnation.com", gender: "Male", ip_address: "108.180.221.74", createdAt: "12/30/2018" }, +{ _id: 568, firstName: "Chas", lastName: "Lynch", email: "clynchfr@google.it", gender: "Male", ip_address: "213.177.16.48", createdAt: "9/7/2018" }, +{ _id: 569, firstName: "Cristine", lastName: "De Morena", email: "cdemorenafs@weibo.com", gender: "Female", ip_address: "170.194.208.31", createdAt: "7/10/2018" }, +{ _id: 570, firstName: "Claresta", lastName: "McAndrew", email: "cmcandrewft@nyu.edu", gender: "Female", ip_address: "42.99.4.9", createdAt: "10/5/2018" }, +{ _id: 571, firstName: "Quintin", lastName: "Pengilly", email: "qpengillyfu@360.cn", gender: "Male", ip_address: "235.117.6.198", createdAt: "10/10/2018" }, +{ _id: 572, firstName: "Violetta", lastName: "Christal", email: "vchristalfv@wiley.com", gender: "Female", ip_address: "246.33.182.41", createdAt: "12/15/2018" }, +{ _id: 573, firstName: "Rhona", lastName: "Dorman", email: "rdormanfw@discovery.com", gender: "Female", ip_address: "150.160.95.64", createdAt: "1/24/2019" }, +{ _id: 574, firstName: "Gratiana", lastName: "Costello", email: "gcostellofx@ovh.net", gender: "Female", ip_address: "155.49.148.221", createdAt: "9/22/2018" }, +{ _id: 575, firstName: "Chrissie", lastName: "Rolling", email: "crollingfy@bluehost.com", gender: "Female", ip_address: "113.6.7.90", createdAt: "7/20/2018" }, +{ _id: 576, firstName: "Justina", lastName: "Chatelet", email: "jchateletfz@craigslist.org", gender: "Female", ip_address: "99.104.137.75", createdAt: "7/31/2018" }, +{ _id: 577, firstName: "Cairistiona", lastName: "Sucre", email: "csucreg0@amazon.com", gender: "Female", ip_address: "229.148.38.153", createdAt: "5/19/2018" }, +{ _id: 578, firstName: "Ted", lastName: "Humber", email: "thumberg1@parallels.com", gender: "Female", ip_address: "246.191.74.60", createdAt: "4/18/2018" }, +{ _id: 579, firstName: "Shirley", lastName: "Ambage", email: "sambageg2@mayoclinic.com", gender: "Female", ip_address: "174.184.124.17", createdAt: "7/16/2018" }, +{ _id: 580, firstName: "Giffard", lastName: "Volonte", email: "gvolonteg3@amazon.de", gender: "Male", ip_address: "214.10.193.157", createdAt: "9/9/2018" }, +{ _id: 581, firstName: "Sherm", lastName: "Bergen", email: "sbergeng4@alexa.com", gender: "Male", ip_address: "61.33.162.55", createdAt: "2/8/2019" }, +{ _id: 582, firstName: "Lew", lastName: "Slad", email: "lsladg5@vistaprint.com", gender: "Male", ip_address: "147.166.85.248", createdAt: "12/10/2018" }, +{ _id: 583, firstName: "Addison", lastName: "Skeath", email: "askeathg6@instagram.com", gender: "Male", ip_address: "144.114.217.198", createdAt: "10/24/2018" }, +{ _id: 584, firstName: "Ingunna", lastName: "Tolefree", email: "itolefreeg7@joomla.org", gender: "Female", ip_address: "187.66.104.99", createdAt: "10/30/2018" }, +{ _id: 585, firstName: "Ansel", lastName: "Propper", email: "apropperg8@etsy.com", gender: "Male", ip_address: "33.183.218.181", createdAt: "8/11/2018" }, +{ _id: 586, firstName: "Gris", lastName: "Veazey", email: "gveazeyg9@g.co", gender: "Male", ip_address: "108.119.205.235", createdAt: "9/21/2018" }, +{ _id: 587, firstName: "Antonetta", lastName: "Deely", email: "adeelyga@behance.net", gender: "Female", ip_address: "102.28.208.75", createdAt: "3/6/2018" }, +{ _id: 588, firstName: "Allyn", lastName: "Henrys", email: "ahenrysgb@live.com", gender: "Male", ip_address: "81.56.252.116", createdAt: "1/31/2019" }, +{ _id: 589, firstName: "Ollie", lastName: "Mordey", email: "omordeygc@liveinternet.ru", gender: "Male", ip_address: "249.119.63.81", createdAt: "8/10/2018" }, +{ _id: 590, firstName: "Lance", lastName: "Leddy", email: "lleddygd@mysql.com", gender: "Male", ip_address: "92.249.169.194", createdAt: "4/23/2018" }, +{ _id: 591, firstName: "Kipper", lastName: "Punch", email: "kpunchge@vistaprint.com", gender: "Male", ip_address: "2.55.164.114", createdAt: "2/13/2018" }, +{ _id: 592, firstName: "Ansel", lastName: "Sporner", email: "aspornergf@paypal.com", gender: "Male", ip_address: "252.10.236.20", createdAt: "9/7/2018" }, +{ _id: 593, firstName: "Andris", lastName: "Cochrane", email: "acochranegg@mac.com", gender: "Male", ip_address: "230.208.117.194", createdAt: "12/23/2018" }, +{ _id: 594, firstName: "Leupold", lastName: "Maunders", email: "lmaundersgh@aol.com", gender: "Male", ip_address: "18.57.39.71", createdAt: "6/13/2018" }, +{ _id: 595, firstName: "Ritchie", lastName: "Arnoud", email: "rarnoudgi@blogger.com", gender: "Male", ip_address: "107.95.187.47", createdAt: "11/4/2018" }, +{ _id: 596, firstName: "Melisenda", lastName: "Aldwich", email: "maldwichgj@unesco.org", gender: "Female", ip_address: "200.109.167.112", createdAt: "11/16/2018" }, +{ _id: 597, firstName: "Meredeth", lastName: "McGiven", email: "mmcgivengk@wix.com", gender: "Male", ip_address: "242.213.215.80", createdAt: "8/30/2018" }, +{ _id: 598, firstName: "Jaimie", lastName: "Purple", email: "jpurplegl@histats.com", gender: "Male", ip_address: "147.228.13.193", createdAt: "10/9/2018" }, +{ _id: 599, firstName: "Nicola", lastName: "Smidmoor", email: "nsmidmoorgm@washington.edu", gender: "Male", ip_address: "209.229.245.186", createdAt: "9/19/2018" }, +{ _id: 600, firstName: "Yorke", lastName: "Sparrowhawk", email: "ysparrowhawkgn@linkedin.com", gender: "Male", ip_address: "227.170.76.108", createdAt: "8/13/2018" }, +{ _id: 601, firstName: "Lesya", lastName: "Gorden", email: "lgordengo@youku.com", gender: "Female", ip_address: "167.62.38.170", createdAt: "12/11/2018" }, +{ _id: 602, firstName: "Noll", lastName: "Cockran", email: "ncockrangp@pcworld.com", gender: "Male", ip_address: "93.71.158.232", createdAt: "9/20/2018" }, +{ _id: 603, firstName: "Erena", lastName: "Laidler", email: "elaidlergq@nbcnews.com", gender: "Female", ip_address: "246.172.124.11", createdAt: "12/10/2018" }, +{ _id: 604, firstName: "Sharia", lastName: "Rubbens", email: "srubbensgr@npr.org", gender: "Female", ip_address: "147.211.232.101", createdAt: "6/3/2018" }, +{ _id: 605, firstName: "Robinetta", lastName: "Harrington", email: "rharringtongs@salon.com", gender: "Female", ip_address: "3.50.101.179", createdAt: "6/20/2018" }, +{ _id: 606, firstName: "Patricia", lastName: "Corrao", email: "pcorraogt@trellian.com", gender: "Female", ip_address: "241.30.35.28", createdAt: "4/27/2018" }, +{ _id: 607, firstName: "Obediah", lastName: "Latehouse", email: "olatehousegu@about.com", gender: "Male", ip_address: "72.106.154.64", createdAt: "10/25/2018" }, +{ _id: 608, firstName: "Meggi", lastName: "Tacey", email: "mtaceygv@usatoday.com", gender: "Female", ip_address: "103.209.65.74", createdAt: "1/12/2019" }, +{ _id: 609, firstName: "Erasmus", lastName: "Russen", email: "erussengw@nbcnews.com", gender: "Male", ip_address: "134.155.6.173", createdAt: "2/16/2018" }, +{ _id: 610, firstName: "Barnett", lastName: "Peet", email: "bpeetgx@zdnet.com", gender: "Male", ip_address: "52.212.242.2", createdAt: "3/24/2018" }, +{ _id: 611, firstName: "Maxwell", lastName: "Longmead", email: "mlongmeadgy@mediafire.com", gender: "Male", ip_address: "38.62.82.63", createdAt: "7/12/2018" }, +{ _id: 612, firstName: "Reinaldo", lastName: "Beacham", email: "rbeachamgz@state.gov", gender: "Male", ip_address: "97.255.119.67", createdAt: "12/31/2018" }, +{ _id: 613, firstName: "Hailey", lastName: "Robertot", email: "hrobertoth0@google.fr", gender: "Male", ip_address: "199.188.172.112", createdAt: "4/12/2018" }, +{ _id: 614, firstName: "Care", lastName: "Skep", email: "cskeph1@prnewswire.com", gender: "Male", ip_address: "200.157.221.194", createdAt: "2/25/2018" }, +{ _id: 615, firstName: "Prescott", lastName: "Spacy", email: "pspacyh2@ebay.com", gender: "Male", ip_address: "213.136.205.78", createdAt: "3/25/2018" }, +{ _id: 616, firstName: "Mickie", lastName: "McCrow", email: "mmccrowh3@berkeley.edu", gender: "Female", ip_address: "157.205.229.224", createdAt: "5/5/2018" }, +{ _id: 617, firstName: "Ramsey", lastName: "De Mico", email: "rdemicoh4@vistaprint.com", gender: "Male", ip_address: "19.229.225.170", createdAt: "10/4/2018" }, +{ _id: 618, firstName: "Norman", lastName: "Claydon", email: "nclaydonh5@artisteer.com", gender: "Male", ip_address: "20.61.246.137", createdAt: "11/6/2018" }, +{ _id: 619, firstName: "Aubry", lastName: "Tillman", email: "atillmanh6@businesswire.com", gender: "Female", ip_address: "233.178.149.182", createdAt: "10/1/2018" }, +{ _id: 620, firstName: "Eduino", lastName: "Presidey", email: "epresideyh7@latimes.com", gender: "Male", ip_address: "221.146.149.107", createdAt: "6/13/2018" }, +{ _id: 621, firstName: "Maressa", lastName: "Linstead", email: "mlinsteadh8@opera.com", gender: "Female", ip_address: "51.241.115.114", createdAt: "4/23/2018" }, +{ _id: 622, firstName: "Jere", lastName: "Fareweather", email: "jfareweatherh9@alibaba.com", gender: "Male", ip_address: "165.75.6.127", createdAt: "7/25/2018" }, +{ _id: 623, firstName: "Rosa", lastName: "Pinchbeck", email: "rpinchbeckha@washingtonpost.com", gender: "Female", ip_address: "30.29.129.78", createdAt: "11/12/2018" }, +{ _id: 624, firstName: "Lorelle", lastName: "Strutley", email: "lstrutleyhb@sciencedaily.com", gender: "Female", ip_address: "97.223.236.30", createdAt: "3/9/2018" }, +{ _id: 625, firstName: "Dorelia", lastName: "Keynes", email: "dkeyneshc@tamu.edu", gender: "Female", ip_address: "150.174.20.189", createdAt: "8/6/2018" }, +{ _id: 626, firstName: "Eli", lastName: "Billam", email: "ebillamhd@google.pl", gender: "Male", ip_address: "92.191.79.178", createdAt: "6/5/2018" }, +{ _id: 627, firstName: "Chuck", lastName: "Snozzwell", email: "csnozzwellhe@bizjournals.com", gender: "Male", ip_address: "68.151.236.120", createdAt: "5/11/2018" }, +{ _id: 628, firstName: "Kayle", lastName: "Ferie", email: "kferiehf@newyorker.com", gender: "Female", ip_address: "36.11.89.157", createdAt: "3/26/2018" }, +{ _id: 629, firstName: "Georgetta", lastName: "Gartery", email: "ggarteryhg@amazon.de", gender: "Female", ip_address: "14.59.30.232", createdAt: "4/1/2018" }, +{ _id: 630, firstName: "Woody", lastName: "Klemt", email: "wklemthh@slate.com", gender: "Male", ip_address: "235.240.246.71", createdAt: "11/3/2018" }, +{ _id: 631, firstName: "Mavra", lastName: "Geldeford", email: "mgeldefordhi@bloomberg.com", gender: "Female", ip_address: "90.179.30.171", createdAt: "5/1/2018" }, +{ _id: 632, firstName: "Jeffie", lastName: "Borland", email: "jborlandhj@deviantart.com", gender: "Male", ip_address: "72.37.207.31", createdAt: "3/12/2018" }, +{ _id: 633, firstName: "Elisabetta", lastName: "Doyle", email: "edoylehk@google.co.jp", gender: "Female", ip_address: "208.124.220.81", createdAt: "3/23/2018" }, +{ _id: 634, firstName: "Adolpho", lastName: "Masters", email: "amastershl@acquirethisname.com", gender: "Male", ip_address: "122.25.165.7", createdAt: "6/27/2018" }, +{ _id: 635, firstName: "Sheffield", lastName: "Wilcott", email: "swilcotthm@pen.io", gender: "Male", ip_address: "210.168.58.173", createdAt: "2/12/2018" }, +{ _id: 636, firstName: "Megan", lastName: "Tinn", email: "mtinnhn@biglobe.ne.jp", gender: "Female", ip_address: "63.5.45.82", createdAt: "3/7/2018" }, +{ _id: 637, firstName: "Agosto", lastName: "Cubin", email: "acubinho@amazon.co.uk", gender: "Male", ip_address: "31.227.229.148", createdAt: "9/6/2018" }, +{ _id: 638, firstName: "Kingsly", lastName: "Beardmore", email: "kbeardmorehp@tinypic.com", gender: "Male", ip_address: "217.167.25.60", createdAt: "4/7/2018" }, +{ _id: 639, firstName: "Timotheus", lastName: "Ishak", email: "tishakhq@cdbaby.com", gender: "Male", ip_address: "253.108.236.233", createdAt: "5/11/2018" }, +{ _id: 640, firstName: "Shelly", lastName: "Minghella", email: "sminghellahr@amazon.co.uk", gender: "Female", ip_address: "142.82.232.63", createdAt: "7/11/2018" }, +{ _id: 641, firstName: "Peggy", lastName: "Aaronson", email: "paaronsonhs@goo.gl", gender: "Female", ip_address: "161.179.17.124", createdAt: "10/26/2018" }, +{ _id: 642, firstName: "Natka", lastName: "Whiteford", email: "nwhitefordht@twitpic.com", gender: "Female", ip_address: "81.11.246.243", createdAt: "5/11/2018" }, +{ _id: 643, firstName: "Sadella", lastName: "Lorkins", email: "slorkinshu@elpais.com", gender: "Female", ip_address: "38.212.27.107", createdAt: "10/15/2018" }, +{ _id: 644, firstName: "Silvie", lastName: "Petrakov", email: "spetrakovhv@jugem.jp", gender: "Female", ip_address: "16.112.126.47", createdAt: "8/5/2018" }, +{ _id: 645, firstName: "Patty", lastName: "Duckers", email: "pduckershw@sphinn.com", gender: "Male", ip_address: "8.61.187.133", createdAt: "3/22/2018" }, +{ _id: 646, firstName: "Geno", lastName: "Mathew", email: "gmathewhx@jigsy.com", gender: "Male", ip_address: "161.122.174.47", createdAt: "5/25/2018" }, +{ _id: 647, firstName: "Yancey", lastName: "Rowling", email: "yrowlinghy@histats.com", gender: "Male", ip_address: "216.186.125.14", createdAt: "12/29/2018" }, +{ _id: 648, firstName: "Charlie", lastName: "Barkes", email: "cbarkeshz@zimbio.com", gender: "Male", ip_address: "218.153.3.230", createdAt: "10/3/2018" }, +{ _id: 649, firstName: "Carr", lastName: "Brownsmith", email: "cbrownsmithi0@howstuffworks.com", gender: "Male", ip_address: "135.23.224.166", createdAt: "9/1/2018" }, +{ _id: 650, firstName: "Thaddeus", lastName: "Hadgkiss", email: "thadgkissi1@amazonaws.com", gender: "Male", ip_address: "138.232.185.174", createdAt: "7/26/2018" }, +{ _id: 651, firstName: "Glenn", lastName: "Donald", email: "gdonaldi2@samsung.com", gender: "Male", ip_address: "193.41.123.234", createdAt: "9/17/2018" }, +{ _id: 652, firstName: "Euphemia", lastName: "Hordell", email: "ehordelli3@hp.com", gender: "Female", ip_address: "110.165.161.45", createdAt: "9/25/2018" }, +{ _id: 653, firstName: "Kori", lastName: "Voff", email: "kvoffi4@fastcompany.com", gender: "Female", ip_address: "60.170.179.82", createdAt: "4/1/2018" }, +{ _id: 654, firstName: "Ana", lastName: "Wahncke", email: "awahnckei5@theglobeandmail.com", gender: "Female", ip_address: "67.99.142.17", createdAt: "2/28/2018" }, +{ _id: 655, firstName: "Xaviera", lastName: "Glanert", email: "xglanerti6@quantcast.com", gender: "Female", ip_address: "184.137.194.47", createdAt: "4/3/2018" }, +{ _id: 656, firstName: "Kaiser", lastName: "Conrart", email: "kconrarti7@rakuten.co.jp", gender: "Male", ip_address: "166.208.88.105", createdAt: "6/22/2018" }, +{ _id: 657, firstName: "Flore", lastName: "Bedham", email: "fbedhami8@timesonline.co.uk", gender: "Female", ip_address: "91.133.79.44", createdAt: "6/29/2018" }, +{ _id: 658, firstName: "Linoel", lastName: "Fills", email: "lfillsi9@is.gd", gender: "Male", ip_address: "15.240.19.100", createdAt: "9/25/2018" }, +{ _id: 659, firstName: "Opaline", lastName: "Tuley", email: "otuleyia@sohu.com", gender: "Female", ip_address: "27.223.19.211", createdAt: "1/31/2019" }, +{ _id: 660, firstName: "Benn", lastName: "Rider", email: "briderib@xing.com", gender: "Male", ip_address: "17.78.213.231", createdAt: "12/7/2018" }, +{ _id: 661, firstName: "Hilario", lastName: "Kruschov", email: "hkruschovic@blogs.com", gender: "Male", ip_address: "86.71.14.140", createdAt: "8/2/2018" }, +{ _id: 662, firstName: "Flo", lastName: "Pridham", email: "fpridhamid@ning.com", gender: "Female", ip_address: "188.253.141.98", createdAt: "11/10/2018" }, +{ _id: 663, firstName: "Brigitte", lastName: "Droogan", email: "bdrooganie@nsw.gov.au", gender: "Female", ip_address: "153.44.112.126", createdAt: "9/12/2018" }, +{ _id: 664, firstName: "Valli", lastName: "Swalwel", email: "vswalwelif@hexun.com", gender: "Female", ip_address: "240.142.166.105", createdAt: "2/28/2018" }, +{ _id: 665, firstName: "Rowan", lastName: "Blackett", email: "rblackettig@dion.ne.jp", gender: "Male", ip_address: "81.116.184.94", createdAt: "10/27/2018" }, +{ _id: 666, firstName: "Moishe", lastName: "Brodley", email: "mbrodleyih@youtube.com", gender: "Male", ip_address: "57.253.149.108", createdAt: "5/2/2018" }, +{ _id: 667, firstName: "Tally", lastName: "Szymanowicz", email: "tszymanowiczii@photobucket.com", gender: "Female", ip_address: "167.241.77.128", createdAt: "7/21/2018" }, +{ _id: 668, firstName: "Hettie", lastName: "Ord", email: "hordij@cloudflare.com", gender: "Female", ip_address: "46.190.248.71", createdAt: "3/17/2018" }, +{ _id: 669, firstName: "Chrissy", lastName: "Vogt", email: "cvogtik@cbslocal.com", gender: "Female", ip_address: "233.178.230.164", createdAt: "4/13/2018" }, +{ _id: 670, firstName: "Sheffy", lastName: "Brinkworth", email: "sbrinkworthil@instagram.com", gender: "Male", ip_address: "199.35.114.232", createdAt: "8/12/2018" }, +{ _id: 671, firstName: "Loy", lastName: "Cuttings", email: "lcuttingsim@ihg.com", gender: "Male", ip_address: "232.70.175.20", createdAt: "3/25/2018" }, +{ _id: 672, firstName: "Mia", lastName: "Amburgy", email: "mamburgyin@sourceforge.net", gender: "Female", ip_address: "156.254.18.74", createdAt: "3/19/2018" }, +{ _id: 673, firstName: "Lauren", lastName: "Lingfoot", email: "llingfootio@tuttocitta.it", gender: "Male", ip_address: "158.145.220.253", createdAt: "5/13/2018" }, +{ _id: 674, firstName: "Duffie", lastName: "Wykes", email: "dwykesip@istockphoto.com", gender: "Male", ip_address: "189.247.210.206", createdAt: "1/17/2019" }, +{ _id: 675, firstName: "Lianna", lastName: "Caile", email: "lcaileiq@google.es", gender: "Female", ip_address: "116.239.55.112", createdAt: "5/28/2018" }, +{ _id: 676, firstName: "Kendricks", lastName: "Thomlinson", email: "kthomlinsonir@dailymail.co.uk", gender: "Male", ip_address: "154.170.106.120", createdAt: "3/24/2018" }, +{ _id: 677, firstName: "Sena", lastName: "Taverner", email: "staverneris@google.it", gender: "Female", ip_address: "91.0.247.112", createdAt: "12/10/2018" }, +{ _id: 678, firstName: "Enrico", lastName: "Pattullo", email: "epattulloit@ucsd.edu", gender: "Male", ip_address: "172.205.206.156", createdAt: "11/7/2018" }, +{ _id: 679, firstName: "Orv", lastName: "Alberts", email: "oalbertsiu@gnu.org", gender: "Male", ip_address: "59.240.98.8", createdAt: "6/18/2018" }, +{ _id: 680, firstName: "Genovera", lastName: "Ortiga", email: "gortigaiv@mlb.com", gender: "Female", ip_address: "255.155.144.11", createdAt: "8/20/2018" }, +{ _id: 681, firstName: "Mira", lastName: "Tussaine", email: "mtussaineiw@google.cn", gender: "Female", ip_address: "85.136.139.204", createdAt: "2/7/2019" }, +{ _id: 682, firstName: "Vina", lastName: "Penzer", email: "vpenzerix@chron.com", gender: "Female", ip_address: "199.162.44.99", createdAt: "1/22/2019" }, +{ _id: 683, firstName: "Simona", lastName: "Ransfield", email: "sransfieldiy@newyorker.com", gender: "Female", ip_address: "71.183.132.197", createdAt: "8/24/2018" }, +{ _id: 684, firstName: "Llewellyn", lastName: "Golston", email: "lgolstoniz@marriott.com", gender: "Male", ip_address: "228.201.69.7", createdAt: "3/29/2018" }, +{ _id: 685, firstName: "Elwin", lastName: "Tremollet", email: "etremolletj0@un.org", gender: "Male", ip_address: "27.112.166.189", createdAt: "11/5/2018" }, +{ _id: 686, firstName: "Wallie", lastName: "Jeppe", email: "wjeppej1@taobao.com", gender: "Male", ip_address: "244.223.16.138", createdAt: "7/10/2018" }, +{ _id: 687, firstName: "Michele", lastName: "O'Lunney", email: "molunneyj2@mapquest.com", gender: "Male", ip_address: "143.160.49.3", createdAt: "1/15/2019" }, +{ _id: 688, firstName: "Abran", lastName: "Vause", email: "avausej3@tamu.edu", gender: "Male", ip_address: "151.253.35.230", createdAt: "3/29/2018" }, +{ _id: 689, firstName: "Glyn", lastName: "Alloisi", email: "galloisij4@nyu.edu", gender: "Female", ip_address: "16.184.253.64", createdAt: "10/1/2018" }, +{ _id: 690, firstName: "Helene", lastName: "Stanyforth", email: "hstanyforthj5@networkadvertising.org", gender: "Female", ip_address: "185.184.49.222", createdAt: "10/11/2018" }, +{ _id: 691, firstName: "Ashlan", lastName: "Girardet", email: "agirardetj6@netvibes.com", gender: "Female", ip_address: "10.85.210.115", createdAt: "2/5/2019" }, +{ _id: 692, firstName: "Raina", lastName: "Januszewski", email: "rjanuszewskij7@icq.com", gender: "Female", ip_address: "45.77.182.160", createdAt: "9/28/2018" }, +{ _id: 693, firstName: "Bartlet", lastName: "Farfolomeev", email: "bfarfolomeevj8@constantcontact.com", gender: "Male", ip_address: "127.216.37.51", createdAt: "12/10/2018" }, +{ _id: 694, firstName: "Marius", lastName: "Dwyer", email: "mdwyerj9@t.co", gender: "Male", ip_address: "183.173.128.51", createdAt: "2/26/2018" }, +{ _id: 695, firstName: "Dorey", lastName: "Waberer", email: "dwabererja@tripadvisor.com", gender: "Female", ip_address: "19.191.47.60", createdAt: "7/7/2018" }, +{ _id: 696, firstName: "Kirk", lastName: "Dedam", email: "kdedamjb@jigsy.com", gender: "Male", ip_address: "115.3.73.40", createdAt: "2/7/2019" }, +{ _id: 697, firstName: "Dennis", lastName: "Conerding", email: "dconerdingjc@java.com", gender: "Male", ip_address: "248.205.166.223", createdAt: "6/27/2018" }, +{ _id: 698, firstName: "Ginny", lastName: "Bexley", email: "gbexleyjd@facebook.com", gender: "Female", ip_address: "42.227.64.96", createdAt: "10/13/2018" }, +{ _id: 699, firstName: "Darb", lastName: "Guerreiro", email: "dguerreiroje@mlb.com", gender: "Male", ip_address: "164.49.134.181", createdAt: "6/1/2018" }, +{ _id: 700, firstName: "Wallas", lastName: "Nicklin", email: "wnicklinjf@loc.gov", gender: "Male", ip_address: "151.115.151.205", createdAt: "9/4/2018" }, +{ _id: 701, firstName: "Cordell", lastName: "Suche", email: "csuchejg@microsoft.com", gender: "Male", ip_address: "226.254.242.98", createdAt: "3/14/2018" }, +{ _id: 702, firstName: "Rutter", lastName: "Fenich", email: "rfenichjh@cbsnews.com", gender: "Male", ip_address: "223.37.118.22", createdAt: "9/6/2018" }, +{ _id: 703, firstName: "Alvie", lastName: "Summerill", email: "asummerillji@europa.eu", gender: "Male", ip_address: "2.130.180.95", createdAt: "3/10/2018" }, +{ _id: 704, firstName: "Perren", lastName: "Borrie", email: "pborriejj@eepurl.com", gender: "Male", ip_address: "146.5.111.240", createdAt: "4/25/2018" }, +{ _id: 705, firstName: "Jody", lastName: "Digger", email: "jdiggerjk@drupal.org", gender: "Male", ip_address: "145.251.14.151", createdAt: "8/23/2018" }, +{ _id: 706, firstName: "Oswald", lastName: "Buttwell", email: "obuttwelljl@pen.io", gender: "Male", ip_address: "49.73.112.167", createdAt: "7/29/2018" }, +{ _id: 707, firstName: "Jeanelle", lastName: "Battell", email: "jbattelljm@umn.edu", gender: "Female", ip_address: "241.165.115.198", createdAt: "12/3/2018" }, +{ _id: 708, firstName: "Rosaleen", lastName: "Lewzey", email: "rlewzeyjn@dropbox.com", gender: "Female", ip_address: "253.82.156.204", createdAt: "4/7/2018" }, +{ _id: 709, firstName: "Gregg", lastName: "Towriss", email: "gtowrissjo@usnews.com", gender: "Male", ip_address: "172.114.6.125", createdAt: "1/15/2019" }, +{ _id: 710, firstName: "Kareem", lastName: "Limpenny", email: "klimpennyjp@google.ca", gender: "Male", ip_address: "50.35.99.50", createdAt: "5/21/2018" }, +{ _id: 711, firstName: "Quinlan", lastName: "Freshwater", email: "qfreshwaterjq@quantcast.com", gender: "Male", ip_address: "70.173.201.113", createdAt: "12/4/2018" }, +{ _id: 712, firstName: "Hazlett", lastName: "Stote", email: "hstotejr@abc.net.au", gender: "Male", ip_address: "82.0.247.247", createdAt: "7/20/2018" }, +{ _id: 713, firstName: "Ike", lastName: "Salmen", email: "isalmenjs@virginia.edu", gender: "Male", ip_address: "150.179.180.151", createdAt: "12/2/2018" }, +{ _id: 714, firstName: "Natale", lastName: "Flacknell", email: "nflacknelljt@goo.ne.jp", gender: "Male", ip_address: "32.126.209.81", createdAt: "4/28/2018" }, +{ _id: 715, firstName: "Erik", lastName: "Bootell", email: "ebootellju@wsj.com", gender: "Male", ip_address: "116.170.150.231", createdAt: "9/29/2018" }, +{ _id: 716, firstName: "Bernardo", lastName: "Nann", email: "bnannjv@sitemeter.com", gender: "Male", ip_address: "157.180.184.0", createdAt: "2/22/2018" }, +{ _id: 717, firstName: "Sal", lastName: "Hackworthy", email: "shackworthyjw@ycombinator.com", gender: "Female", ip_address: "146.102.124.148", createdAt: "11/7/2018" }, +{ _id: 718, firstName: "Marc", lastName: "Rubie", email: "mrubiejx@webnode.com", gender: "Male", ip_address: "76.123.212.211", createdAt: "8/6/2018" }, +{ _id: 719, firstName: "Alick", lastName: "Gary", email: "agaryjy@jugem.jp", gender: "Male", ip_address: "179.145.93.40", createdAt: "5/16/2018" }, +{ _id: 720, firstName: "Patin", lastName: "O'Connolly", email: "poconnollyjz@1und1.de", gender: "Male", ip_address: "153.5.67.163", createdAt: "11/21/2018" }, +{ _id: 721, firstName: "Arturo", lastName: "Naismith", email: "anaismithk0@salon.com", gender: "Male", ip_address: "92.254.153.249", createdAt: "3/7/2018" }, +{ _id: 722, firstName: "Evangelin", lastName: "Macknish", email: "emacknishk1@ucla.edu", gender: "Female", ip_address: "71.201.220.210", createdAt: "8/3/2018" }, +{ _id: 723, firstName: "Marco", lastName: "McCuis", email: "mmccuisk2@bigcartel.com", gender: "Male", ip_address: "94.180.85.246", createdAt: "4/2/2018" }, +{ _id: 724, firstName: "Aldo", lastName: "O'Hannen", email: "aohannenk3@scientificamerican.com", gender: "Male", ip_address: "223.68.232.24", createdAt: "4/1/2018" }, +{ _id: 725, firstName: "Mirabella", lastName: "Piddocke", email: "mpiddockek4@pagesperso-orange.fr", gender: "Female", ip_address: "117.79.123.86", createdAt: "4/14/2018" }, +{ _id: 726, firstName: "Robena", lastName: "MacInnes", email: "rmacinnesk5@abc.net.au", gender: "Female", ip_address: "178.236.20.214", createdAt: "12/17/2018" }, +{ _id: 727, firstName: "Andrea", lastName: "Prestney", email: "aprestneyk6@newsvine.com", gender: "Male", ip_address: "13.197.22.65", createdAt: "7/9/2018" }, +{ _id: 728, firstName: "Eb", lastName: "Toppas", email: "etoppask7@toplist.cz", gender: "Male", ip_address: "249.50.239.125", createdAt: "5/22/2018" }, +{ _id: 729, firstName: "Amalea", lastName: "Dikelin", email: "adikelink8@de.vu", gender: "Female", ip_address: "95.135.39.169", createdAt: "11/9/2018" }, +{ _id: 730, firstName: "Joanna", lastName: "Feldberg", email: "jfeldbergk9@imageshack.us", gender: "Female", ip_address: "192.31.22.234", createdAt: "12/17/2018" }, +{ _id: 731, firstName: "Lazar", lastName: "Varlow", email: "lvarlowka@networksolutions.com", gender: "Male", ip_address: "42.172.134.67", createdAt: "1/25/2019" }, +{ _id: 732, firstName: "Saleem", lastName: "Hassekl", email: "shasseklkb@aol.com", gender: "Male", ip_address: "111.54.146.52", createdAt: "9/8/2018" }, +{ _id: 733, firstName: "Missie", lastName: "Begwell", email: "mbegwellkc@google.co.uk", gender: "Female", ip_address: "57.194.211.59", createdAt: "5/30/2018" }, +{ _id: 734, firstName: "Estrellita", lastName: "Monkley", email: "emonkleykd@elpais.com", gender: "Female", ip_address: "70.114.255.212", createdAt: "4/8/2018" }, +{ _id: 735, firstName: "Jabez", lastName: "Pietruszka", email: "jpietruszkake@auda.org.au", gender: "Male", ip_address: "58.123.55.222", createdAt: "9/14/2018" }, +{ _id: 736, firstName: "Junia", lastName: "Normanvill", email: "jnormanvillkf@vimeo.com", gender: "Female", ip_address: "163.26.114.144", createdAt: "1/11/2019" }, +{ _id: 737, firstName: "Risa", lastName: "Hatter", email: "rhatterkg@oaic.gov.au", gender: "Female", ip_address: "111.236.148.26", createdAt: "4/6/2018" }, +{ _id: 738, firstName: "Padraig", lastName: "Blitzer", email: "pblitzerkh@google.com.br", gender: "Male", ip_address: "172.191.189.131", createdAt: "12/1/2018" }, +{ _id: 739, firstName: "Stanislaus", lastName: "Pinnick", email: "spinnickki@storify.com", gender: "Male", ip_address: "222.48.18.14", createdAt: "4/14/2018" }, +{ _id: 740, firstName: "Mead", lastName: "Braxton", email: "mbraxtonkj@google.co.jp", gender: "Male", ip_address: "121.146.31.151", createdAt: "11/8/2018" }, +{ _id: 741, firstName: "Umberto", lastName: "Frediani", email: "ufredianikk@gizmodo.com", gender: "Male", ip_address: "41.31.64.69", createdAt: "9/9/2018" }, +{ _id: 742, firstName: "Betti", lastName: "Ciciura", email: "bciciurakl@newyorker.com", gender: "Female", ip_address: "155.36.227.58", createdAt: "9/24/2018" }, +{ _id: 743, firstName: "Pattie", lastName: "Bene", email: "pbenekm@alexa.com", gender: "Female", ip_address: "206.61.53.74", createdAt: "12/8/2018" }, +{ _id: 744, firstName: "Lay", lastName: "Wilcott", email: "lwilcottkn@themeforest.net", gender: "Male", ip_address: "136.221.31.58", createdAt: "10/13/2018" }, +{ _id: 745, firstName: "Tresa", lastName: "Pickup", email: "tpickupko@blogger.com", gender: "Female", ip_address: "210.197.197.234", createdAt: "5/12/2018" }, +{ _id: 746, firstName: "Sterne", lastName: "Enever", email: "seneverkp@hexun.com", gender: "Male", ip_address: "227.216.106.97", createdAt: "3/10/2018" }, +{ _id: 747, firstName: "Cully", lastName: "Allsobrook", email: "callsobrookkq@deliciousdays.com", gender: "Male", ip_address: "157.58.131.189", createdAt: "7/13/2018" }, +{ _id: 748, firstName: "Wolfgang", lastName: "Perrett", email: "wperrettkr@mysql.com", gender: "Male", ip_address: "136.57.205.127", createdAt: "10/5/2018" }, +{ _id: 749, firstName: "Louise", lastName: "Haith", email: "lhaithks@statcounter.com", gender: "Female", ip_address: "129.236.36.55", createdAt: "3/27/2018" }, +{ _id: 750, firstName: "Aristotle", lastName: "Crush", email: "acrushkt@youku.com", gender: "Male", ip_address: "215.120.236.146", createdAt: "3/10/2018" }, +{ _id: 751, firstName: "Gaby", lastName: "Harome", email: "gharomeku@state.gov", gender: "Male", ip_address: "220.176.34.31", createdAt: "2/24/2018" }, +{ _id: 752, firstName: "Anetta", lastName: "Cowdrey", email: "acowdreykv@cbsnews.com", gender: "Female", ip_address: "200.130.227.54", createdAt: "6/5/2018" }, +{ _id: 753, firstName: "Jobie", lastName: "Jeakins", email: "jjeakinskw@sakura.ne.jp", gender: "Female", ip_address: "202.162.55.56", createdAt: "6/26/2018" }, +{ _id: 754, firstName: "Farris", lastName: "Alyutin", email: "falyutinkx@chron.com", gender: "Male", ip_address: "90.23.176.228", createdAt: "6/12/2018" }, +{ _id: 755, firstName: "Darrel", lastName: "Treagust", email: "dtreagustky@twitter.com", gender: "Male", ip_address: "3.235.211.198", createdAt: "6/4/2018" }, +{ _id: 756, firstName: "Lowell", lastName: "Mariotte", email: "lmariottekz@msu.edu", gender: "Male", ip_address: "136.218.68.73", createdAt: "5/29/2018" }, +{ _id: 757, firstName: "Carmen", lastName: "Grimley", email: "cgrimleyl0@mayoclinic.com", gender: "Female", ip_address: "113.216.186.41", createdAt: "7/20/2018" }, +{ _id: 758, firstName: "Tiffy", lastName: "Mates", email: "tmatesl1@gizmodo.com", gender: "Female", ip_address: "222.64.31.254", createdAt: "9/17/2018" }, +{ _id: 759, firstName: "Magdalen", lastName: "Roskeilly", email: "mroskeillyl2@google.ru", gender: "Female", ip_address: "228.109.166.25", createdAt: "12/10/2018" }, +{ _id: 760, firstName: "Tammie", lastName: "Longfut", email: "tlongfutl3@ox.ac.uk", gender: "Male", ip_address: "21.35.183.21", createdAt: "1/31/2019" }, +{ _id: 761, firstName: "Booth", lastName: "Caukill", email: "bcaukilll4@washingtonpost.com", gender: "Male", ip_address: "135.214.229.175", createdAt: "12/15/2018" }, +{ _id: 762, firstName: "Aldin", lastName: "Clausner", email: "aclausnerl5@arstechnica.com", gender: "Male", ip_address: "221.181.177.237", createdAt: "1/29/2019" }, +{ _id: 763, firstName: "Mireille", lastName: "Girvan", email: "mgirvanl6@economist.com", gender: "Female", ip_address: "234.196.192.229", createdAt: "11/14/2018" }, +{ _id: 764, firstName: "Alick", lastName: "Aronowitz", email: "aaronowitzl7@miibeian.gov.cn", gender: "Male", ip_address: "106.176.82.155", createdAt: "8/2/2018" }, +{ _id: 765, firstName: "Happy", lastName: "Iddenden", email: "hiddendenl8@is.gd", gender: "Female", ip_address: "112.96.217.100", createdAt: "6/1/2018" }, +{ _id: 766, firstName: "Leon", lastName: "Trassler", email: "ltrasslerl9@devhub.com", gender: "Male", ip_address: "100.242.227.198", createdAt: "12/2/2018" }, +{ _id: 767, firstName: "Julina", lastName: "McPartlin", email: "jmcpartlinla@redcross.org", gender: "Female", ip_address: "36.66.235.10", createdAt: "2/15/2018" }, +{ _id: 768, firstName: "Debby", lastName: "Gwilliam", email: "dgwilliamlb@macromedia.com", gender: "Female", ip_address: "156.238.197.103", createdAt: "7/30/2018" }, +{ _id: 769, firstName: "Alyosha", lastName: "Hockell", email: "ahockelllc@google.com.br", gender: "Male", ip_address: "206.189.85.235", createdAt: "11/13/2018" }, +{ _id: 770, firstName: "Grantham", lastName: "Praundl", email: "gpraundlld@hibu.com", gender: "Male", ip_address: "90.92.177.61", createdAt: "3/14/2018" }, +{ _id: 771, firstName: "Roxane", lastName: "Vinck", email: "rvinckle@parallels.com", gender: "Female", ip_address: "254.32.154.44", createdAt: "11/21/2018" }, +{ _id: 772, firstName: "Bentley", lastName: "Noot", email: "bnootlf@prnewswire.com", gender: "Male", ip_address: "209.166.127.242", createdAt: "8/23/2018" }, +{ _id: 773, firstName: "Burty", lastName: "Fyall", email: "bfyalllg@pagesperso-orange.fr", gender: "Male", ip_address: "194.48.112.174", createdAt: "9/1/2018" }, +{ _id: 774, firstName: "Whittaker", lastName: "Maddern", email: "wmaddernlh@pen.io", gender: "Male", ip_address: "211.108.9.88", createdAt: "8/22/2018" }, +{ _id: 775, firstName: "Kellby", lastName: "Fulun", email: "kfulunli@nps.gov", gender: "Male", ip_address: "2.223.210.128", createdAt: "4/20/2018" }, +{ _id: 776, firstName: "Willi", lastName: "Dufton", email: "wduftonlj@acquirethisname.com", gender: "Male", ip_address: "177.205.24.118", createdAt: "4/14/2018" }, +{ _id: 777, firstName: "Kristan", lastName: "Gradwell", email: "kgradwelllk@bravesites.com", gender: "Female", ip_address: "162.126.12.176", createdAt: "7/13/2018" }, +{ _id: 778, firstName: "Sharleen", lastName: "Paramore", email: "sparamorell@ning.com", gender: "Female", ip_address: "179.92.26.3", createdAt: "11/23/2018" }, +{ _id: 779, firstName: "Marchelle", lastName: "Villa", email: "mvillalm@eventbrite.com", gender: "Female", ip_address: "64.246.224.24", createdAt: "3/17/2018" }, +{ _id: 780, firstName: "Parrnell", lastName: "Whitbread", email: "pwhitbreadln@vk.com", gender: "Male", ip_address: "90.34.142.213", createdAt: "9/23/2018" }, +{ _id: 781, firstName: "Meggie", lastName: "Swannie", email: "mswannielo@webeden.co.uk", gender: "Female", ip_address: "146.16.200.92", createdAt: "12/23/2018" }, +{ _id: 782, firstName: "Colman", lastName: "Rubens", email: "crubenslp@wiley.com", gender: "Male", ip_address: "133.164.112.53", createdAt: "6/5/2018" }, +{ _id: 783, firstName: "Loutitia", lastName: "Matuszewski", email: "lmatuszewskilq@free.fr", gender: "Female", ip_address: "6.137.31.96", createdAt: "9/13/2018" }, +{ _id: 784, firstName: "Celesta", lastName: "Mosco", email: "cmoscolr@shinystat.com", gender: "Female", ip_address: "115.129.116.74", createdAt: "4/6/2018" }, +{ _id: 785, firstName: "Yorgos", lastName: "Chadburn", email: "ychadburnls@delicious.com", gender: "Male", ip_address: "166.206.13.213", createdAt: "11/14/2018" }, +{ _id: 786, firstName: "Jana", lastName: "Mosco", email: "jmoscolt@yandex.ru", gender: "Female", ip_address: "127.144.53.105", createdAt: "1/4/2019" }, +{ _id: 787, firstName: "Gan", lastName: "Nix", email: "gnixlu@github.io", gender: "Male", ip_address: "128.59.129.109", createdAt: "7/24/2018" }, +{ _id: 788, firstName: "Molli", lastName: "Jarrold", email: "mjarroldlv@howstuffworks.com", gender: "Female", ip_address: "160.248.29.18", createdAt: "11/20/2018" }, +{ _id: 789, firstName: "Prue", lastName: "Profit", email: "pprofitlw@mtv.com", gender: "Female", ip_address: "10.123.109.22", createdAt: "1/17/2019" }, +{ _id: 790, firstName: "Padraig", lastName: "Mariaud", email: "pmariaudlx@bravesites.com", gender: "Male", ip_address: "1.138.188.132", createdAt: "10/28/2018" }, +{ _id: 791, firstName: "Victoir", lastName: "Applebee", email: "vapplebeely@usatoday.com", gender: "Male", ip_address: "209.237.17.54", createdAt: "10/31/2018" }, +{ _id: 792, firstName: "Pincas", lastName: "Kobelt", email: "pkobeltlz@cbsnews.com", gender: "Male", ip_address: "179.224.132.178", createdAt: "3/3/2018" }, +{ _id: 793, firstName: "Denni", lastName: "Couling", email: "dcoulingm0@seattletimes.com", gender: "Female", ip_address: "87.54.246.14", createdAt: "8/16/2018" }, +{ _id: 794, firstName: "Clarinda", lastName: "Gricewood", email: "cgricewoodm1@bluehost.com", gender: "Female", ip_address: "254.250.203.156", createdAt: "2/15/2018" }, +{ _id: 795, firstName: "Carlos", lastName: "Jenkerson", email: "cjenkersonm2@posterous.com", gender: "Male", ip_address: "114.154.185.167", createdAt: "10/15/2018" }, +{ _id: 796, firstName: "Cale", lastName: "Grimmer", email: "cgrimmerm3@vk.com", gender: "Male", ip_address: "39.252.251.172", createdAt: "9/7/2018" }, +{ _id: 797, firstName: "Aguste", lastName: "Harrill", email: "aharrillm4@biglobe.ne.jp", gender: "Male", ip_address: "108.109.235.202", createdAt: "9/29/2018" }, +{ _id: 798, firstName: "Ofella", lastName: "Jenny", email: "ojennym5@tiny.cc", gender: "Female", ip_address: "216.96.54.95", createdAt: "6/12/2018" }, +{ _id: 799, firstName: "Jorgan", lastName: "Gimber", email: "jgimberm6@virginia.edu", gender: "Male", ip_address: "194.152.35.186", createdAt: "4/27/2018" }, +{ _id: 800, firstName: "Tabby", lastName: "McVity", email: "tmcvitym7@wordpress.org", gender: "Female", ip_address: "240.222.26.23", createdAt: "5/15/2018" }, +{ _id: 801, firstName: "Judi", lastName: "Giacomucci", email: "jgiacomuccim8@springer.com", gender: "Female", ip_address: "181.99.10.36", createdAt: "2/14/2018" }, +{ _id: 802, firstName: "Mordecai", lastName: "Wallicker", email: "mwallickerm9@jimdo.com", gender: "Male", ip_address: "52.230.140.0", createdAt: "5/29/2018" }, +{ _id: 803, firstName: "Mychal", lastName: "Manson", email: "mmansonma@cbslocal.com", gender: "Male", ip_address: "52.44.22.80", createdAt: "9/30/2018" }, +{ _id: 804, firstName: "Karine", lastName: "Wallentin", email: "kwallentinmb@free.fr", gender: "Female", ip_address: "254.153.222.59", createdAt: "12/9/2018" }, +{ _id: 805, firstName: "Artur", lastName: "Dunbleton", email: "adunbletonmc@seesaa.net", gender: "Male", ip_address: "127.36.54.199", createdAt: "1/20/2019" }, +{ _id: 806, firstName: "Evangelia", lastName: "Twiddy", email: "etwiddymd@simplemachines.org", gender: "Female", ip_address: "174.153.116.252", createdAt: "2/16/2018" }, +{ _id: 807, firstName: "Caroljean", lastName: "Kern", email: "ckernme@theglobeandmail.com", gender: "Female", ip_address: "3.156.58.104", createdAt: "10/17/2018" }, +{ _id: 808, firstName: "Addi", lastName: "Sylvester", email: "asylvestermf@accuweather.com", gender: "Female", ip_address: "75.201.229.205", createdAt: "3/21/2018" }, +{ _id: 809, firstName: "Kellina", lastName: "Boundey", email: "kboundeymg@npr.org", gender: "Female", ip_address: "96.162.6.99", createdAt: "8/4/2018" }, +{ _id: 810, firstName: "Nickolai", lastName: "Davis", email: "ndavismh@webs.com", gender: "Male", ip_address: "170.111.194.194", createdAt: "3/26/2018" }, +{ _id: 811, firstName: "Mohammed", lastName: "Berthe", email: "mberthemi@angelfire.com", gender: "Male", ip_address: "117.71.213.78", createdAt: "4/21/2018" }, +{ _id: 812, firstName: "Mariquilla", lastName: "Hassin", email: "mhassinmj@walmart.com", gender: "Female", ip_address: "6.76.241.228", createdAt: "12/27/2018" }, +{ _id: 813, firstName: "Neill", lastName: "Giacomi", email: "ngiacomimk@cafepress.com", gender: "Male", ip_address: "23.248.245.157", createdAt: "12/7/2018" }, +{ _id: 814, firstName: "Venus", lastName: "Stanhope", email: "vstanhopeml@un.org", gender: "Female", ip_address: "82.120.33.99", createdAt: "10/26/2018" }, +{ _id: 815, firstName: "Almira", lastName: "Choppin", email: "achoppinmm@eepurl.com", gender: "Female", ip_address: "103.91.249.94", createdAt: "3/15/2018" }, +{ _id: 816, firstName: "Trisha", lastName: "Terrington", email: "tterringtonmn@walmart.com", gender: "Female", ip_address: "128.6.141.46", createdAt: "1/13/2019" }, +{ _id: 817, firstName: "Howard", lastName: "Alflat", email: "halflatmo@friendfeed.com", gender: "Male", ip_address: "229.116.240.47", createdAt: "1/4/2019" }, +{ _id: 818, firstName: "Lief", lastName: "Vasilenko", email: "lvasilenkomp@gravatar.com", gender: "Male", ip_address: "58.162.64.218", createdAt: "6/18/2018" }, +{ _id: 819, firstName: "Rupert", lastName: "Liell", email: "rliellmq@businessweek.com", gender: "Male", ip_address: "108.172.40.187", createdAt: "2/11/2018" }, +{ _id: 820, firstName: "Eugenio", lastName: "Label", email: "elabelmr@sfgate.com", gender: "Male", ip_address: "50.177.226.95", createdAt: "12/30/2018" }, +{ _id: 821, firstName: "Celestyna", lastName: "Charleston", email: "ccharlestonms@dailymail.co.uk", gender: "Female", ip_address: "136.150.140.236", createdAt: "4/22/2018" }, +{ _id: 822, firstName: "Zackariah", lastName: "Hayto", email: "zhaytomt@cnbc.com", gender: "Male", ip_address: "13.14.79.47", createdAt: "12/30/2018" }, +{ _id: 823, firstName: "Tessy", lastName: "Stean", email: "tsteanmu@nba.com", gender: "Female", ip_address: "233.44.136.97", createdAt: "11/4/2018" }, +{ _id: 824, firstName: "Paule", lastName: "Braybrooke", email: "pbraybrookemv@barnesandnoble.com", gender: "Female", ip_address: "94.217.26.31", createdAt: "5/30/2018" }, +{ _id: 825, firstName: "Tobit", lastName: "Wood", email: "twoodmw@wikispaces.com", gender: "Male", ip_address: "233.5.58.149", createdAt: "2/25/2018" }, +{ _id: 826, firstName: "Buck", lastName: "Bumpus", email: "bbumpusmx@virginia.edu", gender: "Male", ip_address: "191.80.84.194", createdAt: "7/3/2018" }, +{ _id: 827, firstName: "Ritchie", lastName: "Ferrer", email: "rferrermy@usatoday.com", gender: "Male", ip_address: "148.183.83.214", createdAt: "9/19/2018" }, +{ _id: 828, firstName: "Kendre", lastName: "Branchett", email: "kbranchettmz@unicef.org", gender: "Female", ip_address: "155.13.3.48", createdAt: "5/6/2018" }, +{ _id: 829, firstName: "Tiffanie", lastName: "Warner", email: "twarnern0@w3.org", gender: "Female", ip_address: "158.123.84.216", createdAt: "2/14/2018" }, +{ _id: 830, firstName: "Brander", lastName: "Dudbridge", email: "bdudbridgen1@google.co.jp", gender: "Male", ip_address: "99.202.129.125", createdAt: "1/28/2019" }, +{ _id: 831, firstName: "Geralda", lastName: "Neath", email: "gneathn2@blogger.com", gender: "Female", ip_address: "198.46.33.181", createdAt: "12/3/2018" }, +{ _id: 832, firstName: "Alvy", lastName: "Sucre", email: "asucren3@bloomberg.com", gender: "Male", ip_address: "49.11.212.158", createdAt: "9/8/2018" }, +{ _id: 833, firstName: "Denny", lastName: "Youings", email: "dyouingsn4@sphinn.com", gender: "Male", ip_address: "134.47.125.2", createdAt: "5/10/2018" }, +{ _id: 834, firstName: "Lovell", lastName: "Seary", email: "lsearyn5@nyu.edu", gender: "Male", ip_address: "5.21.177.221", createdAt: "7/2/2018" }, +{ _id: 835, firstName: "Burgess", lastName: "Maccrea", email: "bmaccrean6@cdbaby.com", gender: "Male", ip_address: "44.50.203.184", createdAt: "7/14/2018" }, +{ _id: 836, firstName: "Carlen", lastName: "Dumphry", email: "cdumphryn7@tmall.com", gender: "Female", ip_address: "224.193.81.207", createdAt: "5/26/2018" }, +{ _id: 837, firstName: "Ruperto", lastName: "Jefferson", email: "rjeffersonn8@mit.edu", gender: "Male", ip_address: "172.76.149.171", createdAt: "3/27/2018" }, +{ _id: 838, firstName: "Felipe", lastName: "Aylesbury", email: "faylesburyn9@nydailynews.com", gender: "Male", ip_address: "8.47.73.86", createdAt: "3/19/2018" }, +{ _id: 839, firstName: "Gonzalo", lastName: "Rickertsen", email: "grickertsenna@aboutads.info", gender: "Male", ip_address: "186.210.13.251", createdAt: "6/3/2018" }, +{ _id: 840, firstName: "Margaretha", lastName: "Landrieu", email: "mlandrieunb@un.org", gender: "Female", ip_address: "162.63.158.18", createdAt: "9/21/2018" }, +{ _id: 841, firstName: "Tirrell", lastName: "MacGoun", email: "tmacgounnc@twitpic.com", gender: "Male", ip_address: "181.166.99.249", createdAt: "11/25/2018" }, +{ _id: 842, firstName: "Niall", lastName: "Edmonson", email: "nedmonsonnd@techcrunch.com", gender: "Male", ip_address: "248.251.66.249", createdAt: "8/2/2018" }, +{ _id: 843, firstName: "Flore", lastName: "Grassin", email: "fgrassinne@taobao.com", gender: "Female", ip_address: "156.152.4.189", createdAt: "10/6/2018" }, +{ _id: 844, firstName: "Judd", lastName: "Keenan", email: "jkeenannf@ovh.net", gender: "Male", ip_address: "114.61.65.69", createdAt: "2/16/2018" }, +{ _id: 845, firstName: "Willa", lastName: "Sapshed", email: "wsapshedng@e-recht24.de", gender: "Female", ip_address: "11.163.24.205", createdAt: "7/31/2018" }, +{ _id: 846, firstName: "Aloisia", lastName: "Kenningley", email: "akenningleynh@state.tx.us", gender: "Female", ip_address: "92.125.67.106", createdAt: "7/15/2018" }, +{ _id: 847, firstName: "Ulrich", lastName: "Fursland", email: "ufurslandni@woothemes.com", gender: "Male", ip_address: "121.201.7.232", createdAt: "8/17/2018" }, +{ _id: 848, firstName: "Adamo", lastName: "Sincock", email: "asincocknj@angelfire.com", gender: "Male", ip_address: "190.23.231.15", createdAt: "11/20/2018" }, +{ _id: 849, firstName: "Lib", lastName: "Austins", email: "laustinsnk@tripadvisor.com", gender: "Female", ip_address: "167.37.79.130", createdAt: "11/25/2018" }, +{ _id: 850, firstName: "Archaimbaud", lastName: "Milkins", email: "amilkinsnl@live.com", gender: "Male", ip_address: "33.33.114.99", createdAt: "4/4/2018" }, +{ _id: 851, firstName: "Papagena", lastName: "Chellam", email: "pchellamnm@sina.com.cn", gender: "Female", ip_address: "118.168.133.100", createdAt: "3/2/2018" }, +{ _id: 852, firstName: "Rosalia", lastName: "Redgrove", email: "rredgrovenn@army.mil", gender: "Female", ip_address: "162.146.123.3", createdAt: "4/23/2018" }, +{ _id: 853, firstName: "Minor", lastName: "Doonican", email: "mdoonicanno@usatoday.com", gender: "Male", ip_address: "142.205.68.191", createdAt: "7/24/2018" }, +{ _id: 854, firstName: "Lancelot", lastName: "Burstowe", email: "lburstowenp@soup.io", gender: "Male", ip_address: "94.187.64.87", createdAt: "8/3/2018" }, +{ _id: 855, firstName: "Mischa", lastName: "Bawcock", email: "mbawcocknq@cnn.com", gender: "Male", ip_address: "90.75.208.51", createdAt: "6/10/2018" }, +{ _id: 856, firstName: "Holden", lastName: "Knapman", email: "hknapmannr@omniture.com", gender: "Male", ip_address: "50.249.182.158", createdAt: "9/11/2018" }, +{ _id: 857, firstName: "Stevy", lastName: "Dorr", email: "sdorrns@linkedin.com", gender: "Male", ip_address: "22.19.252.141", createdAt: "3/21/2018" }, +{ _id: 858, firstName: "Marcelle", lastName: "Prozillo", email: "mprozillont@spotify.com", gender: "Female", ip_address: "9.212.144.165", createdAt: "9/20/2018" }, +{ _id: 859, firstName: "Terence", lastName: "Philipeau", email: "tphilipeaunu@google.fr", gender: "Male", ip_address: "172.210.189.25", createdAt: "10/19/2018" }, +{ _id: 860, firstName: "Noam", lastName: "Saura", email: "nsauranv@jiathis.com", gender: "Male", ip_address: "223.58.5.74", createdAt: "4/5/2018" }, +{ _id: 861, firstName: "Glory", lastName: "Simonetti", email: "gsimonettinw@go.com", gender: "Female", ip_address: "130.207.67.170", createdAt: "11/29/2018" }, +{ _id: 862, firstName: "Elonore", lastName: "Reese", email: "ereesenx@elegantthemes.com", gender: "Female", ip_address: "46.103.76.232", createdAt: "1/3/2019" }, +{ _id: 863, firstName: "Guillema", lastName: "Ramble", email: "grambleny@51.la", gender: "Female", ip_address: "174.98.224.27", createdAt: "5/18/2018" }, +{ _id: 864, firstName: "Nil", lastName: "Pallant", email: "npallantnz@infoseek.co.jp", gender: "Male", ip_address: "35.198.136.176", createdAt: "7/17/2018" }, +{ _id: 865, firstName: "Lori", lastName: "Giovanni", email: "lgiovannio0@noaa.gov", gender: "Female", ip_address: "84.16.160.238", createdAt: "10/23/2018" }, +{ _id: 866, firstName: "Gabbie", lastName: "Amiranda", email: "gamirandao1@networksolutions.com", gender: "Male", ip_address: "102.58.7.2", createdAt: "8/25/2018" }, +{ _id: 867, firstName: "Sidney", lastName: "Fines", email: "sfineso2@umn.edu", gender: "Male", ip_address: "185.144.60.112", createdAt: "1/11/2019" }, +{ _id: 868, firstName: "Andreana", lastName: "Bowra", email: "abowrao3@jigsy.com", gender: "Female", ip_address: "244.30.182.139", createdAt: "8/4/2018" }, +{ _id: 869, firstName: "Augustine", lastName: "Mellmer", email: "amellmero4@yandex.ru", gender: "Male", ip_address: "233.148.86.80", createdAt: "12/25/2018" }, +{ _id: 870, firstName: "Crissie", lastName: "Zupone", email: "czuponeo5@prweb.com", gender: "Female", ip_address: "213.48.28.156", createdAt: "5/28/2018" }, +{ _id: 871, firstName: "Aldo", lastName: "Vazquez", email: "avazquezo6@sitemeter.com", gender: "Male", ip_address: "41.230.190.142", createdAt: "9/16/2018" }, +{ _id: 872, firstName: "Dominique", lastName: "Trimming", email: "dtrimmingo7@blogtalkradio.com", gender: "Male", ip_address: "4.235.22.225", createdAt: "9/23/2018" }, +{ _id: 873, firstName: "Pete", lastName: "Hullin", email: "phullino8@sbwire.com", gender: "Male", ip_address: "54.124.185.229", createdAt: "4/14/2018" }, +{ _id: 874, firstName: "Ibbie", lastName: "Wasielewski", email: "iwasielewskio9@vimeo.com", gender: "Female", ip_address: "129.8.29.127", createdAt: "12/15/2018" }, +{ _id: 875, firstName: "Leyla", lastName: "Carlson", email: "lcarlsonoa@slideshare.net", gender: "Female", ip_address: "31.64.209.27", createdAt: "6/18/2018" }, +{ _id: 876, firstName: "Esther", lastName: "Stienton", email: "estientonob@people.com.cn", gender: "Female", ip_address: "111.9.11.140", createdAt: "8/18/2018" }, +{ _id: 877, firstName: "Yurik", lastName: "Bescoby", email: "ybescobyoc@usgs.gov", gender: "Male", ip_address: "50.73.133.59", createdAt: "5/27/2018" }, +{ _id: 878, firstName: "Tabbatha", lastName: "Emson", email: "temsonod@nhs.uk", gender: "Female", ip_address: "11.41.147.19", createdAt: "1/19/2019" }, +{ _id: 879, firstName: "Chance", lastName: "Colleymore", email: "ccolleymoreoe@narod.ru", gender: "Male", ip_address: "23.225.54.185", createdAt: "12/11/2018" }, +{ _id: 880, firstName: "Erv", lastName: "Boustead", email: "ebousteadof@apple.com", gender: "Male", ip_address: "247.213.70.73", createdAt: "12/26/2018" }, +{ _id: 881, firstName: "Cornelius", lastName: "Cherrie", email: "ccherrieog@spotify.com", gender: "Male", ip_address: "171.255.115.250", createdAt: "7/16/2018" }, +{ _id: 882, firstName: "Salem", lastName: "Rubinlicht", email: "srubinlichtoh@typepad.com", gender: "Male", ip_address: "195.79.97.228", createdAt: "12/11/2018" }, +{ _id: 883, firstName: "Siobhan", lastName: "Coton", email: "scotonoi@marriott.com", gender: "Female", ip_address: "155.172.112.173", createdAt: "5/9/2018" }, +{ _id: 884, firstName: "Faun", lastName: "Sneddon", email: "fsneddonoj@free.fr", gender: "Female", ip_address: "246.63.32.87", createdAt: "7/24/2018" }, +{ _id: 885, firstName: "Berkley", lastName: "Marquez", email: "bmarquezok@smh.com.au", gender: "Male", ip_address: "44.71.112.57", createdAt: "3/10/2018" }, +{ _id: 886, firstName: "Daven", lastName: "McAsgill", email: "dmcasgillol@360.cn", gender: "Male", ip_address: "240.146.252.31", createdAt: "1/22/2019" }, +{ _id: 887, firstName: "Cart", lastName: "O'Hanlon", email: "cohanlonom@hhs.gov", gender: "Male", ip_address: "77.154.54.84", createdAt: "10/25/2018" }, +{ _id: 888, firstName: "Bern", lastName: "de'-Ancy Willis", email: "bdeancywillison@newyorker.com", gender: "Male", ip_address: "0.54.13.46", createdAt: "3/24/2018" }, +{ _id: 889, firstName: "Pancho", lastName: "Dyster", email: "pdysteroo@imageshack.us", gender: "Male", ip_address: "227.40.78.242", createdAt: "1/10/2019" }, +{ _id: 890, firstName: "Nonnah", lastName: "Kegan", email: "nkeganop@domainmarket.com", gender: "Female", ip_address: "238.88.114.133", createdAt: "12/9/2018" }, +{ _id: 891, firstName: "Corrinne", lastName: "Mattersley", email: "cmattersleyoq@gnu.org", gender: "Female", ip_address: "178.88.57.36", createdAt: "1/27/2019" }, +{ _id: 892, firstName: "Lissa", lastName: "Jacmar", email: "ljacmaror@hud.gov", gender: "Female", ip_address: "223.148.249.70", createdAt: "7/29/2018" }, +{ _id: 893, firstName: "Lee", lastName: "Paiton", email: "lpaitonos@pbs.org", gender: "Male", ip_address: "81.240.129.117", createdAt: "5/15/2018" }, +{ _id: 894, firstName: "Shell", lastName: "Seeborne", email: "sseeborneot@chron.com", gender: "Male", ip_address: "249.151.98.189", createdAt: "8/12/2018" }, +{ _id: 895, firstName: "Isacco", lastName: "Stuck", email: "istuckou@yahoo.co.jp", gender: "Male", ip_address: "201.228.160.7", createdAt: "5/28/2018" }, +{ _id: 896, firstName: "Nap", lastName: "Iorizzi", email: "niorizziov@unc.edu", gender: "Male", ip_address: "56.68.228.41", createdAt: "11/9/2018" }, +{ _id: 897, firstName: "Symon", lastName: "Jacklin", email: "sjacklinow@e-recht24.de", gender: "Male", ip_address: "54.228.191.49", createdAt: "2/22/2018" }, +{ _id: 898, firstName: "Shell", lastName: "Pitts", email: "spittsox@blogtalkradio.com", gender: "Male", ip_address: "5.101.176.210", createdAt: "7/26/2018" }, +{ _id: 899, firstName: "Daniel", lastName: "Playden", email: "dplaydenoy@skyrock.com", gender: "Male", ip_address: "27.143.57.138", createdAt: "11/16/2018" }, +{ _id: 900, firstName: "Indira", lastName: "Manuel", email: "imanueloz@harvard.edu", gender: "Female", ip_address: "165.70.32.41", createdAt: "10/2/2018" }, +{ _id: 901, firstName: "Aleta", lastName: "Posselt", email: "aposseltp0@bing.com", gender: "Female", ip_address: "90.230.221.238", createdAt: "4/12/2018" }, +{ _id: 902, firstName: "Fredi", lastName: "Pelchat", email: "fpelchatp1@rediff.com", gender: "Female", ip_address: "238.224.242.81", createdAt: "3/9/2018" }, +{ _id: 903, firstName: "Cathryn", lastName: "Orehead", email: "coreheadp2@ca.gov", gender: "Female", ip_address: "82.93.230.91", createdAt: "2/20/2018" }, +{ _id: 904, firstName: "Ernie", lastName: "Bentham3", email: "ebenthamp3@people.com.cn", gender: "Male", ip_address: "82.56.70.196", createdAt: "10/1/2018" }, +{ _id: 905, firstName: "Brigit", lastName: "Cuss", email: "bcussp4@godaddy.com", gender: "Female", ip_address: "196.176.133.47", createdAt: "8/12/2018" }, +{ _id: 906, firstName: "Neala", lastName: "Retallack", email: "nretallackp5@house.gov", gender: "Female", ip_address: "143.64.184.129", createdAt: "10/9/2018" }, +{ _id: 907, firstName: "Gabbie", lastName: "Laise", email: "glaisep6@edublogs.org", gender: "Male", ip_address: "242.28.148.122", createdAt: "6/5/2018" }, +{ _id: 908, firstName: "Joyous", lastName: "Habbema", email: "jhabbemap7@marketwatch.com", gender: "Female", ip_address: "152.87.103.195", createdAt: "10/24/2018" }, +{ _id: 909, firstName: "Matty", lastName: "Mazzeo", email: "mmazzeop8@bbc.co.uk", gender: "Male", ip_address: "52.65.53.150", createdAt: "9/11/2018" }, +{ _id: 910, firstName: "Bertine", lastName: "Gloyens", email: "bgloyensp9@sina.com.cn", gender: "Female", ip_address: "242.59.3.27", createdAt: "5/2/2018" }, +{ _id: 911, firstName: "Brett", lastName: "Lemonnier", email: "blemonnierpa@technorati.com", gender: "Female", ip_address: "178.235.162.94", createdAt: "11/4/2018" }, +{ _id: 912, firstName: "Edlin", lastName: "Brook", email: "ebrookpb@businesswire.com", gender: "Male", ip_address: "0.128.153.182", createdAt: "11/3/2018" }, +{ _id: 913, firstName: "Rice", lastName: "McGettrick", email: "rmcgettrickpc@psu.edu", gender: "Male", ip_address: "154.114.95.75", createdAt: "5/17/2018" }, +{ _id: 914, firstName: "Pooh", lastName: "Lefeuvre", email: "plefeuvrepd@washington.edu", gender: "Male", ip_address: "103.175.42.178", createdAt: "2/13/2018" }, +{ _id: 915, firstName: "Clayson", lastName: "Poles", email: "cpolespe@nasa.gov", gender: "Male", ip_address: "59.180.35.212", createdAt: "1/16/2019" }, +{ _id: 916, firstName: "Pier", lastName: "Dowderswell", email: "pdowderswellpf@newsvine.com", gender: "Female", ip_address: "200.213.19.60", createdAt: "10/9/2018" }, +{ _id: 917, firstName: "Rayner", lastName: "Hammerich", email: "rhammerichpg@skype.com", gender: "Male", ip_address: "60.245.72.86", createdAt: "11/23/2018" }, +{ _id: 918, firstName: "Ham", lastName: "Baffin", email: "hbaffinph@si.edu", gender: "Male", ip_address: "172.92.60.194", createdAt: "12/31/2018" }, +{ _id: 919, firstName: "Ashla", lastName: "Penvarne", email: "apenvarnepi@netlog.com", gender: "Female", ip_address: "48.10.110.231", createdAt: "2/16/2018" }, +{ _id: 920, firstName: "Janeczka", lastName: "Rewcassell", email: "jrewcassellpj@seattletimes.com", gender: "Female", ip_address: "44.188.159.134", createdAt: "10/17/2018" }, +{ _id: 921, firstName: "Eliza", lastName: "Gullifant", email: "egullifantpk@cafepress.com", gender: "Female", ip_address: "129.179.218.172", createdAt: "4/2/2018" }, +{ _id: 922, firstName: "Ladonna", lastName: "McLenaghan", email: "lmclenaghanpl@yellowpages.com", gender: "Female", ip_address: "189.140.39.42", createdAt: "9/17/2018" }, +{ _id: 923, firstName: "Meredeth", lastName: "Boynton", email: "mboyntonpm@hugedomains.com", gender: "Male", ip_address: "74.240.167.189", createdAt: "8/22/2018" }, +{ _id: 924, firstName: "Tye", lastName: "Corbally", email: "tcorballypn@canalblog.com", gender: "Male", ip_address: "194.201.137.23", createdAt: "6/25/2018" }, +{ _id: 925, firstName: "Den", lastName: "Mansfield", email: "dmansfieldpo@aol.com", gender: "Male", ip_address: "105.202.244.54", createdAt: "1/24/2019" }, +{ _id: 926, firstName: "Moritz", lastName: "Facer", email: "mfacerpp@google.pl", gender: "Male", ip_address: "133.235.250.193", createdAt: "8/5/2018" }, +{ _id: 927, firstName: "Basil", lastName: "Durgan", email: "bdurganpq@lycos.com", gender: "Male", ip_address: "238.188.196.38", createdAt: "10/24/2018" }, +{ _id: 928, firstName: "Ewan", lastName: "Cescon", email: "ecesconpr@telegraph.co.uk", gender: "Male", ip_address: "59.76.5.202", createdAt: "9/22/2018" }, +{ _id: 929, firstName: "Jania", lastName: "Donavan", email: "jdonavanps@purevolume.com", gender: "Female", ip_address: "100.68.168.40", createdAt: "3/6/2018" }, +{ _id: 930, firstName: "Gabbie", lastName: "MacKee", email: "gmackeept@craigslist.org", gender: "Female", ip_address: "221.160.108.244", createdAt: "1/22/2019" }, +{ _id: 931, firstName: "Burtie", lastName: "Markey", email: "bmarkeypu@devhub.com", gender: "Male", ip_address: "53.148.32.133", createdAt: "12/14/2018" }, +{ _id: 932, firstName: "Ameline", lastName: "Ninnis", email: "aninnispv@epa.gov", gender: "Female", ip_address: "251.68.95.47", createdAt: "5/19/2018" }, +{ _id: 933, firstName: "Billie", lastName: "Rapo", email: "brapopw@friendfeed.com", gender: "Male", ip_address: "251.25.148.244", createdAt: "9/27/2018" }, +{ _id: 934, firstName: "Timmy", lastName: "Hawkswell", email: "thawkswellpx@hostgator.com", gender: "Male", ip_address: "189.94.109.109", createdAt: "10/29/2018" }, +{ _id: 935, firstName: "Mechelle", lastName: "Tripney", email: "mtripneypy@themeforest.net", gender: "Female", ip_address: "17.6.137.253", createdAt: "2/21/2018" }, +{ _id: 936, firstName: "Cicily", lastName: "Creamer", email: "ccreamerpz@blogger.com", gender: "Female", ip_address: "221.241.198.232", createdAt: "10/8/2018" }, +{ _id: 937, firstName: "Westbrook", lastName: "Courtes", email: "wcourtesq0@clickbank.net", gender: "Male", ip_address: "232.127.202.71", createdAt: "10/30/2018" }, +{ _id: 938, firstName: "Harriet", lastName: "Laity", email: "hlaityq1@photobucket.com", gender: "Female", ip_address: "253.95.47.90", createdAt: "2/19/2018" }, +{ _id: 939, firstName: "Cris", lastName: "Waymont", email: "cwaymontq2@dailymotion.com", gender: "Male", ip_address: "28.228.167.192", createdAt: "7/6/2018" }, +{ _id: 940, firstName: "Marcelle", lastName: "Dabinett", email: "mdabinettq3@telegraph.co.uk", gender: "Female", ip_address: "32.12.6.98", createdAt: "8/20/2018" }, +{ _id: 941, firstName: "Nial", lastName: "Wordsley", email: "nwordsleyq4@usgs.gov", gender: "Male", ip_address: "57.73.224.251", createdAt: "1/28/2019" }, +{ _id: 942, firstName: "Barn", lastName: "Townend", email: "btownendq5@nyu.edu", gender: "Male", ip_address: "104.37.197.177", createdAt: "6/28/2018" }, +{ _id: 943, firstName: "Casper", lastName: "Cristofaro", email: "ccristofaroq6@stanford.edu", gender: "Male", ip_address: "23.208.182.48", createdAt: "8/22/2018" }, +{ _id: 944, firstName: "Sadye", lastName: "Clinton", email: "sclintonq7@i2i.jp", gender: "Female", ip_address: "198.116.43.249", createdAt: "5/17/2018" }, +{ _id: 945, firstName: "Isaac", lastName: "De Bernardi", email: "idebernardiq8@mashable.com", gender: "Male", ip_address: "129.134.81.61", createdAt: "11/21/2018" }, +{ _id: 946, firstName: "Joachim", lastName: "McMyler", email: "jmcmylerq9@theglobeandmail.com", gender: "Male", ip_address: "218.149.81.141", createdAt: "9/3/2018" }, +{ _id: 947, firstName: "Burr", lastName: "Halston", email: "bhalstonqa@goo.ne.jp", gender: "Male", ip_address: "253.154.72.127", createdAt: "1/15/2019" }, +{ _id: 948, firstName: "Miriam", lastName: "Benedit", email: "mbeneditqb@economist.com", gender: "Female", ip_address: "81.82.219.9", createdAt: "3/24/2018" }, +{ _id: 949, firstName: "Gaspard", lastName: "Prigmore", email: "gprigmoreqc@theatlantic.com", gender: "Male", ip_address: "40.48.80.160", createdAt: "7/12/2018" }, +{ _id: 950, firstName: "Sherry", lastName: "Selwood", email: "sselwoodqd@hhs.gov", gender: "Female", ip_address: "182.190.251.105", createdAt: "8/24/2018" }, +{ _id: 951, firstName: "Deva", lastName: "Hamor", email: "dhamorqe@4shared.com", gender: "Female", ip_address: "247.102.40.239", createdAt: "12/27/2018" }, +{ _id: 952, firstName: "Trish", lastName: "Klemensiewicz", email: "tklemensiewiczqf@spotify.com", gender: "Female", ip_address: "245.0.79.104", createdAt: "9/30/2018" }, +{ _id: 953, firstName: "Sydney", lastName: "Le Borgne", email: "sleborgneqg@jiathis.com", gender: "Male", ip_address: "216.170.114.122", createdAt: "7/3/2018" }, +{ _id: 954, firstName: "Marybelle", lastName: "Zapater", email: "mzapaterqh@goodreads.com", gender: "Female", ip_address: "128.107.60.248", createdAt: "2/3/2019" }, +{ _id: 955, firstName: "Averill", lastName: "Kolczynski", email: "akolczynskiqi@who.int", gender: "Male", ip_address: "217.128.112.191", createdAt: "4/18/2018" }, +{ _id: 956, firstName: "Claudelle", lastName: "Gricewood", email: "cgricewoodqj@reddit.com", gender: "Female", ip_address: "101.25.195.41", createdAt: "11/29/2018" }, +{ _id: 957, firstName: "Kathrine", lastName: "Humphries", email: "khumphriesqk@mashable.com", gender: "Female", ip_address: "150.233.161.224", createdAt: "5/1/2018" }, +{ _id: 958, firstName: "Anica", lastName: "Gimblett", email: "agimblettql@clickbank.net", gender: "Female", ip_address: "203.221.89.72", createdAt: "11/4/2018" }, +{ _id: 959, firstName: "Nikita", lastName: "Cheverell", email: "ncheverellqm@foxnews.com", gender: "Male", ip_address: "135.118.164.220", createdAt: "9/4/2018" }, +{ _id: 960, firstName: "Solomon", lastName: "Coolican", email: "scoolicanqn@indiatimes.com", gender: "Male", ip_address: "249.101.134.103", createdAt: "6/26/2018" }, +{ _id: 961, firstName: "Nathanael", lastName: "Ohm", email: "nohmqo@taobao.com", gender: "Male", ip_address: "111.238.115.207", createdAt: "11/10/2018" }, +{ _id: 962, firstName: "Verne", lastName: "Gingel", email: "vgingelqp@sina.com.cn", gender: "Male", ip_address: "103.196.13.113", createdAt: "12/11/2018" }, +{ _id: 963, firstName: "Dallas", lastName: "Maydwell", email: "dmaydwellqq@ibm.com", gender: "Female", ip_address: "4.45.128.162", createdAt: "7/20/2018" }, +{ _id: 964, firstName: "Lilllie", lastName: "Ionnisian", email: "lionnisianqr@lycos.com", gender: "Female", ip_address: "226.34.220.124", createdAt: "3/11/2018" }, +{ _id: 965, firstName: "Tammie", lastName: "Bellwood", email: "tbellwoodqs@tuttocitta.it", gender: "Male", ip_address: "228.186.206.210", createdAt: "1/15/2019" }, +{ _id: 966, firstName: "Jayson", lastName: "Skirvin", email: "jskirvinqt@youtu.be", gender: "Male", ip_address: "82.217.215.226", createdAt: "7/14/2018" }, +{ _id: 967, firstName: "Mariska", lastName: "Maleham", email: "mmalehamqu@msn.com", gender: "Female", ip_address: "9.156.164.243", createdAt: "12/24/2018" }, +{ _id: 968, firstName: "Maria", lastName: "Kirkwood", email: "mkirkwoodqv@amazon.de", gender: "Female", ip_address: "14.149.222.157", createdAt: "9/30/2018" }, +{ _id: 969, firstName: "Kliment", lastName: "Zuenelli", email: "kzuenelliqw@yale.edu", gender: "Male", ip_address: "203.118.34.22", createdAt: "7/16/2018" }, +{ _id: 970, firstName: "Biron", lastName: "de Villier", email: "bdevillierqx@microsoft.com", gender: "Male", ip_address: "128.8.38.89", createdAt: "3/13/2018" }, +{ _id: 971, firstName: "Amargo", lastName: "Demougeot", email: "ademougeotqy@bandcamp.com", gender: "Female", ip_address: "230.39.89.38", createdAt: "5/20/2018" }, +{ _id: 972, firstName: "Zak", lastName: "Tamplin", email: "ztamplinqz@studiopress.com", gender: "Male", ip_address: "224.66.8.54", createdAt: "12/9/2018" }, +{ _id: 973, firstName: "Pincas", lastName: "Caveney", email: "pcaveneyr0@sourceforge.net", gender: "Male", ip_address: "0.47.176.141", createdAt: "2/20/2018" }, +{ _id: 974, firstName: "Alessandra", lastName: "Evamy", email: "aevamyr1@parallels.com", gender: "Female", ip_address: "202.135.84.37", createdAt: "10/28/2018" }, +{ _id: 975, firstName: "Nev", lastName: "Foulkes", email: "nfoulkesr2@cornell.edu", gender: "Male", ip_address: "35.251.45.98", createdAt: "9/21/2018" }, +{ _id: 976, firstName: "Chrissy", lastName: "Jeandillou", email: "cjeandillour3@microsoft.com", gender: "Female", ip_address: "122.154.60.108", createdAt: "2/1/2019" }, +{ _id: 977, firstName: "North", lastName: "Spacy", email: "nspacyr4@bing.com", gender: "Male", ip_address: "228.166.91.204", createdAt: "8/9/2018" }, +{ _id: 978, firstName: "Joceline", lastName: "Kinchin", email: "jkinchinr5@soup.io", gender: "Female", ip_address: "40.238.98.86", createdAt: "12/2/2018" }, +{ _id: 979, firstName: "Boote", lastName: "Gidley", email: "bgidleyr6@example.com", gender: "Male", ip_address: "226.183.169.60", createdAt: "11/1/2018" }, +{ _id: 980, firstName: "Leela", lastName: "Tort", email: "ltortr7@uol.com.br", gender: "Female", ip_address: "68.80.200.230", createdAt: "2/19/2018" }, +{ _id: 981, firstName: "Sheela", lastName: "Bruyet", email: "sbruyetr8@nih.gov", gender: "Female", ip_address: "224.159.148.49", createdAt: "5/28/2018" }, +{ _id: 982, firstName: "Dov", lastName: "Carrabot", email: "dcarrabotr9@angelfire.com", gender: "Male", ip_address: "15.107.89.143", createdAt: "9/28/2018" }, +{ _id: 983, firstName: "Louie", lastName: "Denis", email: "ldenisra@t.co", gender: "Male", ip_address: "43.145.17.243", createdAt: "10/21/2018" }, +{ _id: 984, firstName: "Shadow", lastName: "Boays", email: "sboaysrb@booking.com", gender: "Male", ip_address: "238.229.235.132", createdAt: "10/18/2018" }, +{ _id: 985, firstName: "Horten", lastName: "Pohlke", email: "hpohlkerc@amazon.de", gender: "Male", ip_address: "181.143.221.121", createdAt: "7/19/2018" }, +{ _id: 986, firstName: "Nickie", lastName: "Boultwood", email: "nboultwoodrd@edublogs.org", gender: "Male", ip_address: "10.48.150.96", createdAt: "8/24/2018" }, +{ _id: 987, firstName: "Nanon", lastName: "Catanheira", email: "ncatanheirare@unesco.org", gender: "Female", ip_address: "146.92.37.163", createdAt: "8/13/2018" }, +{ _id: 988, firstName: "Alvis", lastName: "Dimbylow", email: "adimbylowrf@geocities.jp", gender: "Male", ip_address: "18.246.221.1", createdAt: "2/23/2018" }, +{ _id: 989, firstName: "Ellwood", lastName: "Cleef", email: "ecleefrg@miibeian.gov.cn", gender: "Male", ip_address: "127.80.15.152", createdAt: "7/14/2018" }, +{ _id: 990, firstName: "Gustavus", lastName: "Breissan", email: "gbreissanrh@google.co.uk", gender: "Male", ip_address: "253.146.113.187", createdAt: "6/19/2018" }, +{ _id: 991, firstName: "Gerladina", lastName: "Aizlewood", email: "gaizlewoodri@sciencedaily.com", gender: "Female", ip_address: "25.170.232.16", createdAt: "11/9/2018" }, +{ _id: 992, firstName: "Sheelagh", lastName: "Sandercroft", email: "ssandercroftrj@typepad.com", gender: "Female", ip_address: "93.31.187.133", createdAt: "9/23/2018" }, +{ _id: 993, firstName: "Brandy", lastName: "Firmin", email: "bfirminrk@jiathis.com", gender: "Male", ip_address: "167.115.57.139", createdAt: "10/23/2018" }, +{ _id: 994, firstName: "Keslie", lastName: "Cassam", email: "kcassamrl@devhub.com", gender: "Female", ip_address: "24.46.203.56", createdAt: "1/11/2019" }, +{ _id: 995, firstName: "Hendrick", lastName: "Hessel", email: "hhesselrm@dion.ne.jp", gender: "Male", ip_address: "157.155.139.14", createdAt: "10/14/2018" }, +{ _id: 996, firstName: "Shelley", lastName: "Bernette", email: "sbernettern@g.co", gender: "Male", ip_address: "74.96.164.1", createdAt: "10/8/2018" }, +{ _id: 997, firstName: "Lita", lastName: "Panchen", email: "lpanchenro@google.it", gender: "Female", ip_address: "130.212.215.143", createdAt: "2/12/2018" }, +{ _id: 998, firstName: "Allianora", lastName: "Allgood", email: "aallgoodrp@chronoengine.com", gender: "Female", ip_address: "12.92.213.6", createdAt: "4/30/2018" }, +{ _id: 999, firstName: "Tommie", lastName: "Ellerby", email: "tellerbyrq@naver.com", gender: "Male", ip_address: "69.85.164.90", createdAt: "7/7/2018" }, +{ _id: 1000, firstName: "Shelba", lastName: "Cramond", email: "scramondrr@last.fm", gender: "Female", ip_address: "223.237.234.204", createdAt: "10/21/2018" }]; \ No newline at end of file diff --git a/test/encryptor-spec.ts b/test/encryptor-spec.ts new file mode 100644 index 0000000..fac2cec --- /dev/null +++ b/test/encryptor-spec.ts @@ -0,0 +1,22 @@ +import test from 'ava'; +import {AesUtil, Encryptor} from '../src/encryptor'; +let encryptor: AesUtil; +const masterKey = '1234567'; +const testString = "This is my test input"; +let encryptedString: string; + +test.before('setup encrypter', t => { + encryptor = new AesUtil(masterKey); + encryptedString = encryptor.encryptString(testString); +}); + +test('Should encrypt given string', t => { + t.true((encryptedString !== testString), "Verify output string is not the same"); +}); + +test('Should be able to decrypt encrypted string', t => { + const newAesUtil = new AesUtil(masterKey); + t.true((testString !== encryptedString), "Verify output string is not the same"); + const decrypted = newAesUtil.decrypt(encryptedString) + t.deepEqual(decrypted, testString, 'Decryption did not work'); +;}); \ No newline at end of file diff --git a/test/greeter-spec.ts b/test/greeter-spec.ts deleted file mode 100644 index 41f5ffe..0000000 --- a/test/greeter-spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import test from "ava"; -import { Greeter } from "../src/greeter"; - -test("Should greet with message", t => { - const greeter = new Greeter("friend"); - t.is(greeter.greet(), "Bonjour, friend!"); -}); diff --git a/test/index-spec.ts b/test/index-spec.ts deleted file mode 100644 index bb5f789..0000000 --- a/test/index-spec.ts +++ /dev/null @@ -1,6 +0,0 @@ -import test from "ava"; -import * as index from "../src/index"; - -test("Should have Greeter available", t => { - t.truthy(index.Greeter); -}); diff --git a/test/obfuscator-spec.ts b/test/obfuscator-spec.ts new file mode 100644 index 0000000..dbaaf3a --- /dev/null +++ b/test/obfuscator-spec.ts @@ -0,0 +1,208 @@ +import test from 'ava'; +import { Collection, ObjectID, ObjectId } from 'mongodb'; +import { Tyr } from 'tyranid'; +import TestDataSet from './datasets/users'; +import { DBManager, User } from './util'; +import {ExpectedResults, createMaskingValuesCollection } from './datasets/expected-results'; +import * as fs from 'fs'; + +let dbManager: DBManager; +const masterKey = '123456'; +const copiedPIICollection = new Tyr.Collection({ + id: '_c1', + name: 'copiedData', + dbName: 'copiedData', + internal: false, + fields: { + _id: { is: 'mongoid' }, + firstName: { is: 'string' }, + lastName: { is: 'string' }, + ip_address: { is: 'string' } + } +}); + +const logObj = (input: any) => { + console.log(JSON.stringify(input)); +}; + +test.before('Setup Database', t => { + dbManager = new DBManager(); + return dbManager.start(); +}); + +/** + * TODO: Figure out way to set up context for multiple tests + * Determine that environment is correctly setup and Tyranid correctly configured + */ +test.serial('Collection sould have all user entries', async t => { + const user = await User.findAll({ query: {}, count: true}); + const isValid = user.count === TestDataSet.length; + + t.true(isValid, 'Could not access test data'); +}); + +test.serial('Should be able to retrieve document by explicit collection or byName', async t => { + const user = await User.findOne({ query: {} }); + const user2 = await Tyr.byName.user.findOne({ query: {} }); + + const isValid = (JSON.stringify(user) === JSON.stringify(user2)); + + t.true(isValid, 'Could not retrieve same objects by Collection.findOne & Tyr.byName.Collection.findOne'); +}); + +test.serial('Field Definition should save encryptable flag', async t => { + const user = await User.findOne({ query: {} }); + const userFields = user.$model.def.fields; + const isObfuscateable = userFields.lastName.def.obfuscateable; + const isNotObfuscateable = userFields.createdAt.def.hasOwnProperty('obfuscateable'); + + t.true(isObfuscateable, 'Does not have obfuscateable flag, extending FieldInstance definition failed. '); + t.false(isNotObfuscateable, 'Non-obfuscateable field has flag set to true'); +}); + +test('Should have obfuscate function on Tyr namespace', t => { + const valid = Tyr.obfuscate && typeof Tyr.obfuscate === 'function'; + t.true(valid, 'Tyranid namespace does not have obfuscate function'); +}); + +/** + * Test Obfuscation + * + * + * TODO Test Cases + * 1. Should complete exporting, encryption, and recovery with datasize that requires more than one batch + * 2. ALL error scenarios and recovery + * 3. Complex datatypes, arrays, objects, etc + * 4. Test null data types, missing fields + */ + +test.serial('Should copy obfuscateable data to temp collection', async t => { + const collection = await createFreshCopyOfData(); + const copiedData = (await collection.findAll({ query: { } })); + t.deepEqual(JSON.stringify(copiedData), ExpectedResults.CopiedObfuscateableData, 'Obfuscateable data incorrectly copied to new collection'); +}); + +test.serial('Should encrypt given collection', async t => { + //Create collection of values + const collection = await createFreshCopyOfData(); + + const resultTBD = await Tyr.encryptCollection(collection, masterKey); + + const records = await collection.findAll({ query: {} }); + t.true(records.length === 10, 'All records still in collection'); + t.notDeepEqual(JSON.stringify(records), ExpectedResults.CopiedObfuscateableData, 'Data not encrypted'); +}); + +test.serial('Should obfuscate first ten users and replace with static values', async t => { + const numberToAffect = 10; + const maskValues = { firstName: 'USER', lastName: 'x', ip_address: '0.0.0.0' }; + const metaDataSuffix = '__metadata'; + const query = { _id: { $lte: numberToAffect } }; + const opts: Tyr.ObfuscateBatchOpts = { + query: query, + metadataSuffix: metaDataSuffix, + collection: User, + replacementValues: { + 'firstName': maskValues.firstName, + 'lastName': maskValues.lastName, + 'ip_address': maskValues.ip_address + } + }; + const batchResults: Tyr.ObfuscateBatchResult = await Tyr.obfuscate(opts); + t.true((batchResults.count === numberToAffect), 'Incorrect number of records obfuscated'); + const alteredRecordsPointer = await User.find({ query: query }); + const alteredRecords = await (alteredRecordsPointer).toArray(); + t.deepEqual(JSON.stringify(alteredRecords), ExpectedResults.MaskPIIWithStaticValues, 'Result PII fields not blank as expected'); + + // Validate MetaData + const metaDataCollection: Collection = await Tyr.db.collection(User.def.dbName + metaDataSuffix); + + t.true((metaDataCollection !== null && metaDataCollection !== undefined), 'Could not locate metadata collection for User'); + + const metaRecords = await (await metaDataCollection.find({ batchTag: batchResults.batchTag })).toArray(); + + let r: Tyr.ObfuscateMetaDataSchema; + // Not sure how to mock mongo's ObjectID() so cannot do a exact dataset comparison + for (let i = 0; i < metaRecords.length; i++) { + r = metaRecords[i]; + + //Not quite sure how to get id to string + t.deepEqual(JSON.stringify(r.recordId), ((i + 1) + ''), 'metadata has incorrect associated record id'); + t.deepEqual(JSON.stringify(r.fields), '["firstName","lastName","ip_address"]', 'metadata has incorrectly saved which fields were obfuscated'); + //Technically this shouldn't happen + t.deepEqual(r.batchTag, batchResults.batchTag, 'Incorrect batch tag'); + } + +}); + +// TODO: for right now this will depend on the side effects of the previous tests. +test.serial('Should restore obfuscated data to original state', async t => { + //verify that data is masked to begin with + const maskedData = JSON.stringify(await User.findAll({ query: { _id: {$lte: 10}} })); + t.deepEqual(maskedData, ExpectedResults.MaskPIIWithStaticValues, 'Not starting with masked data'); + + const query: Tyr.MongoQuery = {}; + await Tyr.restoreObfuscatedData(Tyr.byName.user, copiedPIICollection, query, masterKey); + + const restoredData = JSON.stringify(await User.findAll({ query: { _id: { $lte: 10 } } })); + t.deepEqual(restoredData, ExpectedResults.OriginalFirstTenRecords, 'Data not restored properly'); + +}); + +test.serial('Should use collection to mask data', async t => { + const maskCollection = await createMaskingValuesCollection(); + const query = { _id: { $in: [11, 12, 13, 14, 15] }}; + const metadataSuffix = '__MetaData2'; + + const opts: Tyr.ObfuscateBatchOpts = { + query: query, + collection: User, + replacementValCollection: maskCollection, + metadataSuffix: metadataSuffix + }; + + const batchResults: Tyr.ObfuscateBatchResult = await Tyr.obfuscate(opts); + + /** Validate obfuscation */ + const alteredRecords = await User.findAll({ query: query }); + t.deepEqual(JSON.stringify(alteredRecords), ExpectedResults.MaskPIIWithCollectionValues, 'Result PII fields not migrated from given collection'); + + /** Validate meta data */ + const metaDataCollection: Collection = await Tyr.db.collection(User.def.dbName + metadataSuffix); + + t.true((metaDataCollection !== null && metaDataCollection !== undefined), 'Could not locate metadata collection for User'); + + const metaRecords = await (await metaDataCollection.find({ batchTag: batchResults.batchTag })).toArray(); + + let r: Tyr.ObfuscateMetaDataSchema; + // Not sure how to mock mongo's ObjectID() so cannot do a exact dataset comparison + for (let i = 0; i < metaRecords.length; i++) { + r = metaRecords[i]; + + //Not quite sure how to get id to string + t.deepEqual(JSON.stringify(r.recordId), ((i + 11) + ''), 'metadata has incorrect associated record id'); + t.deepEqual(JSON.stringify(r.fields), '["firstName","lastName","ip_address"]', 'metadata has incorrectly saved which fields were obfuscated'); + //Technically this shouldn't happen + t.deepEqual(r.batchTag, batchResults.batchTag, 'Incorrect batch tag'); + } +}); + +/** + * + * Defaults to the firts ten records + * @param startIndex + * @param endIndex + */ +const createFreshCopyOfData = async (startIndex?: number, endIndex?: number): Promise => { + startIndex = startIndex ? startIndex : 0; + endIndex = endIndex ? endIndex : 10; + + const query ={ $and: [{ _id: { $gte: startIndex } }, { _id: { $lte: endIndex } }] } ; + + await Tyr.copyObfuscateableData(query, Tyr.byName.user, copiedPIICollection); + return copiedPIICollection; +} + +test.after('Shut down server', t => { + return dbManager.stop(); +}); diff --git a/test/util.ts b/test/util.ts new file mode 100644 index 0000000..93d07ab --- /dev/null +++ b/test/util.ts @@ -0,0 +1,91 @@ +import { Db, MongoClient, ObjectID } from 'mongodb'; +import { MongoMemoryServer } from 'mongodb-memory-server'; +import { Tyr } from 'tyranid'; +import * as TyrObfuscator from '../src/index'; +import TestDataSet from './datasets/users'; + + +TyrObfuscator.validate(); + +export interface User extends Tyr.Document { + firstName: string; + lastName: string; + gender: string; + ip_address: string; + createdAt: Date; + _id: ObjectID; +} + +/** + * Type 'User' does not satisfy the constraint 'AnyIdType'. + * Type 'User' is missing the following properties from type + * 'ObjectID': generationTime, equals, generate, getTimestamp, toHexString + */ +export interface UserCollection extends Tyr.CollectionInstance { +}; + + +export const User = new Tyr.Collection({ + id: 'u00', + name: 'user', + dbName: 'dbTest', + fields: { + _id: { is: 'mongoid' }, + email: { is: 'email' }, + firstName: { is: 'string', obfuscateable: true, required: true }, + lastName: { is: 'string', obfuscateable: true }, + gender: { is: 'string' }, + ip_address: { is: 'string', obfuscateable:true, required: true}, + createdAt: { is: 'date' } + } +}) as UserCollection; + +export class DBManager { + private connection: MongoClient; + private db: Db; + private server: MongoMemoryServer; + + constructor() { + + this.db = null; + this.server = new MongoMemoryServer(); + this.connection = null; + } + + public async start() { + console.log('STARTING DATABASE'); + const url = await this.server.getConnectionString(); + this.connection = await MongoClient.connect(url, { useNewUrlParser: true }); + const serverName = await this.server.getDbName(); + this.db = this.connection.db(serverName); + + const options : Tyr.ConfigOptions = { + db: this.db, + mongoClient: this.connection, + dbLogLevel: "INFO" + }; + + await Tyr.config(options); + + // Still need this explicit even when validate set on config + await Tyr.validate(); + + await User.insert(TestDataSet); + + return this.db; + } + + public isRunning() { + return this.connection.isConnected(); + } + + /** + * In-memory server, data is not persisted after the service + * is stopped. + */ + public async stop() { + console.log("Server Stop"); + this.connection.close(); + return this.server.stop(); + } +} diff --git a/tsconfig.json b/tsconfig.json index 744b08a..86c53df 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,24 +2,16 @@ "compilerOptions": { "declaration": true, "module": "commonjs", + "skipLibCheck": true, "moduleResolution": "node", - "lib": [ - "esnext" - ], + "lib": ["esnext"], "target": "es2015", - "noImplicitAny": true, + "noImplicitAny": false, "outDir": "./lib", "preserveConstEnums": true, "removeComments": true, - "typeRoots": [ - "./node_modules/@types" - ] + "typeRoots": ["./node_modules/@types"] }, - "include": [ - "src/**/*" - ], - "exclude": [ - "node_modules", - "**/*-spec.ts" - ] + "include": ["src/**/*"], + "exclude": ["node_modules", "**/*-spec.ts"] } diff --git a/tsconfig.test.json b/tsconfig.test.json index 7dc9095..b484365 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -1,14 +1,14 @@ { "compilerOptions": { "module": "commonjs", - "target": "es5", + "moduleResolution": "node", + "target": "es2015", "outDir": "lib_test", + "skipLibCheck": true, "declaration": false, "noImplicitAny": true, "removeComments": true, "inlineSourceMap": true }, - "include": [ - "test/**/*" - ] + "include": ["./test/**/*"] } diff --git a/tslint.json b/tslint.json index 09b2fba..c0fdf61 100644 --- a/tslint.json +++ b/tslint.json @@ -2,5 +2,9 @@ "extends": [ "tslint:latest", "tslint-config-prettier" - ] + ], + "rules": { + "interface-name": false, //don't force 'I{name}' for interface + "no-reference": false, //use for tripple slash reference + } }