From 94116a03e1df54ff2d921ffc6fa7a48edea964cf Mon Sep 17 00:00:00 2001 From: Christopher Schmitt Date: Wed, 25 Oct 2017 10:21:27 -0600 Subject: [PATCH] Prepare for Public Release --- .babelrc | 13 + .editorconfig | 9 + .eslintignore | 2 + .eslintrc.js | 33 + .gitignore | 7 + .postcssrc.js | 8 + Makefile | 12 + README.md | 23 + assets/scss/_login.scss | 47 + assets/scss/_structure.scss | 52 + assets/scss/main.scss | 2 + build/build.js | 35 + build/check-versions.js | 48 + build/dev-client.js | 9 + build/dev-server.js | 92 + build/utils.js | 71 + build/vue-loader.conf.js | 12 + build/webpack.base.conf.js | 76 + build/webpack.dev.conf.js | 52 + build/webpack.prod.conf.js | 137 + config/dev.env.js | 6 + config/font-awesome.config.js | 15 + config/font-awesome.config.scss | 0 config/index.js | 38 + config/prod.env.js | 3 + gocrack-config.json | 4 + index.html | 11 + package-lock.json | 8962 ++++++++++++++++++++++ package.json | 93 + src/App.vue | 101 + src/api/apis/auditing.js | 7 + src/api/apis/auth.js | 10 + src/api/apis/client.js | 32 + src/api/apis/dashboard.js | 7 + src/api/apis/filemanager.js | 67 + src/api/apis/hashcat.js | 7 + src/api/apis/index.js | 47 + src/api/apis/tasks.js | 57 + src/api/apis/users.js | 19 + src/api/config.js | 10 + src/api/index.js | 32 + src/api/types.js | 67 + src/components/DeviceSelection.vue | 76 + src/components/DisplayFileInfo.vue | 92 + src/components/DownloadButton.vue | 53 + src/components/EntitlementManager.vue | 31 + src/components/PasswordLengthBarGraph.js | 39 + src/components/PasswordTable.vue | 155 + src/components/StopTaskModal.vue | 45 + src/components/TaskStatusTable.vue | 136 + src/components/UpdateTaskModal.vue | 142 + src/components/UploadFileModal.vue | 265 + src/components/UsersSelection.vue | 70 + src/filters/index.js | 5 + src/filters/numeral.js | 5 + src/helpers/generate_csv.js | 46 + src/helpers/index.js | 64 + src/i18n/en-US.json | 197 + src/i18n/index.js | 23 + src/main.js | 83 + src/router/index.js | 195 + src/store/helpers.js | 19 + src/store/index.js | 49 + src/store/modules/authentication.js | 124 + src/store/modules/browser_notify.js | 61 + src/store/modules/realtime.js | 136 + src/store/modules/user_local_settings.js | 35 + src/store/modules/workers.js | 50 + src/store/mutations.js | 38 + src/toast/README.md | 3 + src/toast/Toast.vue | 33 + src/toast/config.js | 9 + src/toast/index.js | 17 + src/toast/module.js | 63 + src/toast/utils.js | 12 + src/validators/device_selection.js | 30 + src/validators/index.js | 6 + src/views/CreateTask.vue | 593 ++ src/views/Dashboard.vue | 143 + src/views/ErrorServer.vue | 32 + src/views/ErrorUnauthorized.vue | 21 + src/views/ListFiles.vue | 208 + src/views/ListTask.vue | 98 + src/views/Login.vue | 90 + src/views/ModifyUser.vue | 306 + src/views/RegisterUser.vue | 160 + src/views/TaskStatus.vue | 414 + src/views/UserListing.vue | 44 + static/img/logo.png | Bin 0 -> 161352 bytes 89 files changed, 14851 insertions(+) create mode 100644 .babelrc create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .postcssrc.js create mode 100644 Makefile create mode 100644 README.md create mode 100644 assets/scss/_login.scss create mode 100644 assets/scss/_structure.scss create mode 100644 assets/scss/main.scss create mode 100644 build/build.js create mode 100644 build/check-versions.js create mode 100644 build/dev-client.js create mode 100644 build/dev-server.js create mode 100644 build/utils.js create mode 100644 build/vue-loader.conf.js create mode 100644 build/webpack.base.conf.js create mode 100644 build/webpack.dev.conf.js create mode 100644 build/webpack.prod.conf.js create mode 100644 config/dev.env.js create mode 100644 config/font-awesome.config.js create mode 100644 config/font-awesome.config.scss create mode 100644 config/index.js create mode 100644 config/prod.env.js create mode 100644 gocrack-config.json create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/App.vue create mode 100644 src/api/apis/auditing.js create mode 100644 src/api/apis/auth.js create mode 100644 src/api/apis/client.js create mode 100644 src/api/apis/dashboard.js create mode 100644 src/api/apis/filemanager.js create mode 100644 src/api/apis/hashcat.js create mode 100644 src/api/apis/index.js create mode 100644 src/api/apis/tasks.js create mode 100644 src/api/apis/users.js create mode 100644 src/api/config.js create mode 100644 src/api/index.js create mode 100644 src/api/types.js create mode 100644 src/components/DeviceSelection.vue create mode 100644 src/components/DisplayFileInfo.vue create mode 100644 src/components/DownloadButton.vue create mode 100644 src/components/EntitlementManager.vue create mode 100644 src/components/PasswordLengthBarGraph.js create mode 100644 src/components/PasswordTable.vue create mode 100644 src/components/StopTaskModal.vue create mode 100644 src/components/TaskStatusTable.vue create mode 100644 src/components/UpdateTaskModal.vue create mode 100644 src/components/UploadFileModal.vue create mode 100644 src/components/UsersSelection.vue create mode 100644 src/filters/index.js create mode 100644 src/filters/numeral.js create mode 100644 src/helpers/generate_csv.js create mode 100644 src/helpers/index.js create mode 100644 src/i18n/en-US.json create mode 100644 src/i18n/index.js create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/store/helpers.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/authentication.js create mode 100644 src/store/modules/browser_notify.js create mode 100644 src/store/modules/realtime.js create mode 100644 src/store/modules/user_local_settings.js create mode 100644 src/store/modules/workers.js create mode 100644 src/store/mutations.js create mode 100644 src/toast/README.md create mode 100644 src/toast/Toast.vue create mode 100644 src/toast/config.js create mode 100644 src/toast/index.js create mode 100644 src/toast/module.js create mode 100644 src/toast/utils.js create mode 100644 src/validators/device_selection.js create mode 100644 src/validators/index.js create mode 100644 src/views/CreateTask.vue create mode 100644 src/views/Dashboard.vue create mode 100644 src/views/ErrorServer.vue create mode 100644 src/views/ErrorUnauthorized.vue create mode 100644 src/views/ListFiles.vue create mode 100644 src/views/ListTask.vue create mode 100644 src/views/Login.vue create mode 100644 src/views/ModifyUser.vue create mode 100644 src/views/RegisterUser.vue create mode 100644 src/views/TaskStatus.vue create mode 100644 src/views/UserListing.vue create mode 100644 static/img/logo.png diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..0f56d1f --- /dev/null +++ b/.babelrc @@ -0,0 +1,13 @@ +{ + "presets": [ + ["env", { "modules": false }], + "stage-2" + ], + "plugins": ["transform-runtime", "transform-object-rest-spread"], + "env": { + "test": { + "presets": ["env", "stage-2"], + "plugins": [ "istanbul" ] + } + } +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..9d08a1a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..34af377 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +build/*.js +config/*.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..e0f7cc4 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,33 @@ +// http://eslint.org/docs/user-guide/configuring + +module.exports = { + root: true, + parser: 'babel-eslint', + parserOptions: { + sourceType: 'module' + }, + env: { + browser: true, + es6: true, + jquery: true + }, + // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style + extends: 'standard', + // required to lint *.vue files + plugins: [ + 'html' + ], + 'globals': { + '$': true, + 'jQuery': true + }, + // add your custom rules here + 'rules': { + // allow paren-less arrow functions + 'arrow-parens': 0, + // allow async-await + 'generator-star-spacing': 0, + // allow debugger during development + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c571241 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +*.tgz \ No newline at end of file diff --git a/.postcssrc.js b/.postcssrc.js new file mode 100644 index 0000000..ea9a5ab --- /dev/null +++ b/.postcssrc.js @@ -0,0 +1,8 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + "plugins": { + // to edit target browsers: use "browserlist" field in package.json + "autoprefixer": {} + } +} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c277ff7 --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +BUILDDATE := $(shell date +%s) +BUILDREV := $(shell git log --pretty=format:'%h' -n 1) + +pack: + npm run build + tar --exclude=*.map -czvf gocrack-ui-$(BUILDREV)-$(BUILDDATE).tgz dist/* + +clean: + rm -rf dist/ + rm *.tgz + +all: pack \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..0b814b9 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# gocrackui + +> Web UI for GoCrack + +Welcome! This includes the UI related code for [GoCrack](https://github.com/fireeye/gocrack). + +## Build Setup + +``` bash +# install dependencies +npm install + +# serve with hot reload at localhost:8080 +npm run dev + +# build for production with minification +npm run build + +# build for production and view the bundle analyzer report +npm run build --report +``` + +For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). diff --git a/assets/scss/_login.scss b/assets/scss/_login.scss new file mode 100644 index 0000000..d724f58 --- /dev/null +++ b/assets/scss/_login.scss @@ -0,0 +1,47 @@ +.form-signin { + max-width: 330px; + padding: 15px; + margin: 0 auto; +} + +.form-signin .form-signin-heading, +.form-signin .checkbox { + margin-bottom: 10px; +} + +.form-signin .checkbox { + font-weight: normal; +} + +.form-signin .form-control { + position: relative; + height: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 10px; + font-size: 16px; +} + +.form-signin .form-control:focus { + z-index: 2; +} + +.form-signin input[type="username"] { + margin-bottom: -1px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.form-signin input[type="password"] { + margin-bottom: 10px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +form.form-signin a { + margin-bottom: 5px; +} + +form.form-signin a:hover, a:focus { + text-decoration: none !important; +} \ No newline at end of file diff --git a/assets/scss/_structure.scss b/assets/scss/_structure.scss new file mode 100644 index 0000000..d23fc59 --- /dev/null +++ b/assets/scss/_structure.scss @@ -0,0 +1,52 @@ +// Contains Style Information that is important for the structure of the application +html { + position: relative; + min-height: 100%; +} + +body { + margin-bottom: 100px; +} + +.container-fluid { + padding-top: 10px; + padding-bottom: 50px; +} + +.container { + width: auto; + padding: 0 15px; +} + +footer.footer { + background-color: #f5f5f5; + position: absolute; + bottom: 0; + width: 100%; + height: 60px; + overflow: hidden; +} + +ul.no-style { + list-style-type: none; +} + +.noflow { + overflow: hidden; + text-overflow: ellipsis; + word-wrap: break-word; +} + +/* +.page-header { + padding-bottom: 9px; + margin: 20px 0 20px; + border-bottom: 1px solid #eee; +} +*/ + +.validation-failed { + margin-top: .25rem; + font-size: .875rem; + color: #dc3545; +} \ No newline at end of file diff --git a/assets/scss/main.scss b/assets/scss/main.scss new file mode 100644 index 0000000..b6fdb8d --- /dev/null +++ b/assets/scss/main.scss @@ -0,0 +1,2 @@ +@import "_structure.scss"; +@import "_login.scss"; diff --git a/build/build.js b/build/build.js new file mode 100644 index 0000000..6b8add1 --- /dev/null +++ b/build/build.js @@ -0,0 +1,35 @@ +require('./check-versions')() + +process.env.NODE_ENV = 'production' + +var ora = require('ora') +var rm = require('rimraf') +var path = require('path') +var chalk = require('chalk') +var webpack = require('webpack') +var config = require('../config') +var webpackConfig = require('./webpack.prod.conf') + +var spinner = ora('building for production...') +spinner.start() + +rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { + if (err) throw err + webpack(webpackConfig, function (err, stats) { + spinner.stop() + if (err) throw err + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, + chunks: false, + chunkModules: false + }) + '\n\n') + + console.log(chalk.cyan(' Build complete.\n')) + console.log(chalk.yellow( + ' Tip: built files are meant to be served over an HTTP server.\n' + + ' Opening index.html over file:// won\'t work.\n' + )) + }) +}) diff --git a/build/check-versions.js b/build/check-versions.js new file mode 100644 index 0000000..100f3a0 --- /dev/null +++ b/build/check-versions.js @@ -0,0 +1,48 @@ +var chalk = require('chalk') +var semver = require('semver') +var packageConfig = require('../package.json') +var shell = require('shelljs') +function exec (cmd) { + return require('child_process').execSync(cmd).toString().trim() +} + +var versionRequirements = [ + { + name: 'node', + currentVersion: semver.clean(process.version), + versionRequirement: packageConfig.engines.node + }, +] + +if (shell.which('npm')) { + versionRequirements.push({ + name: 'npm', + currentVersion: exec('npm --version'), + versionRequirement: packageConfig.engines.npm + }) +} + +module.exports = function () { + var warnings = [] + for (var i = 0; i < versionRequirements.length; i++) { + var mod = versionRequirements[i] + if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { + warnings.push(mod.name + ': ' + + chalk.red(mod.currentVersion) + ' should be ' + + chalk.green(mod.versionRequirement) + ) + } + } + + if (warnings.length) { + console.log('') + console.log(chalk.yellow('To use this template, you must update following to modules:')) + console.log() + for (var i = 0; i < warnings.length; i++) { + var warning = warnings[i] + console.log(' ' + warning) + } + console.log() + process.exit(1) + } +} diff --git a/build/dev-client.js b/build/dev-client.js new file mode 100644 index 0000000..18aa1e2 --- /dev/null +++ b/build/dev-client.js @@ -0,0 +1,9 @@ +/* eslint-disable */ +require('eventsource-polyfill') +var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') + +hotClient.subscribe(function (event) { + if (event.action === 'reload') { + window.location.reload() + } +}) diff --git a/build/dev-server.js b/build/dev-server.js new file mode 100644 index 0000000..e1022f8 --- /dev/null +++ b/build/dev-server.js @@ -0,0 +1,92 @@ +require('./check-versions')() + +var config = require('../config') +if (!process.env.NODE_ENV) { + process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) +} + +var opn = require('opn') +var path = require('path') +var express = require('express') +var webpack = require('webpack') +var proxyMiddleware = require('http-proxy-middleware') +var webpackConfig = require('./webpack.dev.conf') + +// default port where dev server listens for incoming traffic +var port = process.env.PORT || config.dev.port +// automatically open browser, if not set will be false +var autoOpenBrowser = !!config.dev.autoOpenBrowser +// Define HTTP proxies to your custom API backend +// https://github.com/chimurai/http-proxy-middleware +var proxyTable = config.dev.proxyTable + +var app = express() +var compiler = webpack(webpackConfig) + +var devMiddleware = require('webpack-dev-middleware')(compiler, { + publicPath: webpackConfig.output.publicPath, + quiet: true +}) + +var hotMiddleware = require('webpack-hot-middleware')(compiler, { + log: () => {} +}) +// force page reload when html-webpack-plugin template changes +compiler.plugin('compilation', function (compilation) { + compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { + hotMiddleware.publish({ action: 'reload' }) + cb() + }) +}) + +// proxy api requests +Object.keys(proxyTable).forEach(function (context) { + var options = proxyTable[context] + if (typeof options === 'string') { + options = { target: options } + } + app.use(proxyMiddleware(options.filter || context, options)) +}) + +// handle fallback for HTML5 history API +app.use(require('connect-history-api-fallback')()) + +// serve webpack bundle output +app.use(devMiddleware) + +// enable hot-reload and state-preserving +// compilation error display +app.use(hotMiddleware) + +// serve pure static assets +var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) +app.use(staticPath, express.static('./static')) +app.get('/gocrack-config.json', (req, res) => { + res.sendFile(path.join(__dirname, '..', 'gocrack-config.json')) +}) + +var uri = 'http://localhost:' + port + +var _resolve +var readyPromise = new Promise(resolve => { + _resolve = resolve +}) + +console.log('> Starting dev server...') +devMiddleware.waitUntilValid(() => { + console.log('> Listening at ' + uri + '\n') + // when env is testing, don't need open it + if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { + opn(uri) + } + _resolve() +}) + +var server = app.listen(port) + +module.exports = { + ready: readyPromise, + close: () => { + server.close() + } +} diff --git a/build/utils.js b/build/utils.js new file mode 100644 index 0000000..b1d54b4 --- /dev/null +++ b/build/utils.js @@ -0,0 +1,71 @@ +var path = require('path') +var config = require('../config') +var ExtractTextPlugin = require('extract-text-webpack-plugin') + +exports.assetsPath = function (_path) { + var assetsSubDirectory = process.env.NODE_ENV === 'production' + ? config.build.assetsSubDirectory + : config.dev.assetsSubDirectory + return path.posix.join(assetsSubDirectory, _path) +} + +exports.cssLoaders = function (options) { + options = options || {} + + var cssLoader = { + loader: 'css-loader', + options: { + minimize: process.env.NODE_ENV === 'production', + sourceMap: options.sourceMap + } + } + + // generate loader string to be used with extract text plugin + function generateLoaders (loader, loaderOptions) { + var loaders = [cssLoader] + if (loader) { + loaders.push({ + loader: loader + '-loader', + options: Object.assign({}, loaderOptions, { + sourceMap: options.sourceMap + }) + }) + } + + // Extract CSS when that option is specified + // (which is the case during production build) + if (options.extract) { + return ExtractTextPlugin.extract({ + use: loaders, + fallback: 'vue-style-loader' + }) + } else { + return ['vue-style-loader'].concat(loaders) + } + } + + // https://vue-loader.vuejs.org/en/configurations/extract-css.html + return { + css: generateLoaders(), + postcss: generateLoaders(), + less: generateLoaders('less'), + sass: generateLoaders('sass', { indentedSyntax: true }), + scss: generateLoaders('sass'), + stylus: generateLoaders('stylus'), + styl: generateLoaders('stylus') + } +} + +// Generate loaders for standalone style files (outside of .vue) +exports.styleLoaders = function (options) { + var output = [] + var loaders = exports.cssLoaders(options) + for (var extension in loaders) { + var loader = loaders[extension] + output.push({ + test: new RegExp('\\.' + extension + '$'), + use: loader + }) + } + return output +} diff --git a/build/vue-loader.conf.js b/build/vue-loader.conf.js new file mode 100644 index 0000000..7aee79b --- /dev/null +++ b/build/vue-loader.conf.js @@ -0,0 +1,12 @@ +var utils = require('./utils') +var config = require('../config') +var isProduction = process.env.NODE_ENV === 'production' + +module.exports = { + loaders: utils.cssLoaders({ + sourceMap: isProduction + ? config.build.productionSourceMap + : config.dev.cssSourceMap, + extract: isProduction + }) +} diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js new file mode 100644 index 0000000..64f8f43 --- /dev/null +++ b/build/webpack.base.conf.js @@ -0,0 +1,76 @@ +var path = require('path') +var utils = require('./utils') +var config = require('../config') +var vueLoaderConfig = require('./vue-loader.conf') + +function resolve (dir) { + return path.join(__dirname, '..', dir) +} + +module.exports = { + entry: { + app: './src/main.js' + }, + output: { + path: config.build.assetsRoot, + filename: '[name].js', + publicPath: process.env.NODE_ENV === 'production' + ? config.build.assetsPublicPath + : config.dev.assetsPublicPath + }, + resolve: { + extensions: ['.js', '.vue', '.json'], + alias: { + 'vue$': 'vue/dist/vue.esm.js', + '@': resolve('src') + } + }, + module: { + rules: [ + { + test: /\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [resolve('src'), resolve('test')], + options: { + formatter: require('eslint-friendly-formatter') + } + }, + { + test: /\.vue$/, + loader: 'vue-loader', + options: vueLoaderConfig + }, + { + test: /\.js$/, + loader: 'babel-loader', + include: [resolve('src'), resolve('test'), resolve('node_modules/bootstrap-vue/lib')] + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + }, + { + test: /\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/, + // Limiting the size of the woff fonts breaks font-awesome ONLY for the extract text plugin + // loader: "url?limit=10000" + use: "url-loader" + }, + { + test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/, + use: 'file-loader' + }, + { + test: /font-awesome\.config\.js/, + use: [ + { loader: "style-loader" }, + { loader: "font-awesome-loader" } + ] + } + ] + } +} diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js new file mode 100644 index 0000000..9e11340 --- /dev/null +++ b/build/webpack.dev.conf.js @@ -0,0 +1,52 @@ +var utils = require('./utils') +var webpack = require('webpack') +var config = require('../config') +var merge = require('webpack-merge') +var baseWebpackConfig = require('./webpack.base.conf') +var HtmlWebpackPlugin = require('html-webpack-plugin') +var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') + +// add hot-reload related code to entry chunks +Object.keys(baseWebpackConfig.entry).forEach(function (name) { + baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) +}) + +module.exports = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) + }, + // cheap-module-eval-source-map is faster for development + devtool: '#cheap-module-eval-source-map', + plugins: [ + new webpack.DefinePlugin({ + 'process.env': config.dev.env + }), + // https://github.com/glenjamin/webpack-hot-middleware#installation--usage + new webpack.HotModuleReplacementPlugin(), + new webpack.NoEmitOnErrorsPlugin(), + // https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: 'index.html', + template: 'index.html', + inject: true + }), + new FriendlyErrorsPlugin(), + new webpack.ProvidePlugin({ + $: "jquery", + jQuery: "jquery", + "window.jQuery": "jquery", + "Popper": "popper.js", + Alert: "exports-loader?Alert!bootstrap/js/dist/alert", + Button: "exports-loader?Button!bootstrap/js/dist/button", + Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel", + Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse", + Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown", + Modal: "exports-loader?Modal!bootstrap/js/dist/modal", + Popover: "exports-loader?Popover!bootstrap/js/dist/popover", + Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy", + Tab: "exports-loader?Tab!bootstrap/js/dist/tab", + Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip", + Util: "exports-loader?Util!bootstrap/js/dist/util", + }) + ] +}) diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js new file mode 100644 index 0000000..8d65062 --- /dev/null +++ b/build/webpack.prod.conf.js @@ -0,0 +1,137 @@ +var path = require('path') +var utils = require('./utils') +var webpack = require('webpack') +var config = require('../config') +var merge = require('webpack-merge') +var baseWebpackConfig = require('./webpack.base.conf') +var CopyWebpackPlugin = require('copy-webpack-plugin') +var HtmlWebpackPlugin = require('html-webpack-plugin') +var ExtractTextPlugin = require('extract-text-webpack-plugin') +var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') + +var env = config.build.env + +var webpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.build.productionSourceMap, + extract: true + }) + }, + devtool: config.build.productionSourceMap ? '#source-map' : false, + output: { + path: config.build.assetsRoot, + filename: utils.assetsPath('js/[name].[chunkhash].js'), + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') + }, + plugins: [ + // http://vuejs.github.io/vue-loader/en/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': env + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + }, + sourceMap: true + }), + // extract css into its own file + new ExtractTextPlugin({ + filename: utils.assetsPath('css/[name].[contenthash].css') + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin({ + cssProcessorOptions: { + safe: true + } + }), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: config.build.index, + template: 'index.html', + inject: true, + minify: { + removeComments: true, + collapseWhitespace: true, + removeAttributeQuotes: true + // more options: + // https://github.com/kangax/html-minifier#options-quick-reference + }, + // necessary to consistently work with multiple chunks via CommonsChunkPlugin + chunksSortMode: 'dependency' + }), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks: function (module, count) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../node_modules') + ) === 0 + ) + } + }), + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + chunks: ['vendor'] + }), + // copy custom static assets + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.build.assetsSubDirectory, + ignore: ['.*'] + } + ]), + new webpack.ProvidePlugin({ + $: "jquery", + jQuery: "jquery", + "window.jQuery": "jquery", + "Popper": "popper.js", + Alert: "exports-loader?Alert!bootstrap/js/dist/alert", + Button: "exports-loader?Button!bootstrap/js/dist/button", + Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel", + Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse", + Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown", + Modal: "exports-loader?Modal!bootstrap/js/dist/modal", + Popover: "exports-loader?Popover!bootstrap/js/dist/popover", + Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy", + Tab: "exports-loader?Tab!bootstrap/js/dist/tab", + Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip", + Util: "exports-loader?Util!bootstrap/js/dist/util", + }) + ] +}) + +if (config.build.productionGzip) { + var CompressionWebpackPlugin = require('compression-webpack-plugin') + + webpackConfig.plugins.push( + new CompressionWebpackPlugin({ + asset: '[path].gz[query]', + algorithm: 'gzip', + test: new RegExp( + '\\.(' + + config.build.productionGzipExtensions.join('|') + + ')$' + ), + threshold: 10240, + minRatio: 0.8 + }) + ) +} + +if (config.build.bundleAnalyzerReport) { + var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + webpackConfig.plugins.push(new BundleAnalyzerPlugin()) +} + +module.exports = webpackConfig diff --git a/config/dev.env.js b/config/dev.env.js new file mode 100644 index 0000000..efead7c --- /dev/null +++ b/config/dev.env.js @@ -0,0 +1,6 @@ +var merge = require('webpack-merge') +var prodEnv = require('./prod.env') + +module.exports = merge(prodEnv, { + NODE_ENV: '"development"' +}) diff --git a/config/font-awesome.config.js b/config/font-awesome.config.js new file mode 100644 index 0000000..9491d90 --- /dev/null +++ b/config/font-awesome.config.js @@ -0,0 +1,15 @@ +module.exports = { + styles: { + 'mixins': true, + 'bordered-pulled': false, + 'core': true, + 'fixed-width': false, + 'icons': true, + 'larger': false, + 'list': true, + 'path': true, + 'rotated-flipped': true, + 'animated': false, + 'stacked': false + } +}; diff --git a/config/font-awesome.config.scss b/config/font-awesome.config.scss new file mode 100644 index 0000000..e69de29 diff --git a/config/index.js b/config/index.js new file mode 100644 index 0000000..196da1f --- /dev/null +++ b/config/index.js @@ -0,0 +1,38 @@ +// see http://vuejs-templates.github.io/webpack for documentation. +var path = require('path') + +module.exports = { + build: { + env: require('./prod.env'), + index: path.resolve(__dirname, '../dist/index.html'), + assetsRoot: path.resolve(__dirname, '../dist'), + assetsSubDirectory: 'static', + assetsPublicPath: '/', + productionSourceMap: true, + // Gzip off by default as many popular static hosts such as + // Surge or Netlify already gzip all static assets for you. + // Before setting to `true`, make sure to: + // npm install --save-dev compression-webpack-plugin + productionGzip: false, + productionGzipExtensions: ['js', 'css'], + // Run the build command with an extra argument to + // View the bundle analyzer report after build finishes: + // `npm run build --report` + // Set to `true` or `false` to always turn it on or off + bundleAnalyzerReport: process.env.npm_config_report + }, + dev: { + env: require('./dev.env'), + port: 8080, + autoOpenBrowser: true, + assetsSubDirectory: 'static', + assetsPublicPath: '/', + proxyTable: {}, + // CSS Sourcemaps off by default because relative paths are "buggy" + // with this option, according to the CSS-Loader README + // (https://github.com/webpack/css-loader#sourcemaps) + // In our experience, they generally work as expected, + // just be aware of this issue when enabling this option. + cssSourceMap: false + } +} diff --git a/config/prod.env.js b/config/prod.env.js new file mode 100644 index 0000000..773d263 --- /dev/null +++ b/config/prod.env.js @@ -0,0 +1,3 @@ +module.exports = { + NODE_ENV: '"production"' +} diff --git a/gocrack-config.json b/gocrack-config.json new file mode 100644 index 0000000..b615ef4 --- /dev/null +++ b/gocrack-config.json @@ -0,0 +1,4 @@ +{ + "server": "http://localhost:1338", + "base_endpoint": "/api/v2" +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..e7e7af7 --- /dev/null +++ b/index.html @@ -0,0 +1,11 @@ + + + + + GoCrack + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d0b369b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8962 @@ +{ + "name": "gocrackui", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "dev": true + }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true, + "requires": { + "mime-types": "2.1.15", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "adjust-sourcemap-loader": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz", + "integrity": "sha1-QS2SQE62HkETY1ASy6U6M9AI4OI=", + "dev": true, + "requires": { + "assert": "1.4.1", + "camelcase": "1.2.1", + "loader-utils": "1.1.0", + "lodash.assign": "4.2.0", + "lodash.defaults": "3.1.2", + "object-path": "0.9.2", + "regex-parser": "2.2.7" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "lodash.defaults": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", + "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", + "dev": true, + "requires": { + "lodash.assign": "3.2.0", + "lodash.restparam": "3.6.1" + }, + "dependencies": { + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" + } + } + } + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "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": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } + }, + "aproba": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.2" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "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=", + "requires": { + "arr-flatten": "1.0.3" + } + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "requires": { + "make-iterator": "1.0.0" + }, + "dependencies": { + "make-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.0.tgz", + "integrity": "sha1-V7713IXSOSO6I3ZzJNjo+PPZaUs=", + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "arr-flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=" + }, + "array-every": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/array-every/-/array-every-0.1.2.tgz", + "integrity": "sha1-vlTPf7/ExHd7uoXHr37awoNtg+0=", + "requires": { + "make-iterator": "0.1.1" + } + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-intersection": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/array-intersection/-/array-intersection-0.1.2.tgz", + "integrity": "sha1-sU7wId8l6cnYBBFshHzGoNZ8+s4=", + "requires": { + "array-every": "0.1.2", + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "filter-array": "0.2.0", + "index-of": "0.1.1" + } + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=" + }, + "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=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "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 + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "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-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000694", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.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.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "axios": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", + "integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=", + "requires": { + "follow-redirects": "1.2.4", + "is-buffer": "1.1.5" + } + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.1" + } + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-generator": "6.25.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.6" + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4" + } + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } + }, + "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.23.0", + "babel-types": "6.25.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.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } + }, + "babel-helper-define-map": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", + "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.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.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.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.23.0", + "babel-types": "6.25.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.23.0", + "babel-types": "6.25.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } + }, + "babel-helper-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.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.23.0", + "babel-template": "6.25.0" + } + }, + "babel-loader": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", + "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "loader-utils": "0.2.17", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.23.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.23.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-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.23.0" + } + }, + "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.23.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-types": "6.25.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", + "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.24.1", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.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.23.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.23.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.23.0", + "babel-types": "6.25.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-types": "6.25.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.23.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.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.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.23.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.24.1", + "babel-runtime": "6.23.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.23.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.23.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", + "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", + "dev": true, + "requires": { + "regenerator-transform": "0.9.11" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, + "requires": { + "babel-runtime": "6.23.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.23.0", + "babel-types": "6.25.0" + } + }, + "babel-preset-env": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.5.2.tgz", + "integrity": "sha1-zUrpCm6Utwn5c3SzPl+LmDVWre8=", + "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-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.24.1", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.24.1", + "browserslist": "2.1.5", + "invariant": "2.2.2", + "semver": "5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.1.5.tgz", + "integrity": "sha1-6IJVDfPRzW1IHBo+ADjyuvE6RxE=", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000694", + "electron-to-chromium": "1.3.14" + } + } + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.23.0" + } + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-runtime": "6.23.0", + "core-js": "2.4.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.15" + } + }, + "babel-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "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.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "dev": true + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", + "dev": true + }, + "bn.js": { + "version": "4.11.7", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "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" + } + }, + "bootstrap": { + "version": "4.0.0-beta", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-beta.tgz", + "integrity": "sha512-I/r3fYtUZr+rUNkh8HI+twxZ56p6ehNn27eA1XSebLVQKAJ2xZHnEvZrSR+UR2A/bONcd9gHC3xatVhQlH6R6w==" + }, + "bootstrap-vue": { + "version": "1.0.0-beta.9", + "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-1.0.0-beta.9.tgz", + "integrity": "sha512-0wYWRebZROB+IXpatXgr/pUsiZ7ZUl/uJmc3bpIKlsi9sciE7wIdjV9PhdHnqoipU0kYylHfdcHimOHl5aIbjA==", + "requires": { + "bootstrap": "4.0.0-beta" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "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=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.3", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.0.6", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.0" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "0.2.9" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000694", + "electron-to-chromium": "1.3.14" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.1", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "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" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000694", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30000694", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000694.tgz", + "integrity": "sha1-AgCfT4LS8BJuTGkbfNWts1GTXAE=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000694", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000694.tgz", + "integrity": "sha1-FJLat8EMYIydN6cj5uPnhz4M6U8=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "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": { + "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 + } + } + }, + "chart.js": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.0.tgz", + "integrity": "sha1-Mw277gxmGZ63FfYPv4ykApYJpSk=", + "requires": { + "chartjs-color": "2.2.0", + "moment": "2.18.1" + } + }, + "chartjs-color": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", + "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", + "requires": { + "chartjs-color-string": "0.5.0", + "color-convert": "0.5.3" + }, + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + } + } + }, + "chartjs-color-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", + "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", + "requires": { + "color-name": "1.1.2" + } + }, + "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.0", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "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.1.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "cipher-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", + "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "circular-json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", + "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", + "dev": true + }, + "clap": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", + "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.4.tgz", + "integrity": "sha1-7siBHbJ0V+AHjYypIfqBty+oK/Q=", + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-spinners": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz", + "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo=", + "dev": true + }, + "cli-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + } + } + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true + }, + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.3", + "kind-of": "3.2.2", + "shallow-clone": "0.1.2" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz", + "integrity": "sha1-G1Sl4dz3fJkEVdTe6pjFZEFtyJM=", + "dev": true, + "requires": { + "q": "1.5.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "1.0.2", + "color-convert": "1.9.0", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true, + "requires": { + "color-name": "1.1.2" + } + }, + "color-name": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", + "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=" + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.2" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "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" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.2", + "typedarray": "0.0.6" + } + }, + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "dev": true, + "requires": { + "ini": "1.3.4", + "proto-list": "1.2.4" + } + }, + "connect-history-api-fallback": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", + "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "dev": true, + "requires": { + "bluebird": "3.5.1" + }, + "dependencies": { + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + } + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz", + "integrity": "sha1-lyjjg7lDFgUNDHRjlY8rhcCqggA=", + "dev": true, + "requires": { + "bluebird": "2.11.0", + "fs-extra": "0.26.7", + "glob": "6.0.4", + "is-glob": "3.1.0", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "node-dir": "0.1.17" + } + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "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": "2.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.1.3.tgz", + "integrity": "sha1-lSdx6w3dwcs/ovb75RpSLpOz7go=", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.8" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.3", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.2.14" + } + }, + "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-browserify": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", + "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.12", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } + }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-loader": { + "version": "0.28.4", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.4.tgz", + "integrity": "sha1-bPNXkZLONV6LONX0Ldeh8uyJjQ8=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "0.1.8" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + }, + "dependencies": { + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + } + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + } + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.0", + "source-map": "0.5.6" + } + }, + "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" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.23" + } + }, + "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-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debounce": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.0.2.tgz", + "integrity": "sha1-UDzGdNjX9zcJlmT7dd29NrlibcY=" + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "miller-rabin": "4.0.0", + "randombytes": "2.0.5" + } + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "editorconfig": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", + "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "commander": "2.9.0", + "lru-cache": "3.2.0", + "semver": "5.3.0", + "sigmund": "1.0.1" + }, + "dependencies": { + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "lru-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "dev": true, + "requires": { + "pseudomap": "1.0.2" + } + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz", + "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.14.tgz", + "integrity": "sha1-ZK8Pnv08PGrNV9cfg7Scp+6cS0M=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "brorand": "1.1.0", + "hash.js": "1.1.1", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "enhanced-resolve": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", + "integrity": "sha1-n0tib1dyRe3PSyrYPYbhf09CHew=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.6" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", + "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", + "dev": true, + "requires": { + "stackframe": "1.0.3" + } + }, + "es5-ext": { + "version": "0.10.23", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", + "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=", + "dev": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.8", + "doctrine": "2.0.0", + "escope": "3.6.0", + "espree": "3.4.3", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.3", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.7.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "eslint-config-standard": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz", + "integrity": "sha1-06aKr8cZFjnn7kQec0hzkCY1QpI=", + "dev": true + }, + "eslint-friendly-formatter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/eslint-friendly-formatter/-/eslint-friendly-formatter-2.0.7.tgz", + "integrity": "sha1-ZX+VoZr0mJY2r+uxzJ3mzrvQiO4=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "extend": "3.0.1", + "minimist": "1.2.0", + "text-table": "0.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "eslint-loader": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.8.0.tgz", + "integrity": "sha512-+d9me9y9t+/k1pY5hsorY685H3yYoQT0t5pZT1TGB7L46VOoLv8+3uKHvkjpUx1aCTjeacbj4yz4s5/LcGolpg==", + "dev": true, + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.1.8", + "rimraf": "2.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "eslint-plugin-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-2.0.3.tgz", + "integrity": "sha1-fImIOrDIX6XSi2ZqFKTpBqqQuJc=", + "dev": true, + "requires": { + "htmlparser2": "3.9.2" + } + }, + "eslint-plugin-promise": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", + "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", + "dev": true + }, + "eslint-plugin-standard": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-2.3.1.tgz", + "integrity": "sha1-Z2W9Km2ezce98bFFrkuzDit7hvg=", + "dev": true + }, + "espree": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", + "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "dev": true, + "requires": { + "acorn": "5.0.3", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.23" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource-polyfill": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz", + "integrity": "sha1-EODRh/ERsWfyj9q5GIQ859gY8Tw=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", + "dev": true, + "requires": { + "create-hash": "1.1.3" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "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=", + "requires": { + "fill-range": "2.2.3" + } + }, + "exports-loader": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.4.tgz", + "integrity": "sha1-1w/GEhl1s1/BKDDPUnVL4nQPyIY=", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.6" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "express": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", + "dev": true, + "requires": { + "accepts": "1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.7", + "depd": "1.1.0", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "finalhandler": "1.0.3", + "fresh": "0.5.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.4", + "qs": "6.4.0", + "range-parser": "1.2.0", + "send": "0.15.3", + "serve-static": "1.12.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.1" + }, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + } + } + }, + "extract-text-webpack-plugin": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz", + "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=", + "dev": true, + "requires": { + "async": "2.5.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.0.1" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "fast-deep-equal": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz", + "integrity": "sha1-XG9FmaumszPuM0Li7ZeGcvEAH40=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.2.2", + "object-assign": "4.1.1" + } + }, + "file-loader": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", + "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "filesize": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.10.tgz", + "integrity": "sha1-/I+iPdtO+eXgq24eZPZ5okpWdh8=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "filter-array": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/filter-array/-/filter-array-0.2.0.tgz", + "integrity": "sha1-n29M6vW16Ka2dKW1RgU3cUqMUfE=", + "requires": { + "arr-filter": "1.1.2", + "kind-of": "1.1.0", + "micromatch": "2.3.11" + }, + "dependencies": { + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" + } + } + }, + "finalhandler": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", + "dev": true, + "requires": { + "debug": "2.6.7", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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": "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" + } + }, + "flat-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true, + "requires": { + "circular-json": "0.3.1", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "follow-redirects": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.4.tgz", + "integrity": "sha512-Suw6KewLV2hReSyEOeql+UUkBVyiBm3ok1VPrVFRZnQInWpdoZbbiG5i8aJVSjTr0yQ4Ava0Sh6/joCg1Brdqw==", + "requires": { + "debug": "2.6.8" + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "font-awesome-loader": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/font-awesome-loader/-/font-awesome-loader-1.0.2.tgz", + "integrity": "sha1-p7Mz8/xaHogkeEz7msZeDrKyhcU=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "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.5", + "mime-types": "2.1.15" + } + }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "dev": true + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "friendly-errors-webpack-plugin": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz", + "integrity": "sha1-4yeBxHIvVGoGqbXXp8+ihSA3XXA=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "error-stack-parser": "2.0.1", + "string-length": "1.0.1" + } + }, + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "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 + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "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.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "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" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "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 + }, + "ini": { + "version": "1.3.4", + "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" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "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": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "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 + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": 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.4", + "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 + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "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.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "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.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.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 + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "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.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "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": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "function-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.1.2", + "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.2" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "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-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "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 + }, + "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 + } + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.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=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "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" + } + } + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "minimatch": "3.0.4" + }, + "dependencies": { + "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" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true, + "requires": { + "duplexer": "0.1.1" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.0" + } + }, + "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-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.1.tgz", + "integrity": "sha512-I2TYCUjYQMmqmRMCp6jKMC5bvdXxGIZ/heITRR/0F1u0OP920ImEj/cXt3WgcTKBnNYGn7enxUzdai3db829JA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "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 + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.1", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "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" + } + }, + "hosted-git-info": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", + "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.4", + "commander": "2.9.0", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.0.20" + } + }, + "html-webpack-plugin": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", + "integrity": "sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=", + "dev": true, + "requires": { + "bluebird": "3.5.0", + "html-minifier": "3.5.2", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.3" + }, + "dependencies": { + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + } + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.2" + } + }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "dev": true, + "requires": { + "depd": "1.1.0", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.4", + "micromatch": "2.3.11" + } + }, + "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.0", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "6.0.3" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "source-map": "0.5.6", + "supports-color": "4.0.0" + } + }, + "supports-color": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "ignore": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "dev": true + }, + "imports-loader": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.7.1.tgz", + "integrity": "sha1-8gS180cCoywdt9SNidXoZ6BEElM=", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.6" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "index-of": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/index-of/-/index-of-0.1.1.tgz", + "integrity": "sha1-2FWvNjQbKE2tYbvXFpXGxpTBV6w=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.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=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.1.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", + "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-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.8.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "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=" + }, + "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=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-my-json-valid": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "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.3", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.3.tgz", + "integrity": "sha1-wVvz5LZrYtcu+vKSWEhmPsvGGbY=", + "dev": true, + "requires": { + "isobject": "3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.0.tgz", + "integrity": "sha1-OVZSF/NmF4nooKDAgNX35rxG4aA=", + "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=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "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-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "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=", + "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 + }, + "jquery": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=" + }, + "js-base64": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", + "dev": true + }, + "js-beautify": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.4.tgz", + "integrity": "sha512-6YX1g+lIl0/JDxjFFbgj7fz6i0bWFa2Hdc7PfGqFhynaEiYe1NJ3R1nda0VGaRiGU82OllR+EGDoWFpGr3k5Kg==", + "dev": true, + "requires": { + "config-chain": "1.1.11", + "editorconfig": "0.13.3", + "mkdirp": "0.5.1", + "nopt": "3.0.6" + } + }, + "js-tokens": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "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.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "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 + } + } + }, + "jwt-decode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", + "integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk=" + }, + "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.5" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-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.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "loader-fs-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "dev": true, + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" + }, + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.1" + } + }, + "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" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, + "make-iterator": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-0.1.1.tgz", + "integrity": "sha1-hz0nuBmKRlqBSDtvXRbaToY+z1s=", + "requires": { + "for-own": "0.1.5" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.2" + } + }, + "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.3.8", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "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.3" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "dev": true, + "requires": { + "xml-char-classes": "1.0.0" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "no-case": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", + "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.0", + "osenv": "0.1.4", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.2.14" + }, + "dependencies": { + "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" + } + } + } + }, + "node-libs-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.2", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "node-sass": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", + "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.6.2", + "node-gyp": "3.6.2", + "npmlog": "4.1.0", + "request": "2.81.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0" + }, + "dependencies": { + "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" + } + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.0" + } + }, + "normalize-package-data": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "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", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.0.2" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "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 + }, + "numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-hash": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.1.8.tgz", + "integrity": "sha1-KKZZz5h9lqTavnhgKJ87UybEoDw=", + "dev": true + }, + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "dev": true + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-1.3.2.tgz", + "integrity": "sha1-6ydFbiHu+9gIDzHoNoxZaE5YWiw=", + "dev": true, + "requires": { + "cssnano": "3.10.0", + "underscore": "1.8.3", + "webpack-sources": "0.1.5" + }, + "dependencies": { + "webpack-sources": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", + "dev": true, + "requires": { + "source-list-map": "0.1.8", + "source-map": "0.5.6" + } + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "ora": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-1.3.0.tgz", + "integrity": "sha1-gAeN0rkqk0r2ajrXKluRBpTt5Ro=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "2.1.0", + "cli-spinners": "1.0.0", + "log-symbols": "1.0.2" + }, + "dependencies": { + "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" + } + }, + "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.1.0" + } + }, + "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" + } + } + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "2.3.1" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.6", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.0", + "pbkdf2": "3.0.12" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "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.1" + } + }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-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-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pbkdf2": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "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" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "popper.js": { + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.12.5.tgz", + "integrity": "sha512-6R2eXIy1xYukMNutoD+y/Gj0IpjEQhivyZonm5Vz0Fp8jdc7kvheKCvpM/t+PxqKb7VbLVnvPVEdTyslEb7f6w==" + }, + "postcss": { + "version": "5.2.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.1.9", + "source-map": "0.5.6", + "supports-color": "3.2.3" + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "5.2.17" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "5.2.17" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "5.2.17" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "5.2.17" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "5.2.17", + "uniqs": "2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true, + "requires": { + "postcss": "5.2.17", + "uniqid": "4.1.1" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "2.1.3", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "2.1.3", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "2.1.3", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.6.tgz", + "integrity": "sha512-HIq7yy1hh9KI472Y38iSRV4WupZUNy6zObkxQM/ZuInoaE2+PyX4NcO6jjP5HG5mXL7j5kcNEl0fAG4Kva7O9w==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.3", + "postcss-load-config": "1.2.0", + "schema-utils": "0.3.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "postcss": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "source-map": "0.5.6", + "supports-color": "4.0.0" + } + }, + "supports-color": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "5.2.17" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.17", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-selector-parser": "2.2.3" + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dev": true, + "requires": { + "postcss": "6.0.3" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "source-map": "0.5.6", + "supports-color": "4.0.0" + } + }, + "supports-color": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.3" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "source-map": "0.5.6", + "supports-color": "4.0.0" + } + }, + "supports-color": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.3" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "source-map": "0.5.6", + "supports-color": "4.0.0" + } + }, + "supports-color": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.3" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "integrity": "sha1-t/Vls9lW+7hWXKfB4jnQUG5CfYs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "source-map": "0.5.6", + "supports-color": "4.0.0" + } + }, + "supports-color": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "integrity": "sha1-M6fGgKpRLJ0D75KcrLuXTSA9J5A=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "5.2.17" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.17" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.17", + "uniqs": "2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "uniqs": "2.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "proxy-addr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", + "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", + "dev": true, + "requires": { + "forwarded": "0.1.0", + "ipaddr.js": "1.3.0" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "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=", + "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=", + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.3.8", + "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" + } + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.2", + "set-immediate-shim": "1.0.1" + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.3.3" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "regenerate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "dev": true + }, + "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 + }, + "regenerator-transform": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", + "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "private": "0.1.7" + } + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "regex-parser": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.7.tgz", + "integrity": "sha1-vQkOCRgYSazEVFfnZfe+KmP1DvE=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "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.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "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.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-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 + }, + "resolve-url-loader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.1.0.tgz", + "integrity": "sha1-J8lcwWpDU5I/29wtuvXu8iIyxHc=", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "1.1.0", + "camelcase": "4.1.0", + "convert-source-map": "1.5.0", + "loader-utils": "1.1.0", + "lodash.defaults": "4.2.0", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.5.6", + "urix": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "0.3.5", + "css": "2.2.1" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.2" + }, + "dependencies": { + "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" + } + } + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.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" + } + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.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" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "sass-loader": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", + "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", + "dev": true, + "requires": { + "async": "2.5.0", + "clone-deep": "0.3.0", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "pify": "3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.2.0" + }, + "dependencies": { + "ajv": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", + "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "0.1.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + } + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "2.1.9", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "send": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "dev": true, + "requires": { + "debug": "2.6.7", + "depd": "1.1.0", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "fresh": "0.5.0", + "http-errors": "1.6.1", + "mime": "1.3.4", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-static": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.1", + "send": "0.15.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } + } + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.0.3", + "rechoir": "0.6.2" + }, + "dependencies": { + "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" + } + } + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "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" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "dev": true, + "requires": { + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "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.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "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 + } + } + }, + "stackframe": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.3.tgz", + "integrity": "sha1-/mSrILFw5M5JBEsSbBGd+g5dx8w=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "2.3.2" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.2" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.2", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", + "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.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" + } + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.3", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.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 + }, + "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 + }, + "string-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", + "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "tapable": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", + "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "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 + }, + "timers-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-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 + }, + "toposort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", + "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-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 + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.15" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.20.tgz", + "integrity": "sha512-O/c2/N97k1Ms+23VRx6gIAfGdijuW53SlASmXy0FVapK63rQrduHyE+5X6hUtqNiSLLao9Uv6ijotpNe8t991Q==", + "dev": true, + "requires": { + "commander": "2.9.0", + "source-map": "0.5.6" + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "ultron": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", + "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=", + "dev": true + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", + "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "1.3.4" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "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 + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", + "dev": true + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "vue": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.4.4.tgz", + "integrity": "sha512-PCiRmc8ZT1DD5+BN8QUAmnkBefcCLfZVSuhc1u7iu5JoPrSHyyk/+4nehm7k2xVMi8+RFLk5WIHAN14UKF0txw==" + }, + "vue-chartjs": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-2.8.7.tgz", + "integrity": "sha512-XNNCQHwP1zUe739q0h0DdObx7qC+umJ50P8N4uab4N964rHSSq7sbRAdyoevObI3K2eYuCTLhnzjA1F90uQwtQ==", + "requires": { + "lodash.merge": "4.6.0" + } + }, + "vue-hot-reload-api": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.1.1.tgz", + "integrity": "sha512-oHuG8rOJ/b8wKVZJBx3HvLyOk9klqjUpjd6YlJQ1aHy1yGyBgy62BphQ13+Tuzsxl52ZNV5EQSvd385mTPMxdg==", + "dev": true + }, + "vue-i18n": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-7.0.3.tgz", + "integrity": "sha1-Pg6LAnIr95lYzUEITjNHHACmPlQ=" + }, + "vue-loader": { + "version": "12.2.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-12.2.2.tgz", + "integrity": "sha512-DD+sYaWQ1esYL/tEwJpoEGE/PFUu32fp7iOuMf4Sra3dgxqr4haTOkVam2VY0/5D4LG8eAcB94ruXKeQW2/ikw==", + "dev": true, + "requires": { + "consolidate": "0.14.5", + "hash-sum": "1.0.2", + "js-beautify": "1.7.4", + "loader-utils": "1.1.0", + "lru-cache": "4.1.1", + "postcss": "5.2.17", + "postcss-load-config": "1.2.0", + "postcss-selector-parser": "2.2.3", + "resolve": "1.3.3", + "source-map": "0.5.6", + "vue-hot-reload-api": "2.1.1", + "vue-style-loader": "3.0.1", + "vue-template-es2015-compiler": "1.5.3" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "vue-multiselect": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.0.3.tgz", + "integrity": "sha1-vsWPhFhgIvgsKjFpvhuGn22XFfw=" + }, + "vue-pagination-2": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/vue-pagination-2/-/vue-pagination-2-0.3.2.tgz", + "integrity": "sha1-OygVsXF8SQx6v5F/97tsaRSvTQw=", + "requires": { + "vue": "2.4.4", + "vuex": "2.4.1" + } + }, + "vue-resource": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/vue-resource/-/vue-resource-0.9.3.tgz", + "integrity": "sha1-q0bhxE6iGRQtzCiuQEOzsEyAlZ0=" + }, + "vue-router": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-2.7.0.tgz", + "integrity": "sha512-kxgsT50dDExua3i103nxNBjlfk8LeUmO9iujVxXV42MnISINHUjqMrknpOOJEg+i9nEkoVgG8N86Pklze35c/A==" + }, + "vue-style-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.1.tgz", + "integrity": "sha1-yLY5uy8kuvnXgnTcF+TyZMHe2gg=", + "dev": true, + "requires": { + "hash-sum": "1.0.2", + "loader-utils": "1.1.0" + }, + "dependencies": { + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "vue-tables-2": { + "version": "0.6.64", + "resolved": "https://registry.npmjs.org/vue-tables-2/-/vue-tables-2-0.6.64.tgz", + "integrity": "sha512-y42ib4hmaZj7nUyQlj5lxjneTDp/8kJxJg7z/pfpXhQhpoo0a2bb9IsvPWcAYY/D0jYrWhwH2FkGQikmNwsqmA==", + "requires": { + "array-intersection": "0.1.2", + "clone": "2.1.1", + "debounce": "1.0.2", + "merge": "1.2.0", + "vue": "2.4.4", + "vue-pagination-2": "0.3.2", + "vue-resource": "0.9.3" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" + } + } + }, + "vue-template-compiler": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.4.4.tgz", + "integrity": "sha512-XdHsNi8Z5WqwuFl/Z5eLKgE2DOEEOdMk1aA459uSgvwyy+pjKLBlQWsUpAtoR6o6Wmpujw6NtinAUGuqSTituQ==", + "dev": true, + "requires": { + "de-indent": "1.0.2", + "he": "1.1.1" + } + }, + "vue-template-es2015-compiler": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.5.3.tgz", + "integrity": "sha512-j3TBDtjqz7pC9XUzeSeqF5oekqPahxyUHsdG+kZKDH/V/DTexq5inYdLGstnqCUljoLC9LTj3H/5hmyToeSd1A==", + "dev": true + }, + "vuelidate": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.5.0.tgz", + "integrity": "sha1-wxVlmgI+dg0PsRtrQrbDzfCDBsM=" + }, + "vuex": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-2.4.1.tgz", + "integrity": "sha512-ak8bu/0Cd/ZHA/rwuegJZEQsnxOfAQMNu6ytHtaHx/Lcgwp2uDFDOh/3u6Wx6ruQAwio41Kjl3RyjAIB3lPvdg==" + }, + "vuex-router-sync": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vuex-router-sync/-/vuex-router-sync-4.2.0.tgz", + "integrity": "sha512-Eqm4QzflZd/uxxvykyStJV7WIbHtsLbglSxKNx1U4hh3/0WlNQeUNtSaTfZ660uJ846tuVIC9l5wROEQwhxHYg==" + }, + "watchpack": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", + "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", + "dev": true, + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "webpack": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", + "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=", + "dev": true, + "requires": { + "acorn": "5.0.3", + "acorn-dynamic-import": "2.0.2", + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "async": "2.5.0", + "enhanced-resolve": "3.1.0", + "interpret": "1.0.3", + "json-loader": "0.5.4", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "0.2.17", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.6", + "supports-color": "3.2.3", + "tapable": "0.2.6", + "uglify-js": "2.8.29", + "watchpack": "1.3.1", + "webpack-sources": "0.2.3", + "yargs": "6.6.0" + }, + "dependencies": { + "source-list-map": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", + "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "webpack-sources": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", + "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", + "dev": true, + "requires": { + "source-list-map": "1.1.2", + "source-map": "0.5.6" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.8.2.tgz", + "integrity": "sha1-i2JAwpqdY7xy8J2SD7BQrbzOn+g=", + "dev": true, + "requires": { + "acorn": "5.0.3", + "chalk": "1.1.3", + "commander": "2.9.0", + "ejs": "2.5.6", + "express": "4.15.3", + "filesize": "3.5.10", + "gzip-size": "3.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "opener": "1.4.3", + "ws": "2.3.1" + } + }, + "webpack-dev-middleware": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", + "integrity": "sha1-CWkdCXOjCtH4Ksc6EuIIfwpHVPk=", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.3.4", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0" + } + }, + "webpack-hot-middleware": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.18.0.tgz", + "integrity": "sha1-oWu1Nbg6aslKeKxevOTzBZ6CdNM=", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "html-entities": "1.2.1", + "querystring": "0.2.0", + "strip-ansi": "3.0.1" + } + }, + "webpack-merge": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.0.tgz", + "integrity": "sha1-atciI7PguDflMeRZfBmfkJNhUR4=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.6" + }, + "dependencies": { + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + } + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "ws": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", + "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", + "dev": true, + "requires": { + "safe-buffer": "5.0.1", + "ultron": "1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "dev": true + } + } + }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "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": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "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": "4.2.1" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7030ac5 --- /dev/null +++ b/package.json @@ -0,0 +1,93 @@ +{ + "name": "gocrackui", + "version": "1.0.0", + "description": "Web UI for GoCrack", + "author": "Christopher Schmitt ", + "scripts": { + "dev": "node build/dev-server.js", + "start": "node build/dev-server.js", + "build": "node build/build.js", + "lint": "eslint --ext .js,.vue src" + }, + "dependencies": { + "axios": "^0.16.2", + "bootstrap-vue": "^1.0.0-beta.9", + "chart.js": "^2.7.0", + "font-awesome": "^4.7.0", + "jquery": "^3.2.1", + "jwt-decode": "^2.2.0", + "numeral": "^2.0.6", + "popper.js": "^1.12.5", + "vue": "^2.4.4", + "vue-chartjs": "^2.8.7", + "vue-i18n": "^7.0.3", + "vue-multiselect": "^2.0.3", + "vue-router": "^2.7.0", + "vue-tables-2": "^0.6.64", + "vuelidate": "^0.5.0", + "vuex": "^2.4.1", + "vuex-router-sync": "^4.2.0" + }, + "devDependencies": { + "autoprefixer": "^6.7.2", + "babel-core": "^6.22.1", + "babel-eslint": "^7.1.1", + "babel-loader": "^6.2.10", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-plugin-transform-runtime": "^6.22.0", + "babel-preset-env": "^1.3.2", + "babel-preset-stage-2": "^6.22.0", + "babel-register": "^6.22.0", + "bootstrap": "^4.0.0-beta", + "chalk": "^1.1.3", + "connect-history-api-fallback": "^1.3.0", + "copy-webpack-plugin": "^4.0.1", + "css-loader": "^0.28.4", + "eslint": "^3.19.0", + "eslint-config-standard": "^6.2.1", + "eslint-friendly-formatter": "^2.0.7", + "eslint-loader": "^1.7.1", + "eslint-plugin-html": "^2.0.0", + "eslint-plugin-promise": "^3.4.0", + "eslint-plugin-standard": "^2.0.1", + "eventsource-polyfill": "^0.9.6", + "exports-loader": "^0.6.4", + "express": "^4.14.1", + "extract-text-webpack-plugin": "^2.0.0", + "file-loader": "^0.11.1", + "font-awesome-loader": "^1.0.2", + "friendly-errors-webpack-plugin": "^1.1.3", + "html-webpack-plugin": "^2.28.0", + "http-proxy-middleware": "^0.17.3", + "imports-loader": "^0.7.1", + "node-sass": "^4.5.3", + "opn": "^4.0.2", + "optimize-css-assets-webpack-plugin": "^1.3.0", + "ora": "^1.2.0", + "postcss-loader": "^2.0.6", + "resolve-url-loader": "^2.1.0", + "rimraf": "^2.6.0", + "sass-loader": "^6.0.6", + "semver": "^5.3.0", + "shelljs": "^0.7.6", + "style-loader": "^0.18.2", + "url-loader": "^0.5.9", + "vue-loader": "^12.2.2", + "vue-style-loader": "^3.0.1", + "vue-template-compiler": "^2.4.4", + "webpack": "^2.6.1", + "webpack-bundle-analyzer": "^2.2.1", + "webpack-dev-middleware": "^1.10.0", + "webpack-hot-middleware": "^2.18.0", + "webpack-merge": "^4.1.0" + }, + "engines": { + "node": ">= 4.0.0", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..ee69764 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,101 @@ + + + + + + diff --git a/src/api/apis/auditing.js b/src/api/apis/auditing.js new file mode 100644 index 0000000..8a4e6ab --- /dev/null +++ b/src/api/apis/auditing.js @@ -0,0 +1,7 @@ +import client from './client' + +export default { + getAuditLog (apiConfig, entityID) { + return client.performRequest(apiConfig, 'GET', `/audit/${entityID}`) + } +} diff --git a/src/api/apis/auth.js b/src/api/apis/auth.js new file mode 100644 index 0000000..8d71589 --- /dev/null +++ b/src/api/apis/auth.js @@ -0,0 +1,10 @@ +import client from './client' + +export default { + loginUser (apiConfig, loginData) { + if (loginData === undefined || typeof (loginData) !== 'object') { + throw Error('loginData must be an object') + } + return client.performRequest(apiConfig, 'POST', '/login', {data: loginData}) + } +} diff --git a/src/api/apis/client.js b/src/api/apis/client.js new file mode 100644 index 0000000..b9e3e60 --- /dev/null +++ b/src/api/apis/client.js @@ -0,0 +1,32 @@ +import axios from 'axios' + +const debug = process.env.NODE_ENV !== 'production' + +export default { + performRequest (apiConfig, method, route, optionalAxiosOptions = {}) { + let axiosOptions = { + method: method, + withCredentials: true, + xsrfHeaderName: 'X-Xsrf-Token', + xsrfCookieName: 'XSRF-TOKEN', + baseURL: `${apiConfig.server}${apiConfig.base_endpoint}/`, + url: route, + ...optionalAxiosOptions + } + + if (debug) { + console.log(`Making ${axiosOptions.method} request to server ${axiosOptions.baseURL} to path ${axiosOptions.url}`) + } + + return axios.request(axiosOptions).then((resp) => { + if (axiosOptions.method === 'POST' || axiosOptions.method === 'PUT' || axiosOptions.method === 'PATCH') { + // No content + if (resp.status === 204) { + return true + } + } + + return resp.data + }) + } +} diff --git a/src/api/apis/dashboard.js b/src/api/apis/dashboard.js new file mode 100644 index 0000000..9e6607c --- /dev/null +++ b/src/api/apis/dashboard.js @@ -0,0 +1,7 @@ +import client from './client' + +export default { + getWorkers (apiConfig) { + return client.performRequest(apiConfig, 'GET', '/workers/') + } +} diff --git a/src/api/apis/filemanager.js b/src/api/apis/filemanager.js new file mode 100644 index 0000000..ac6f87d --- /dev/null +++ b/src/api/apis/filemanager.js @@ -0,0 +1,67 @@ +import client from './client' +import apitypes from '../types' + +export default { + getTaskFiles (apiConfig, entityID) { + return client.performRequest(apiConfig, 'GET', `/files/task/`) + }, + + getEngineFiles (apiConfig) { + return client.performRequest(apiConfig, 'GET', `/files/engine/`) + }, + + uploadFile (apiConfig, file, fileType, params, progressFunc = undefined) { + let url + switch (fileType) { + case apitypes.FILE_ENGINE: + url = `/files/engine/${file.name}` + break + case apitypes.FILE_TASK: + url = `/files/task/${file.name}` + break + default: + throw Error('fileType must be FILE_ENGINE or FILE_TASK') + } + + let data = new FormData() + data.append('file', file) + + let axiosconfig = {params: params, data: data} + if (progressFunc !== undefined) { + axiosconfig.onUploadProgress = progressFunc + } + return client.performRequest(apiConfig, 'PUT', url, axiosconfig) + }, + + downloadFile (apiConfig, fileID, fileType) { + let url + switch (fileType) { + case apitypes.FILE_ENGINE: + url = `/files/engine/${fileID}/download` + break + case apitypes.FILE_TASK: + url = `/files/task/${fileID}/download` + break + default: + throw Error('fileType must be FILE_ENGINE or FILE_TASK') + } + + return client.performRequest(apiConfig, 'GET', url) + }, + + deleteFile (apiConfig, fileID, fileType) { + let url + switch (fileType) { + case apitypes.FILE_ENGINE: + url = `/files/engine/${fileID}` + break + case apitypes.FILE_TASK: + url = `/files/task/${fileID}` + break + default: + throw Error('fileType must be FILE_ENGINE or FILE_TASK') + } + + return client.performRequest(apiConfig, 'DELETE', url) + } +} diff --git a/src/api/apis/hashcat.js b/src/api/apis/hashcat.js new file mode 100644 index 0000000..f0a5065 --- /dev/null +++ b/src/api/apis/hashcat.js @@ -0,0 +1,7 @@ +import client from './client' + +export default { + getHashcatTypes (apiConfig) { + return client.performRequest(apiConfig, 'GET', '/engine/hashcat/hash_modes') + } +} diff --git a/src/api/apis/index.js b/src/api/apis/index.js new file mode 100644 index 0000000..87f0b15 --- /dev/null +++ b/src/api/apis/index.js @@ -0,0 +1,47 @@ +import auth from './auth' +import dashboard from './dashboard' +import tasks from './tasks' +import auditing from './auditing' +import hashcat from './hashcat' +import users from './users' +import filemanager from './filemanager' + +var wrapConfig = function (fn, cfg) { + return function () { + return fn.apply(this, [cfg, ...arguments]) + } +} + +export default { + wrapAPIWithConfig (config) { + return { + // ./auth + login: wrapConfig(auth.loginUser, config), + // ./dashboard + getWorkers: wrapConfig(dashboard.getWorkers, config), + // ./tasks + getTasks: wrapConfig(tasks.getTasks, config), + getTaskInfo: wrapConfig(tasks.getTaskInfo, config), + modifyTask: wrapConfig(tasks.modifyTask, config), + getPasswords: wrapConfig(tasks.getCrackedPasswords, config), + createTask: wrapConfig(tasks.createTask, config), + modifyTaskStatus: wrapConfig(tasks.modifyTaskStatus, config), + deleteTask: wrapConfig(tasks.deleteTask, config), + // ./auditing + getAuditLog: wrapConfig(auditing.getAuditLog, config), + // ./hashcat + getHashcatTypes: wrapConfig(hashcat.getHashcatTypes, config), + // ./users + getUsers: wrapConfig(users.getUsers, config), + getUserInfo: wrapConfig(users.getUserInfo, config), + modifyUserInfo: wrapConfig(users.modifyUserInfo, config), + createUser: wrapConfig(users.createUser, config), + // ./filemanager + getTaskFiles: wrapConfig(filemanager.getTaskFiles, config), + getEngineFiles: wrapConfig(filemanager.getEngineFiles, config), + uploadFile: wrapConfig(filemanager.uploadFile, config), + downloadFile: wrapConfig(filemanager.downloadFile, config), + deleteFile: wrapConfig(filemanager.deleteFile, config) + } + } +} diff --git a/src/api/apis/tasks.js b/src/api/apis/tasks.js new file mode 100644 index 0000000..5e5f2ff --- /dev/null +++ b/src/api/apis/tasks.js @@ -0,0 +1,57 @@ +import axios from 'axios' +import client from './client' +import apitypes from '../types' + +export default { + getTasks (apiConfig, data) { + // We're not using the helper here as the table component expects the raw axios response + return axios.request({ + method: 'GET', + xsrfHeaderName: 'X-Xsrf-Token', + xsrfCookieName: 'XSRF-TOKEN', + baseURL: `${apiConfig.server}${apiConfig.base_endpoint}/`, + url: '/task/', + params: data, + withCredentials: true + }) + }, + + getTaskInfo (apiConfig, taskId) { + return client.performRequest(apiConfig, 'GET', `/task/${taskId}`) + }, + + getCrackedPasswords (apiConfig, taskId) { + return client.performRequest(apiConfig, 'GET', `/task/${taskId}/passwords`).then((response) => { + let { data, count } = response + if (count > 0) { + data = data.map(el => { + return { + ...el, + cracked_at: new Date(el.cracked_at).toUTCString() + } + }) + } + return data + }) + }, + + modifyTask (apiConfig, taskId, payload) { + return client.performRequest(apiConfig, 'PATCH', `/task/${taskId}`, {data: payload}) + }, + + createTask (apiConfig, payload) { + return client.performRequest(apiConfig, 'POST', `/task/`, {data: payload}) + }, + + modifyTaskStatus (apiConfig, taskId, action) { + console.log(action === apitypes.TASK_START) + if (action === apitypes.TASK_START || action === apitypes.TASK_STOP) { + return client.performRequest(apiConfig, 'PATCH', `/task/${taskId}/status`, {data: {state: action}}) + } + throw Error('incorrect action. must be TASK_START or TASK_STOP') + }, + + deleteTask (apiConfig, taskId) { + return client.performRequest(apiConfig, 'DELETE', `/task/${taskId}`) + } +} diff --git a/src/api/apis/users.js b/src/api/apis/users.js new file mode 100644 index 0000000..39876c5 --- /dev/null +++ b/src/api/apis/users.js @@ -0,0 +1,19 @@ +import client from './client' + +export default { + getUsers (apiConfig) { + return client.performRequest(apiConfig, 'GET', `/users/`) + }, + + getUserInfo (apiConfig, userId) { + return client.performRequest(apiConfig, 'GET', `/users/${userId}`) + }, + + modifyUserInfo (apiConfig, userId, payload) { + return client.performRequest(apiConfig, 'PATCH', `/users/${userId}`, {data: payload}) + }, + + createUser (apiConfig, payload) { + return client.performRequest(apiConfig, 'POST', `/users/register`, {data: payload}) + } +} diff --git a/src/api/config.js b/src/api/config.js new file mode 100644 index 0000000..2252159 --- /dev/null +++ b/src/api/config.js @@ -0,0 +1,10 @@ +const _config = {} + +const GoCrackConfig = { + set: config => Object.assign(_config, config), + get: _config +} + +Object.freeze(GoCrackConfig) + +export default GoCrackConfig diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..8be645c --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,32 @@ +import apis from './apis' +import GoCrackConfig from './config' + +const debug = process.env.NODE_ENV !== 'production' + +const VuePlugin = { + install: function (Vue, config) { + if (Vue._gocrack_api_installed) { + return + } + + if (config.server === undefined) { + config.server = '' + } + + Vue._gocrack_api_installed = true + GoCrackConfig.set(config) + + if (debug) { + console.log('GoCrack Config:', GoCrackConfig.get) + } + + Vue.mixin({ + created () { + this.$config = GoCrackConfig + this.$gocrack = apis.wrapAPIWithConfig(config) + } + }) + } +} + +export default VuePlugin diff --git a/src/api/types.js b/src/api/types.js new file mode 100644 index 0000000..015c12f --- /dev/null +++ b/src/api/types.js @@ -0,0 +1,67 @@ + +// these should mirror shared/hashcat_types.go based on HashcatAttackMode +const HC_STRAIGHT = 0 +const HC_BF = 3 +const ENG_HC = 1 + +export default { + // server/storage/schemas.go based on WorkerCrackEngine + ENGINE_HASHCAT: ENG_HC, + + FILE_ENGINE: 0, + FILE_TASK: 1, + + TASK_START: 'start', + TASK_STOP: 'stop', + + HASHCAT_ATTACKMODE_STRAIGHT: HC_STRAIGHT, + HASHCAT_ATTACKMODE_COMBINATION: 1, + HASHCAT_ATTACKMODE_BF: HC_BF, + HASHCAT_ATTACK_MODES: [ + { + name: 'Dictionary/Straight', + id: HC_STRAIGHT, + default: true + }, + { + name: 'Brute Force', + id: HC_BF + } + ], + GOCRACK_ENGINES: [ + { + name: 'Hashcat', + id: ENG_HC + } + ], + ENGINE_FILE_TYPES: [ + { + name: 'Dictionary', + id: 0 + }, + { + name: 'Brute Force Mask(s)', + id: 1 + }, + { + name: 'Mangling Rule(s)', + id: 2 + } + ], + TASK_FILE_FOR_ENGINE: [ + { + name: 'All', + id: 0 + }, + { + name: 'Hashcat', + id: ENG_HC + } + ], + TASK_STATUSES: ['Queued', 'Running', 'Stopped', 'Error', 'Exhausted', 'Finished'], + TASK_PRIORITIES: [ + { text: 'High (up to 4 GPUs)', value: 0 }, + { text: 'Normal (up to 2 GPUs)', value: 1 }, + { text: 'Low (1 GPU)', value: 2 } + ] +} diff --git a/src/components/DeviceSelection.vue b/src/components/DeviceSelection.vue new file mode 100644 index 0000000..304a2c6 --- /dev/null +++ b/src/components/DeviceSelection.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/components/DisplayFileInfo.vue b/src/components/DisplayFileInfo.vue new file mode 100644 index 0000000..52a773d --- /dev/null +++ b/src/components/DisplayFileInfo.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/components/DownloadButton.vue b/src/components/DownloadButton.vue new file mode 100644 index 0000000..f90050a --- /dev/null +++ b/src/components/DownloadButton.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/EntitlementManager.vue b/src/components/EntitlementManager.vue new file mode 100644 index 0000000..7b0fdbc --- /dev/null +++ b/src/components/EntitlementManager.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/PasswordLengthBarGraph.js b/src/components/PasswordLengthBarGraph.js new file mode 100644 index 0000000..c997055 --- /dev/null +++ b/src/components/PasswordLengthBarGraph.js @@ -0,0 +1,39 @@ + +import { Bar } from 'vue-chartjs' + +export default Bar.extend({ + props: ['options'], + mounted () { + this.$parent.$on('passwordLengthStatsGenerated', (stats) => { + this.renderChart(stats, this.options || { + responsive: true, + maintainAspectRatio: true, + display: true, + legend: { + display: true + }, + scales: { + xAxes: [ + { + scaleLabel: { + display: true, + labelString: this.$t('graph.password_lengths') + } + } + ], + yAxes: [ + { + scaleLabel: { + display: true, + labelString: this.$t('graph.num_cracked_passwords') + }, + gridLines: { + display: true + } + } + ] + } + }) + }) + } +}) diff --git a/src/components/PasswordTable.vue b/src/components/PasswordTable.vue new file mode 100644 index 0000000..2c1c0ca --- /dev/null +++ b/src/components/PasswordTable.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/src/components/StopTaskModal.vue b/src/components/StopTaskModal.vue new file mode 100644 index 0000000..035a027 --- /dev/null +++ b/src/components/StopTaskModal.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/components/TaskStatusTable.vue b/src/components/TaskStatusTable.vue new file mode 100644 index 0000000..d6e4caa --- /dev/null +++ b/src/components/TaskStatusTable.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/components/UpdateTaskModal.vue b/src/components/UpdateTaskModal.vue new file mode 100644 index 0000000..67abd51 --- /dev/null +++ b/src/components/UpdateTaskModal.vue @@ -0,0 +1,142 @@ + + + diff --git a/src/components/UploadFileModal.vue b/src/components/UploadFileModal.vue new file mode 100644 index 0000000..30c00e6 --- /dev/null +++ b/src/components/UploadFileModal.vue @@ -0,0 +1,265 @@ + + + diff --git a/src/components/UsersSelection.vue b/src/components/UsersSelection.vue new file mode 100644 index 0000000..18b3a39 --- /dev/null +++ b/src/components/UsersSelection.vue @@ -0,0 +1,70 @@ + + + diff --git a/src/filters/index.js b/src/filters/index.js new file mode 100644 index 0000000..0b8f4d2 --- /dev/null +++ b/src/filters/index.js @@ -0,0 +1,5 @@ +import { formatNumber } from './numeral' + +export { + formatNumber +} diff --git a/src/filters/numeral.js b/src/filters/numeral.js new file mode 100644 index 0000000..46eea41 --- /dev/null +++ b/src/filters/numeral.js @@ -0,0 +1,5 @@ +import numeral from 'numeral' + +export function formatNumber (value) { + return numeral(value).format('0,0') +} diff --git a/src/helpers/generate_csv.js b/src/helpers/generate_csv.js new file mode 100644 index 0000000..f09f423 --- /dev/null +++ b/src/helpers/generate_csv.js @@ -0,0 +1,46 @@ +function convertArrayToCSV (arrCSVContents) { + if (arrCSVContents === undefined || arrCSVContents.length === 0) { + return null + } + + let keys = Object.keys(arrCSVContents[0]) + let result = keys.join(',') + '\n' + + arrCSVContents.forEach((item) => { + let arr = [] + keys.forEach((key) => { + arr.push(`"${item[key]}"`) + }) + result += arr.join(',') + '\n' + }) + + return result +} + +function generateCSV (filename, arrCSVContents) { + let csv = convertArrayToCSV(arrCSVContents) + if (csv === null) { + return + } + + var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }) + if (navigator.msSaveBlob) { // IE 10+ + navigator.msSaveBlob(blob, filename) + } else { + var link = document.createElement('a') + if (link.download !== undefined) { + // Browsers that support HTML5 download attribute + var url = URL.createObjectURL(blob) + link.setAttribute('href', url) + link.setAttribute('download', filename) + link.style.visibility = 'hidden' + document.body.appendChild(link) + link.click() + document.body.removeChild(link) + } + } +} + +export default { + generateCSV +} diff --git a/src/helpers/index.js b/src/helpers/index.js new file mode 100644 index 0000000..7acc73a --- /dev/null +++ b/src/helpers/index.js @@ -0,0 +1,64 @@ +import { ADD_TOAST_MESSAGE } from '@/toast' + +var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + +export default { + formatBytes (bytes, decimals) { + if (bytes === 0) { + return '0 Bytes' + } + let k = 1000 + let dm = decimals || 2 + let i = Math.floor(Math.log(bytes) / Math.log(k)) + + return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i] + }, + + timeDifference (current, previous) { + var msPerMinute = 60 * 1000 + var msPerHour = msPerMinute * 60 + var msPerDay = msPerHour * 24 + var msPerMonth = msPerDay * 30 + var msPerYear = msPerDay * 365 + var elapsed = current - previous + + if (elapsed < msPerMinute) { + return Math.round(elapsed / 1000) + ' seconds ago' + } else if (elapsed < msPerHour) { + return Math.round(elapsed / msPerMinute) + ' minutes ago' + } else if (elapsed < msPerDay) { + return Math.round(elapsed / msPerHour) + ' hours ago' + } else if (elapsed < msPerMonth) { + return 'approximately ' + Math.round(elapsed / msPerDay) + ' days ago' + } else if (elapsed < msPerYear) { + return 'approximately ' + Math.round(elapsed / msPerMonth) + ' months ago' + } + return 'approximately ' + Math.round(elapsed / msPerYear) + ' years ago' + }, + + timeDifferenceFromNow (previous) { + if (!(previous instanceof Date)) { + previous = new Date(previous) + } + return this.timeDifference(new Date(), previous) + }, + + // componentToastError is similiar to the helper in store/helpers but + // works on a component level instead of store level + componentToastError (component, error) { + if (error.data.error) { + component.$store.dispatch(ADD_TOAST_MESSAGE, { + text: `${error.data.error}`, + type: 'danger', + dismissAfter: 4000 + }) + } else { + console.log('An error occurred: ', error) + component.$store.dispatch(ADD_TOAST_MESSAGE, { + text: `An unknown error occurred: ${error.message}`, + type: 'danger', + dismissAfter: 4000 + }) + } + } +} diff --git a/src/i18n/en-US.json b/src/i18n/en-US.json new file mode 100644 index 0000000..50f687a --- /dev/null +++ b/src/i18n/en-US.json @@ -0,0 +1,197 @@ +{ + "name": "GoCrack", + "navbar": { + "list_tasks": "Lists Tasks", + "create_task": "Create Task", + "file_mgr": "File Manager", + "engine_files": "Engine Files", + "task_files": "Task Files", + "admin": "Admin Settings", + "users": "Users", + "edit_user": "Edit User" + }, + "login": { + "header": "Log In", + "placeholder_username": "Enter your username", + "placeholder_password": "Enter your password", + "button_login": "Login", + "register": "Register", + "validation": { + "user_required": "Username is required", + "user_min_length": "Username must be at least 4 characters", + "email_required": "E-Mail is required", + "email_valid": "E-Mail must be valid", + "password_required": "Password is required", + "password_min_length": "Password must be at least 6 characters" + }, + "username": "Username", + "email": "E-Mail", + "password": "Password" + }, + "errors": { + "unauthorized": "Unauthorized", + "unauthorized_text": "You do not have access to the requested resource", + "header_server_error": "Server Error", + "default_server_error": "An unknown server error occured. Please contact your site administrator", + "upload_in_progress": "An upload is in progress. Please wait..." + }, + "create_task": { + "placeholder_casecode": "CC-1337", + "description_casecode": "The MPR or MFR number for the engagement.", + "taskname": "Task Name", + "placeholder_taskname": "Responder-Workstation-2017-03-27", + "description_taskname": "Descriptive name for the task within the case. This can be simply a number (like 1, 2, etc), but it is better if you give it a more descriptive name for where the hashes came from (like Responder-Workstation-2017-03-27 indicating the network segment and date when the Responder tool was run).", + "placeholder_comment": "Put any notes here that you'd like others to see...", + "devices": "Use Devices", + "placeholder_devices": "Select Devices (optional)", + "description_devices": "Assign specific GPU devices or the CPU to this task. If specified and one or more devices are in use on other tasks, then this task will be queued until all devices are available. This field should typically be left blank and the system will automatically assign GPUs based on availability and task Priority.", + "error_devices_mixed_types": "You cannot mix device types", + "error_devices_mixed_hosts": "You cannot select devices from multiple hosts", + "engine": "Engine", + "description_engine": "The Cracking engine that should be used to process this task", + "placeholder_engine": "Select Cracking Engine", + "attack_mode": "Attack Mode", + "description_attack_mode": "Dictionary/Straight attacks use a wordlist dictionary and an optional set of mangling rules. They are preferred since they are more likely to crack passwords in a reasonable amount of time. Brute Force attacks use a set of character type strings and try every possible password with those character types. Brute Force attacks are impractical for long passwords and should generally be performed only after an exhaustive Dictionary/Straight attack.", + "attack_modes": { + "brute_force": "Brute Force", + "dict": "Dictionary/Straight" + }, + "dictionary": "Dictionary File", + "description_dictionary": "Wordlist to use.", + "mangling_file": "Mangling Rule(s)", + "description_mangling_file": "Set of transformation rules that will be applied to each line in the dictionary. If no rules are selected, only the original line in the dictionary will be used.", + "file": "Password(s) File", + "description_file": "File containing hashes to be cracked. Exactly one Hash per line is required (no blank lines). Must be formatted exactly as shown for the selected Hash Type at the Example Hashes Guide. File will be checked on upload and task cannot be created if the file contains any errors.", + "password_masks": "Password Mask(s)", + "description_password_masks": "List of character type strings to use for Brute Force attack.", + "hashtype": "Hash Type", + "description_hashtype": "Type of hashes to be cracked. The number listed is the mode identifier for Hashcat. Must be selected before a file is uploaded.", + "additional_users": "Additional Users", + "description_users": "Users that will receive emails when passwords crack and who will have access to this task via this web interface.", + "description_priority": "Relative priority of this task. Used to allocate GPUs and to prioritize tasks on the queue when necessary. If using a Higher priority, you may want to indicate why in the comment field." + }, + "task_status": { + "cracked_passwords_header": "Cracked Passwords", + "task_status": "Task Status for ", + "start": "Start", + "stop": "Stop", + "edit": "Edit", + "download_results": "Download Results", + "realtime_status": "Realtime Status", + "task_info": "Task Info", + "header_action": "Action", + "header_status_code": "Status Code", + "header_user_id": "User ID", + "header_occurred_at": "Occurred At", + "tooltip_realtime_offline": "Realtime Status Offline/Starting", + "tooltip_edit_disabled": "Task must be stopped before editing", + "header_audit_log": "Audit Log", + "download_audit_log": "Export Audit Log", + "using_devices": "Using Devices", + "randomly_assigned": "Randomly Assigned" + }, + "shared": { + "upload_file": "Upload File", + "download_file": "Download", + "loading": "Loading...", + "actions": "Actions", + "edit": "Edit", + "download": "Download", + "files": "Files", + "logout": "Logout", + "close": "Close", + "file_type": "File Type", + "casecode": "Case Code", + "name": "Name", + "created_by": "Created By", + "comment": "Comment", + "status": "Status", + "error": "Error", + "created_at": "Created At", + "language": "Language", + "task_name": "Task Name", + "delete": "Delete", + "engine": "Engine", + "search": "Search", + "search_tasks": "Search Tasks", + "edit_settings": "Edit Settings", + "priority": "Priority" + }, + "upload_modal": { + "engine": "Engine", + "file": "File", + "title": "Upload File", + "select_hashcat_type": "Hash Type", + "is_shared": "Is Shared?", + "description_is_shared": "If selected, this allows other users who are not entitled to this file the ability to use it in their task. However, they will not be able to edit or download this file.", + "uploading": "Uploading...", + "all_selected": "Selecting 'All' performs no validation on the file you're about to upload and will show 0 hashes & 0 salts", + "error_select_a_file": "You must select a file before continuing" + }, + "edit_user": { + "email": "E-Mail Address", + "is_admin": "Admin", + "description_is_admin": "Is the user an administrator? This grants the user access to everything", + "browser_notifications": "Browser Notifications", + "notification_revoke": "Revoke", + "notification_grant": "Grant", + "current_password": "Current Password", + "new_password": "New Password", + "confirm_password": "Confirm Password", + "email_invalid": "Please use a valid email address", + "current_password_missing": "Please set your current password", + "confirm_password_missing": "Please re-type your new password below", + "header_change_password": "Change Password", + "header_notifications": "Notifications" + }, + "shared_headers": { + "file_id": "File ID", + "hashes_n_salts": "Hashes / Salts", + "filename": "File Name", + "uploaded_by": "Uploaded By", + "number_entries": "Item Count", + "file_type": "File Type", + "information": "Information", + "running_tasks": "Running Tasks" + }, + "list_tasks": { + "header_tasks": "Tasks", + "header_task_id": "Task ID", + "header_cracked_total": "Cracked / Unq." + }, + "list_files": { + "header_small_task": "uncracked password files", + "header_small_engine": "dictionaries, manging rules, brute force masks" + }, + "delete_modal": { + "header_task": "Delete Task", + "header_file": "Delete File", + "warning_task": "Deleting this task will remove all cracked hashes along with the audit log. Are you sure you want to do this?

You may take the following actions before deleting:", + "warning_file": "Deleting this file will cause tasks that rely on it to fail next time they attempt to run. Are you sure you want to do this?", + "success_file": "Successfully deleted file", + "success_task": "Successfully deleted task" + }, + "edit_modal": { + "modify_task_status": "Change Status", + "modify_task_status_warn": "This allows you to override the tasks status. Only do this if you know what you're doing." + }, + "hashcat": { + "attack_mode": "Attack Mode", + "hash_type": "Hash Type", + "mangling_rules": "Mangling Rule(s)", + "bruteforce_masks": "Bruteforce Mask(s)" + }, + "dashboard": { + "connected_workers": "Active Workers", + "running_tasks": "Running Tasks", + "devices": "Free / Total Devices" + }, + "graph": { + "password_lengths": "Length of Password", + "num_cracked_passwords": "Number of Cracked Passwords" + }, + "file_info": { + "task_file": "Task File", + "dictionary_file": "Dictionary File" + } +} \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js new file mode 100644 index 0000000..7a4a374 --- /dev/null +++ b/src/i18n/index.js @@ -0,0 +1,23 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' + +/* Languages */ +import en from './en-US.json' + +Vue.use(VueI18n) + +const languages = { + default: 'en-US', + options: { + 'en-US': en + } +} + +export function createI18n ({defaultLocale = languages.default}) { + return new VueI18n({ + locale: defaultLocale, + messages: languages.options + }) +} + +export const langs = languages diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..c79c81c --- /dev/null +++ b/src/main.js @@ -0,0 +1,83 @@ +import Vue from 'vue' +import App from './App' +import router from '@/router' +import store from '@/store' +import storeMutations from '@/store/mutations' +import { createI18n } from './i18n' + +import { ServerTable, ClientTable } from 'vue-tables-2' +import { sync } from 'vuex-router-sync' +import axios from 'axios' +import Vuelidate from 'vuelidate' +import BootstrapVue from 'bootstrap-vue' +import VuePlugin from '@/api' + +import 'jquery/dist/jquery.slim.min.js' +import 'popper.js/dist/umd/popper.min.js' +import 'bootstrap/dist/js/bootstrap.min.js' + +import 'bootstrap/dist/css/bootstrap.css' +import 'bootstrap-vue/dist/bootstrap-vue.css' +import 'vue-multiselect/dist/vue-multiselect.min.css' + +// Font Awesome Config +import 'font-awesome/scss/font-awesome.scss' +import '../config/font-awesome.config.js' + +Vue.config.productionTip = false +window.axios = axios + +Vue.use(Vuelidate) +Vue.use(ClientTable) +Vue.use(ServerTable, {}, false) +Vue.use(BootstrapVue) + +// Sync vue's router with the state backend +sync(store, router) + +const i18n = createI18n({defaultLocale: store.getters.getCurrentLanguage}) + +// install some interceptors into axios +function installInterceptors () { + axios.interceptors.response.use((response) => { + return response + }, error => { + if (error.response) { + var response = error.response + // If we recieve a response that indicates our token has expired, force the user to relog + if (response.status === 401 && (response.data.hasOwnProperty('expired') && response.data.expired)) { + console.log('intercepted an expired token. forcing state change') + store.dispatch(storeMutations.LOGOUT) + } + } + return Promise.reject(error.response) + }) + + console.log('interceptors installed') +} + +installInterceptors() + +axios.get('/gocrack-config.json').then(response => { + let config = response.data + if (config.server === undefined) { + router.push({name: 'System Error'}) + return + } + Vue.use(VuePlugin, config) +}).then(() => { + store.dispatch('initializeAuthFromStorage').then(success => { + console.log('successfully re-initialized auth store') + // asynchronously request permissions to browser notifications + store.dispatch(storeMutations.NOTIFY_REQUESTED) + /* eslint-disable no-new */ + new Vue({ + el: '#app', + router, + i18n, + store, + template: '', + components: { App } + }) + }) +}) diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..b66ec76 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,195 @@ +import Vue from 'vue' +import Router from 'vue-router' +import store from '@/store' + +import Dashboard from '@/views/Dashboard' +import Login from '@/views/Login' +import ListTasks from '@/views/ListTask' +import CreateTask from '@/views/CreateTask' +import TaskStatus from '@/views/TaskStatus' +import ErrorUnauthorized from '@/views/ErrorUnauthorized' +import ErrorServer from '@/views/ErrorServer' +import ListFiles from '@/views/ListFiles' +import UserListing from '@/views/UserListing' +import ModifyUser from '@/views/ModifyUser' +import RegisterUser from '@/views/RegisterUser' + +Vue.use(Router) + +const routes = [ + { + path: '/login', + name: 'Login', + component: Login, + meta: { + title: 'Login' + } + }, + { + path: '/', + name: 'Dashboard', + component: Dashboard, + meta: { + protectedWithLogin: true, + title: 'Dashboard' + } + }, + { + path: '/tasks', + name: 'Tasks', + component: ListTasks, + meta: { + title: 'List Tasks', + protectedWithLogin: true + } + }, + { + path: '/tasks/create', + name: 'Create Task', + component: CreateTask, + meta: { + title: 'Create Task', + protectedWithLogin: true + } + }, + { + path: '/tasks/details/:id', + name: 'Task Details', + component: TaskStatus, + meta: { + title: 'Task Details', + protectedWithLogin: true + } + }, + { + path: '/unauthorized', + name: 'Unauthorized', + component: ErrorUnauthorized, + meta: { + title: 'Unauthorized', + protectedWithLogin: false + } + }, + { + path: '/servererror', + name: 'System Error', + component: ErrorServer, + meta: { + title: 'Error', + protectedWithLogin: false + } + }, + { + path: '/files/engine', + name: 'Engine Files', + component: ListFiles, + meta: { + title: 'Engine Files', + protectedWithLogin: true, + key: 0 + }, + props: { + isTaskFile: false + } + }, + { + path: '/files/task', + name: 'Task Files', + component: ListFiles, + meta: { + title: 'Task Files', + protectedWithLogin: true, + key: 1 + }, + props: { + isTaskFile: true + } + }, + { + path: '/users', + name: 'User Listing', + component: UserListing, + meta: { + title: 'Users', + protectedWithLogin: true, + requireAdminToken: true + } + }, + { + path: '/users/edit', + name: 'Edit Current User', + component: ModifyUser, + meta: { + title: 'Modify User', + protectedWithLogin: true, + requireAdminToken: false + } + }, + { + path: '/users/:id', + name: 'Edit User', + component: ModifyUser, + meta: { + title: 'Modify User', + protectedWithLogin: true, + requireAdminToken: false + } + }, + { + path: '/register', + name: 'Registration', + component: RegisterUser, + meta: { + title: 'Register', + preventIfLoggedIn: true + } + } +] + +const router = new Router({ + linkActiveClass: 'nav-item active', + mode: 'history', + routes: routes +}) + +router.beforeEach((to, from, next) => { + // Ensure the user is logged in if we're on a protected route + if (to.matched.some(record => record.meta.protectedWithLogin)) { + let user = store.state.auth + if (!user.authenticated) { + next({ + path: '/login', + query: { redirect: to.fullPath } + }) + return + } + } + + // Prevent the user to certain routes if meta contains preventIfLoggedIn and set to true + if (to.matched.some(record => record.meta.preventIfLoggedIn)) { + let user = store.state.auth + if (user.authenticated) { + next({path: '/'}) + return + } + } + + // If the route requires an admin token... + if (to.matched.some(record => record.meta.requireAdminToken)) { + let user = store.state.auth + if (!user.is_admin) { + next({path: '/unauthorized'}) + return + } + } + + if (to.meta.title) { + document.title = `GoCrack - ${to.meta.title}` + } else { + document.title = `GoCrack` + } + + next() +}) + +export default router diff --git a/src/store/helpers.js b/src/store/helpers.js new file mode 100644 index 0000000..835a2d6 --- /dev/null +++ b/src/store/helpers.js @@ -0,0 +1,19 @@ +import { ADD_TOAST_MESSAGE } from '@/toast' + +export default { + handleAPIError (error, dispatch) { + if (error.response) { + dispatch(ADD_TOAST_MESSAGE, { + text: `${error.response.data.error}`, + type: 'danger', + dismissAfter: 4000 + }) + } else { + dispatch(ADD_TOAST_MESSAGE, { + text: `An unknown error occurred: ${error.message}`, + type: 'danger', + dismissAfter: 4000 + }) + } + } +} diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..06a48c7 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,49 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +import { createModule } from '@/toast' +import authmod from '@/store/modules/authentication' +import workersmod from '@/store/modules/workers' +import realtimemod from '@/store/modules/realtime' +import browsernotify from '@/store/modules/browser_notify' +import usersettings from '@/store/modules/user_local_settings' + +Vue.use(Vuex) + +const debug = process.env.NODE_ENV !== 'production' + +const store = new Vuex.Store({ + modules: { + toast: createModule({ + dismissInterval: 8000 + }), + auth: authmod, + realtime: realtimemod, + workers: workersmod, + browsernotify: browsernotify, + usersettings: usersettings + }, + strict: debug +}) + +if (module.hot) { + module.hot.accept([ + './modules/authentication', + './modules/realtime', + './modules/workers', + './modules/browser_notify', + './modules/user_local_settings' + ], () => { + store.hotUpdate({ + modules: { + auth: require('./modules/authentication'), + realtime: require('./modules/realtime'), + workers: require('./modules/workers'), + browsernotify: require('./modules/browser_notify'), + usersettings: require('./modules/user_local_settings') + } + }) + }) +} + +export default store diff --git a/src/store/modules/authentication.js b/src/store/modules/authentication.js new file mode 100644 index 0000000..34d53c8 --- /dev/null +++ b/src/store/modules/authentication.js @@ -0,0 +1,124 @@ +import { ADD_TOAST_MESSAGE } from '@/toast' +import muts from '@/store/mutations' +import router from '@/router' + +import jwtdecode from 'jwt-decode' + +// initial state +const state = { + username: '', + user_uuid: '', + authenticated: false, + is_admin: false, + pending: false, + token: '' +} + +const getters = { + isAuthPending: state => state.pending, + userIsLoggedIn: state => state.authenticated, + isAdministrator: state => state.is_admin, + getAuthDetails: state => state, + getCurrentAuthToken: state => state.token +} + +const actions = { + // performLogin takes the credentials from the view, passes it to the API, and + // fires the correct mutator based on the validity of the login + [muts.LOGIN_SUCCESS] ({ commit, rootState, dispatch }, response) { + let { token } = response + + try { + let decodedToken = jwtdecode(token) + commit(muts.LOGIN_SUCCESS, { token, ...decodedToken }) + dispatch(muts.REALTIME_CONNECTING) + if (rootState.route.query.redirect) { + router.push(rootState.route.query.redirect) + } else { + router.push('/') + } + } catch (err) { + dispatch(ADD_TOAST_MESSAGE, { + text: 'Login failed: Invalid JWT from Server', + type: 'danger', + dismissAfter: 4000 + }) + + console.log('An error occurred while validating the JWT: ', err) + commit(muts.LOGIN_FAILED) + } + }, + + // destroy's the state for the authentication + [muts.LOGOUT] ({ commit, dispatch }) { + commit(muts.LOGOUT) + dispatch(muts.REALTIME_LOGOUT) + router.push('/login') + + dispatch(ADD_TOAST_MESSAGE, { + text: 'Logout successful', + type: 'info', + dismissAfter: 4000 + }) + }, + + // initializeAuthFromStorage should be called from the application's + // entrypoint and (re)initializes the authentication state if it's valid + initializeAuthFromStorage ({ commit, dispatch }) { + var token = localStorage.getItem('auth_token') + if (token === null || token === '') { + commit(muts.LOGOUT) + return + } + + var nowSeconds = Math.round(new Date().getTime() / 1000) + try { + var resp = jwtdecode(token) + if (resp.exp <= nowSeconds) { + console.log('token has expired') + commit(muts.LOGOUT) + } else { + console.log('Reloaded user state from local storage') + commit(muts.LOGIN_SUCCESS, { ...resp, token }) + dispatch(muts.REALTIME_CONNECTING) + } + } catch (err) { + console.log(err) + } + } +} + +const mutations = { + [muts.LOGIN_PENDING] (state) { + state.pending = true + }, + + [muts.LOGIN_SUCCESS] (state, payload) { + localStorage.setItem('auth_token', payload.token) + state.username = payload.username + state.user_uuid = payload.user_uuid + state.is_admin = payload.is_admin + state.pending = false + state.authenticated = true + state.token = payload.token + }, + + [muts.LOGIN_FAILED] (state) { + state.pending = false + }, + + [muts.LOGOUT] (state) { + state.is_admin = false + state.authenticated = false + state.username = '' + state.user_uuid = '' + localStorage.removeItem('auth_token') + } +} + +export default { + state, + getters, + actions, + mutations +} diff --git a/src/store/modules/browser_notify.js b/src/store/modules/browser_notify.js new file mode 100644 index 0000000..62be472 --- /dev/null +++ b/src/store/modules/browser_notify.js @@ -0,0 +1,61 @@ +import muts from '@/store/mutations' + +// initial state +const state = () => { + let supported = ('Notification' in window) + if (!supported) { + return { + has_support: false, + granted: false + } + } + + return { + has_support: supported, + granted: Notification.permission === 'granted', + sentCrackedNotifications: {} + } +} + +const getters = { + areNotificationsEnabled: state => state.granted, + areNotificationsSupported: state => state.has_support +} + +const actions = { + [muts.NOTIFY_SEND] ({ commit, rootState, dispatch }, payload) { + new Notification( // eslint-disable-line no-new + payload.title || 'GoCrack Notification', + { + body: payload.body + } + ) + }, + + [muts.NOTIFY_REQUESTED] ({state, commit}) { + if (state.granted) { + return + } + + Notification.requestPermission(function (permission) { + if (permission === 'granted') { + commit(muts.NOTIFY_GRANTED, {granted: true}) + } else { + commit(muts.NOTIFY_GRANTED, {granted: false}) + } + }) + } +} + +const mutations = { + [muts.NOTIFY_GRANTED] (state, { granted }) { + state.granted = granted + } +} + +export default { + state, + getters, + actions, + mutations +} diff --git a/src/store/modules/realtime.js b/src/store/modules/realtime.js new file mode 100644 index 0000000..4c4e2da --- /dev/null +++ b/src/store/modules/realtime.js @@ -0,0 +1,136 @@ +import Vue from 'vue' + +import config from '@/api/config' +import muts from '@/store/mutations' + +const state = () => { + return { + es: null, + connecting: false, + connected: false, + taskEngineStatus: {}, // stores realtime information about a task engine + taskStatuses: {} // stores the task statuses + } +} + +const getters = { + // getTaskEngineStatusById returns the current engine status + // if we're recieving realtime messages for this task. + getTaskEngineStatusById: (state) => (id) => { + if (state.taskEngineStatus.hasOwnProperty(id)) { + return state.taskEngineStatus[id] + } + return {running: false, status: {}} + }, + + // getTaskStatusByID returns the current task status ("running", "stopped", etc) + // if we're recieving realtime messages for this task. Otherwise we return `defaultStatus` + getTaskStatusByID: (state) => (id, defaultStatus = 'Unknown') => { + if (state.taskStatuses.hasOwnProperty(id)) { + return state.taskStatuses[id] + } + return defaultStatus + } +} + +const actions = { + [muts.REALTIME_CONNECTING] ({ commit, state, rootState, dispatch }) { + commit(muts.REALTIME_CONNECTING) + + let { server, base_endpoint } = config.get + var es = new EventSource(`${server}${base_endpoint}/realtime/`, { withCredentials: true }) /* eslint camelcase: "off" */ + + es.addEventListener('open', function () { + commit(muts.REALTIME_CONNECTED, { es }) + }) + + es.addEventListener('message', function (event) { + dispatch(muts.REALTIME_RECV_MSG, JSON.parse(event.data)) + }) + + es.addEventListener('error', () => { + commit(muts.REALTIME_DISCONNECTED) + }) + }, + + [muts.REALTIME_RECV_MSG] ({ commit, rootState, dispatch }, payload) { + var { message, topic } = payload + if (process.env.NODE_ENV !== 'production') { + console.log(`REALTIME_RECV_MSG for topic ${topic}`, message) + } + + switch (topic) { + case 'cracked_password': + // XXX(cschmitt): Browser notifications + break + case 'task_status': + switch (message.status.toLowerCase()) { + case 'queued': + case 'dequeued': + break + default: + dispatch(muts.NOTIFY_SEND, { title: 'Task Status Change', body: `${message.status} for ${message.task_id}` }) + break + } + commit(muts.REALTIME_TASK_STATUS, { message }) + break + case 'task_engine_status': + commit(muts.REALTIME_TASK_ENGINE_STATUS, { statusMessage: message, final: false }) + break + case 'task_status_final': + commit(muts.REALTIME_TASK_ENGINE_STATUS, { statusMessage: message, final: true }) + break + } + }, + + [muts.REALTIME_LOGOUT] ({ commit }) { + commit(muts.REALTIME_LOGOUT) + } +} + +const mutations = { + [muts.REALTIME_TASK_STATUS] (state, { message }) { + Vue.set(state.taskStatuses, message.task_id, message.status) + }, + + [muts.REALTIME_TASK_ENGINE_STATUS] (state, { statusMessage, final }) { + // Have to use Vue.set to trigger the update in the reactivity system + Vue.set(state.taskEngineStatus, statusMessage.task_id, { + status: statusMessage.status, + updated: new Date(), + running: !final, + stopped: final + }) + }, + + [muts.REALTIME_LOGOUT] (state) { + if (state.es !== null) { + state.es.close() + } + state.connected = false + state.es = null + }, + + [muts.REALTIME_DISCONNECTED] (state) { + state.connected = false + state.es = null + }, + + [muts.REALTIME_CONNECTING] (state) { + state.connecting = true + state.connected = false + }, + + [muts.REALTIME_CONNECTED] (state, { es }) { + state.es = es + state.connecting = false + state.connected = true + } +} + +export default { + state, + getters, + actions, + mutations +} diff --git a/src/store/modules/user_local_settings.js b/src/store/modules/user_local_settings.js new file mode 100644 index 0000000..91f68e8 --- /dev/null +++ b/src/store/modules/user_local_settings.js @@ -0,0 +1,35 @@ +import { langs } from '@/i18n' +import muts from '@/store/mutations' + +const state = () => { + return { + language: localStorage.getItem('i18_lang') || langs.default + } +} + +const getters = { + getAvailableLanguages () { + return Object.keys(langs.options) + }, + getCurrentLanguage: state => state.language +} + +const actions = { + [muts.SET_LANGUAGE] ({ commit, rootState, dispatch }, props) { + commit(muts.SET_LANGUAGE, {language: props.language}) + } +} + +const mutations = { + [muts.SET_LANGUAGE] (state, { language }) { + localStorage.setItem('i18_lang', language) + state.language = language + } +} + +export default { + state, + getters, + actions, + mutations +} diff --git a/src/store/modules/workers.js b/src/store/modules/workers.js new file mode 100644 index 0000000..e11170a --- /dev/null +++ b/src/store/modules/workers.js @@ -0,0 +1,50 @@ +import muts from '@/store/mutations' + +// initial state +const state = { + hosts: [], + loading: false, + refreshing: false +} + +const getters = { + getHosts: state => state.hosts, + isWorkersLoading: state => state.loading +} + +const mutations = { + [muts.WORKER_STATUS_GET] (state) { + state.loading = true + }, + + [muts.WORKER_STATUS_REFRESHING] (state) { + state.loading = false + state.refreshing = true + }, + + [muts.WORKER_STATUS_RETRIEVED] (state, workers) { + for (let i in workers) { + let connectedHost = workers[i] + connectedHost.devices = connectedHost.devices.map((dev) => { + dev.hostname = connectedHost.hostname + dev.displayname = `${dev.name} (ID: ${dev.id})` + return dev + }) + } + + state.loading = false + state.refreshing = false + state.hosts = workers + }, + + [muts.WORKER_STATUS_FAILED] (state) { + state.loading = false + state.refreshing = false + } +} + +export default { + state, + getters, + mutations +} diff --git a/src/store/mutations.js b/src/store/mutations.js new file mode 100644 index 0000000..36f1adc --- /dev/null +++ b/src/store/mutations.js @@ -0,0 +1,38 @@ +export default { + // Auth + LOGIN_PENDING: 'LOGIN_PENDING', + LOGIN_SUCCESS: 'LOGIN_SUCCESS', + LOGIN_FAILED: 'LOGIN_FAILED', + LOGOUT: 'LOGOUT', + + // Realtime + REALTIME_CONNECTING: 'REALTIME_CONNECTING', + REALTIME_CONNECTED: 'REALTIME_CONNECTED', + REALTIME_DISCONNECTED: 'REALTIME_DISCONNECTED', + REALTIME_LOGOUT: 'REALTIME_LOGOUT', + REALTIME_RECV_MSG: 'REALTIME_RECV_MSG', + REALTIME_TASK_STATUS: 'REALTIME_TASK_STATUS', + REALTIME_TASK_ENGINE_STATUS: 'REALTIME_TASK_ENGINE_STATUS', + REALTIME_CRACKED_PASSWORDS: 'REALTIME_CRACKED_PASSWORD', + + // Worker Status + WORKER_STATUS_GET: 'WORKER_STATUS_GET', + WORKER_STATUS_REFRESHING: 'WORKER_STATUS_REFRESHING', + WORKER_STATUS_RETRIEVED: 'WORKER_STATUS_RETRIEVED', + WORKER_STATUS_FAILED: 'WORKER_STATUS_FAILED', + + // Task Related + TASKS: 'TASKS', + TASKS_RETRIEVED: 'TASKS_RETRIEVED', + TASKS_FAILED: 'TASKS_FAILED', + + HASH_TYPES: 'HASH_TYPES', + HASH_TYPES_RETRIEVED: 'HASH_TYPES_RETRIEVED', + HASH_TYPES_FAILED: 'HASH_TYPES_FAILED', + + NOTIFY_REQUESTED: 'NOTIFY_REQUESTED', + NOTIFY_GRANTED: 'NOTIFY_GRANTED', + NOTIFY_SEND: 'NOTIFY_SEND', + + SET_LANGUAGE: 'SET_LANGUAGE' +} diff --git a/src/toast/README.md b/src/toast/README.md new file mode 100644 index 0000000..da66218 --- /dev/null +++ b/src/toast/README.md @@ -0,0 +1,3 @@ +# toast + +Based on [vuex-toast](https://github.com/ktsn/vuex-toast/), this supports Bootstrap 4 \ No newline at end of file diff --git a/src/toast/Toast.vue b/src/toast/Toast.vue new file mode 100644 index 0000000..4a9a50f --- /dev/null +++ b/src/toast/Toast.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/toast/config.js b/src/toast/config.js new file mode 100644 index 0000000..14c4430 --- /dev/null +++ b/src/toast/config.js @@ -0,0 +1,9 @@ +export const DefaultTransition = { + functional: true, + render (h, { children }) { + const data = { + attrs: { tag: 'div', name: 'toast', type: 'transition' } + } + return h('transition-group', data, children) + } +} diff --git a/src/toast/index.js b/src/toast/index.js new file mode 100644 index 0000000..935f714 --- /dev/null +++ b/src/toast/index.js @@ -0,0 +1,17 @@ +import Toast from './Toast.vue' +import { update } from './utils' + +export function createComponent (options = {}) { + const { + transition + } = options + + return update(Toast, { + components: { + toastTransition: transition + } + }) +} + +export { Toast } +export * from './module' diff --git a/src/toast/module.js b/src/toast/module.js new file mode 100644 index 0000000..0609be0 --- /dev/null +++ b/src/toast/module.js @@ -0,0 +1,63 @@ +const PREFIX = '@@toast/' + +const ADD = `${PREFIX}ADD_TOAST_MESSAGE` +const REMOVE = `${PREFIX}REMOVE_TOAST_MESSAGE` + +export { + ADD as ADD_TOAST_MESSAGE, + REMOVE as REMOVE_TOAST_MESSAGE +} + +function createMessage (id, text, type, dismissAfter) { + return { + id, + text, + type, + dismissAfter + } +} + +export function createModule (options = {}) { + const { + dismissInterval = 5000 + } = options + + let maxToastId = 0 + + const state = { + messages: [] + } + + const getters = { + toastMessages: (state) => state.messages + } + + const actions = { + [ADD] ({ commit }, { text, type = 'info', dismissAfter = dismissInterval }) { + const id = ++maxToastId + commit(ADD, createMessage(id, text, type, dismissAfter)) + setTimeout(() => commit(REMOVE, id), dismissAfter) + }, + + [REMOVE] ({ commit }, id) { + commit(REMOVE, id) + } + } + + const mutations = { + [ADD] (state, data) { + state.messages.push(data) + }, + + [REMOVE] (state, id) { + state.messages = state.messages.filter(m => m.id !== id) + } + } + + return { + state, + getters, + actions, + mutations + } +} diff --git a/src/toast/utils.js b/src/toast/utils.js new file mode 100644 index 0000000..ac76559 --- /dev/null +++ b/src/toast/utils.js @@ -0,0 +1,12 @@ +// @flow + +/** + * Simple update without mutation + */ +export function update (obj, updater) { + const res = {} + Object.keys(obj).forEach(key => { + res[key] = updater[key] === undefined ? obj[key] : updater[key] + }) + return res +} diff --git a/src/validators/device_selection.js b/src/validators/device_selection.js new file mode 100644 index 0000000..2b8fbce --- /dev/null +++ b/src/validators/device_selection.js @@ -0,0 +1,30 @@ +export function isDeviceTypeSelectionValid (selectedOptions) { + // if length is 1 or less, it's obviously not going to contain mixed devices + if (selectedOptions.length <= 1) { + return true + } + + let firstDevice = selectedOptions[0] + let isValid = true + selectedOptions.forEach((elem) => { + if (elem.type !== firstDevice.type) { + isValid = false + } + }) + return isValid +} + +export function areDevicesOnSameHost (selectedOptions) { + if (selectedOptions.length <= 1) { + return true + } + + let firstDevice = selectedOptions[0] + let isValid = true + selectedOptions.forEach((elem) => { + if (elem.hostname !== firstDevice.hostname) { + isValid = false + } + }) + return isValid +} diff --git a/src/validators/index.js b/src/validators/index.js new file mode 100644 index 0000000..b2cc02b --- /dev/null +++ b/src/validators/index.js @@ -0,0 +1,6 @@ +import { isDeviceTypeSelectionValid, areDevicesOnSameHost } from './device_selection' + +export { + isDeviceTypeSelectionValid, + areDevicesOnSameHost +} diff --git a/src/views/CreateTask.vue b/src/views/CreateTask.vue new file mode 100644 index 0000000..229287c --- /dev/null +++ b/src/views/CreateTask.vue @@ -0,0 +1,593 @@ + + + + + diff --git a/src/views/Dashboard.vue b/src/views/Dashboard.vue new file mode 100644 index 0000000..9863012 --- /dev/null +++ b/src/views/Dashboard.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/views/ErrorServer.vue b/src/views/ErrorServer.vue new file mode 100644 index 0000000..7147a1e --- /dev/null +++ b/src/views/ErrorServer.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/src/views/ErrorUnauthorized.vue b/src/views/ErrorUnauthorized.vue new file mode 100644 index 0000000..5d9c731 --- /dev/null +++ b/src/views/ErrorUnauthorized.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/views/ListFiles.vue b/src/views/ListFiles.vue new file mode 100644 index 0000000..ea09680 --- /dev/null +++ b/src/views/ListFiles.vue @@ -0,0 +1,208 @@ + + + diff --git a/src/views/ListTask.vue b/src/views/ListTask.vue new file mode 100644 index 0000000..577eb6f --- /dev/null +++ b/src/views/ListTask.vue @@ -0,0 +1,98 @@ + + + diff --git a/src/views/Login.vue b/src/views/Login.vue new file mode 100644 index 0000000..49ed82a --- /dev/null +++ b/src/views/Login.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/views/ModifyUser.vue b/src/views/ModifyUser.vue new file mode 100644 index 0000000..6806798 --- /dev/null +++ b/src/views/ModifyUser.vue @@ -0,0 +1,306 @@ + + + diff --git a/src/views/RegisterUser.vue b/src/views/RegisterUser.vue new file mode 100644 index 0000000..d5ac3c8 --- /dev/null +++ b/src/views/RegisterUser.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/src/views/TaskStatus.vue b/src/views/TaskStatus.vue new file mode 100644 index 0000000..6843d88 --- /dev/null +++ b/src/views/TaskStatus.vue @@ -0,0 +1,414 @@ + + + + + diff --git a/src/views/UserListing.vue b/src/views/UserListing.vue new file mode 100644 index 0000000..ff500f0 --- /dev/null +++ b/src/views/UserListing.vue @@ -0,0 +1,44 @@ + + + diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..72f283d0c0057c3435fd704e82cc5d5f22dff12d GIT binary patch literal 161352 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%0A-w;48%Xut5wz<~fUCqABSbB_ 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

$zyc*}Z1=m2CF=2ujBu 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 INH5_30Mg3H;s5{u literal 0 HcmV?d00001