From 6949b270fc3ee6612691058fdf0f5027af091897 Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Sun, 3 Dec 2017 22:28:04 -0500 Subject: [PATCH 01/12] Debounce saving story files Setting save intervals to 10 seconds --- package.json | 1 + src/nw/patches/store/file-persistence.js | 44 +++++++++++++++++------- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index b6ced75c0..e393ff1e0 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "jsonp": "^0.2.1", "jszip": "^2.5.0", "karma-webpack": "^2.0.4", + "lodash.debounce": "^4.0.8", "lodash.escape": "^4.0.1", "lodash.uniq": "^4.5.0", "lodash.values": "^4.3.0", diff --git a/src/nw/patches/store/file-persistence.js b/src/nw/patches/store/file-persistence.js index 9ebcc831f..4610c36c9 100644 --- a/src/nw/patches/store/file-persistence.js +++ b/src/nw/patches/store/file-persistence.js @@ -1,8 +1,38 @@ const StoryFile = require('../../story-file'); +const debounce = require('lodash.debounce'); let enabled = true; let previousStories; +/* +Debounced functions to save stories to disk, so we don't thrash the filesystem +as the user types into a passage editor, for example. We need to have a +debounced function for each story, because Lodash's debounce function +doesn't pay attention to parameters to a function. +*/ + +let debouncedSavers = {}; + +function saveStoryById(store, id) { + if (!id) { + throw new Error('No id specified to save story'); + } + + if (!debouncedSavers[id]) { + debouncedSavers[id] = debounce( + (function(store) { + StoryFile.save( + store.state.story.stories.find(story => story.id === this), + store.state.appInfo + ); + }).bind(id), + { wait: 10000, leading: true, trailing: true } + ); + } + + debouncedSavers[id](store); +} + module.exports = store => { previousStories = store.state.story.stories; @@ -19,12 +49,7 @@ module.exports = store => { case 'CREATE_STORY': case 'IMPORT_STORY': - StoryFile.save( - state.story.stories.find( - story => story.name === mutation.payload[0].name - ), - state.appInfo - ); + saveStoryById(store, mutation.payload[0].id); break; case 'DELETE_STORY': @@ -58,12 +83,7 @@ module.exports = store => { /* Save changes as normal. */ - StoryFile.save( - state.story.stories.find( - story => story.id === mutation.payload[0] - ), - state.appInfo - ); + saveStoryById(store, mutation.payload[0]); break; } From c0e6228d3ae38bb871a236d2d079aae3c7a22a31 Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Sun, 3 Dec 2017 23:37:10 -0500 Subject: [PATCH 02/12] Save all stories before quitting, just in case --- src/nw/index.js | 1 + src/nw/story-file.js | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/nw/index.js b/src/nw/index.js index c41d32cfd..cf6eece69 100644 --- a/src/nw/index.js +++ b/src/nw/index.js @@ -163,6 +163,7 @@ module.exports = { startupTask = 'setting up shutdown tasks'; gui.Window.get().on('close', function() { + storyFile.saveAll(); directories.unlockStories(); this.close(true); }); diff --git a/src/nw/story-file.js b/src/nw/story-file.js index 8813c10c2..ae32358aa 100644 --- a/src/nw/story-file.js +++ b/src/nw/story-file.js @@ -142,5 +142,22 @@ const StoryFile = module.exports = { directories.unlockStories(); StoryFile.active = true; } + }, + + /* + Saves everything in local storage to the filesystem. This is run when the + application quits, to make sure all pending changes are saved. + */ + + saveAll: function() { + if (!StoryFile.active) { + return; + } + + const store = require('../data/store'); + + store.state.story.stories.forEach(story => { + StoryFile.save(story, store.state.appInfo); + }); } }; From 81062e4e900ffe2e9a3b5586a6763427e90ef85a Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Mon, 4 Dec 2017 21:14:15 -0500 Subject: [PATCH 03/12] Clean up redundant dependencies --- package-lock.json | 17672 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 5 - 2 files changed, 17672 insertions(+), 5 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..47541a6fc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17672 @@ +{ + "name": "Twine", + "version": "2.2.0-beta1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/node": { + "version": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha1-9hjxGpRPahjZK1xHIChyij49S2Y=", + "dev": true + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "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 + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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" + } + }, + "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 + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "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.2" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "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 + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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 + } + } + }, + "babel-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "dev": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + } + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "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.26.0", + "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-regenerator": "6.26.0" + }, + "dependencies": { + "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 + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-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.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "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.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-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.26.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.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "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.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.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.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-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.26.0", + "babel-types": "6.26.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.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-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.26.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.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.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.26.0", + "babel-template": "6.26.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.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-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.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-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.26.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.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "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" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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 + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "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.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "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.3", + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + } + } + }, + "base64-font-loader": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/base64-font-loader/-/base64-font-loader-0.0.4.tgz", + "integrity": "sha1-NE7W1+PElpQzZB9nuw2vVJMguCQ=", + "dev": true, + "requires": { + "loader-utils": "0.2.17" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "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 + } + } + }, + "blob-polyfill": { + "version": "1.0.20150320", + "resolved": "https://registry.npmjs.org/blob-polyfill/-/blob-polyfill-1.0.20150320.tgz", + "integrity": "sha1-A2kt1oIFae8lqHYy+mGclR1XSNo=" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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 + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "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 + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "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.17" + } + } + } + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "browser-saveas": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-saveas/-/browser-saveas-1.0.1.tgz", + "integrity": "sha1-H5HL9aaFpvpCS/jgG6f6mCXjtek=" + }, + "build": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz", + "integrity": "sha1-cH/gJv/O3crL/c3zVur9pk8VEEY=", + "dev": true, + "requires": { + "cssmin": "0.3.2", + "jsmin": "1.0.1", + "jxLoader": "0.1.1", + "moo-server": "1.3.0", + "promised-io": "0.3.5", + "timespan": "2.3.0", + "uglify-js": "1.3.5", + "walker": "1.0.7", + "winston": "2.4.0", + "wrench": "1.3.9" + }, + "dependencies": { + "uglify-js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz", + "integrity": "sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0=", + "dev": true + } + } + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "deep-eql": "0.1.3", + "type-detect": "1.0.0" + }, + "dependencies": { + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + } + } + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.4", + "parse5": "3.0.3" + }, + "dependencies": { + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "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" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "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" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz" + } + } + } + }, + "chmodr": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chmodr/-/chmodr-1.0.2.tgz", + "integrity": "sha1-BGYrky0PAuxm3qorDqQoEZaOPrk=", + "dev": true + }, + "codemirror": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.32.0.tgz", + "integrity": "sha512-95OxAlYiigW0g4n4ixFdavG07clJGILp3MvHh2pKR3FvyrTuHHvqtKSVbrV3/Jz6o0YqGvyCDLDTbH4h6ciaSw==" + }, + "copy-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-cL/Wl3Y1QmmKThl/mWeGB+HH3YH+25tn8nhqEGsZda4Yn7GqGnDZ+TbeKJ7A6zvrxyNhhuviYAxn/tCyyAqh8Q==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "glob": "7.1.2", + "is-glob": "4.0.0", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "minimatch": "3.0.4" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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 + }, + "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" + } + }, + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "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 + }, + "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" + } + }, + "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 + } + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "css-loader": { + "version": "0.28.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", + "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.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.18", + "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": "2.0.0" + }, + "dependencies": { + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "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 + }, + "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" + } + }, + "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.30000778", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "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 + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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.30000778", + "electron-to-chromium": "1.3.27" + } + }, + "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.30000778", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30000778", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000778.tgz", + "integrity": "sha1-Fnxg6VQqKqYFN8RG+ziB2FOjByo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "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.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "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.3" + } + }, + "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 + }, + "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-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" + } + }, + "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.18", + "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.3", + "source-map": "0.5.7" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", + "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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 + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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.1" + } + }, + "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 + }, + "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 + }, + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "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-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-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" + } + }, + "js-base64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.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" + } + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "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.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 + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "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 + }, + "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" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "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" + } + } + } + }, + "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.18", + "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.18", + "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.18", + "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.18" + } + }, + "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.18" + } + }, + "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.18" + } + }, + "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.18" + } + }, + "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.18", + "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.18", + "uniqid": "4.1.1" + } + }, + "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.18", + "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.18" + } + }, + "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.18", + "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.18", + "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.18", + "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.18", + "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.18", + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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.18" + } + }, + "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.18", + "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.18", + "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.18", + "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.18" + } + }, + "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.18", + "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.18", + "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.18", + "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.18", + "uniqs": "2.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "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" + } + }, + "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" + } + }, + "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" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "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.3", + "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" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "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 + }, + "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" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "svgo": { + "version": "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.4", + "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" + } + }, + "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 + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "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 + } + } + }, + "cssmin": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz", + "integrity": "sha1-3c5MVHtRCuDVlKjx+/iq+OLFwA0=", + "dev": true + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz", + "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==", + "dev": true + }, + "ejs": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", + "dev": true + }, + "ejs-loader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ejs-loader/-/ejs-loader-0.3.0.tgz", + "integrity": "sha1-aHNv3CMaSQ7fkZpkRq2dkFWlh74=", + "dev": true, + "requires": { + "loader-utils": "0.2.17", + "lodash": "3.10.1" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "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 + } + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + }, + "dependencies": { + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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.1" + } + } + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "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.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.9", + "doctrine": "2.0.2", + "escope": "3.6.0", + "espree": "3.5.2", + "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.7", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.1", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.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": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "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 + } + } + }, + "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 + }, + "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-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 + }, + "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" + } + }, + "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 + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "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 + }, + "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" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "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-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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 + }, + "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.3", + "typedarray": "0.0.6" + } + }, + "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 + }, + "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.37" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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 + }, + "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.2" + } + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "es5-ext": { + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "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.37", + "es6-iterator": "2.0.3", + "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.37", + "es6-iterator": "2.0.3", + "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.37" + } + }, + "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.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "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" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.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" + } + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "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.37" + } + }, + "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 + }, + "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 + }, + "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.3.0", + "object-assign": "4.1.1" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "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" + } + }, + "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" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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.2.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.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "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.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-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" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "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 + }, + "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 + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "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 + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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" + } + }, + "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.5.0" + } + }, + "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" + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "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 + }, + "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" + } + }, + "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 + }, + "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.1.0", + "rechoir": "0.6.2" + } + }, + "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 + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "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" + } + }, + "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-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 + }, + "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 + }, + "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.1" + }, + "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.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "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" + } + } + } + }, + "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 + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": 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" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "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-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "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=", + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.4" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "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=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "5.5.1" + } + }, + "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==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + } + } + } + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fastclick": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz", + "integrity": "sha1-FhYlsnsaWAZAWTa9qaLBkm0Gvmo=" + }, + "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": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "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" + } + }, + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.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" + } + }, + "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 + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "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 + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, + "html-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz", + "integrity": "sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA==", + "dev": true, + "requires": { + "es6-templates": "0.2.3", + "fastparse": "1.1.1", + "html-minifier": "3.5.7", + "loader-utils": "1.1.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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.2", + "upper-case": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "dev": true, + "requires": { + "recast": "0.11.23", + "through": "2.3.8" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "html-minifier": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", + "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.2.1" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "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" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "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 + }, + "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.2" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "uglify-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.1.tgz", + "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==", + "dev": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "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 + } + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.7", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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 + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "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.2", + "upper-case": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "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 + }, + "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" + } + }, + "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 + }, + "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 + } + } + }, + "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.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.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" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "html-minifier": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", + "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.2.1" + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + } + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "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 + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "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" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "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" + } + }, + "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 + }, + "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.2" + } + }, + "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" + } + }, + "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" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "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 + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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 + }, + "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" + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "dev": true + }, + "uglify-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.1.tgz", + "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==", + "dev": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "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 + } + } + }, + "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.3" + }, + "dependencies": { + "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 + }, + "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 + } + } + }, + "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" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "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 + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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" + } + }, + "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 + }, + "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" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + } + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + }, + "dependencies": { + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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.1" + } + } + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "jed": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=" + }, + "jsdom": { + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", + "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "5.2.1", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.0", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "3.0.3", + "pn": "1.0.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.3.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true, + "requires": { + "acorn": "5.2.1" + } + }, + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "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 + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "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" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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" + } + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "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 + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "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 + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "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" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.1", + "har-schema": "2.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "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 + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": 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-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 + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "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" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "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" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", + "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" + } + }, + "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 + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + }, + "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" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "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" + } + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz", + "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + } + } + }, + "jsdom-global": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", + "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", + "dev": true + }, + "jsmin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", + "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "jsonp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", + "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=", + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "jszip": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", + "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "requires": { + "pako": "1.0.6" + }, + "dependencies": { + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + } + } + }, + "jxLoader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz", + "integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=", + "dev": true, + "requires": { + "js-yaml": "0.3.7", + "moo-server": "1.3.0", + "promised-io": "0.3.5", + "walker": "1.0.7" + }, + "dependencies": { + "js-yaml": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", + "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=", + "dev": true + } + } + }, + "karma-webpack": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.6.tgz", + "integrity": "sha512-dcKvtiW00caWrceCKwIvlKwHQu8zI+e3zWZYDLk7kr7nl1lYSp8uP+8fQoBvRCnZiPUGuwU5Psm20NbEIn7KlA==", + "dev": true, + "requires": { + "async": "0.9.2", + "loader-utils": "0.2.17", + "lodash": "3.10.1", + "source-map": "0.5.7", + "webpack-dev-middleware": "1.12.2" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "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.3" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "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 + }, + "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 + }, + "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 + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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" + } + }, + "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 + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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" + } + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "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 + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } + } + } + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, + "less": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "dev": true, + "requires": { + "errno": "0.1.4", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.81.0", + "source-map": "0.5.7" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true + }, + "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, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": 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" + } + }, + "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" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": 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" + } + }, + "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, + "optional": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": 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, + "optional": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "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" + } + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "optional": true, + "requires": { + "prr": "0.0.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": 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, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": 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, + "optional": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "optional": true + }, + "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, + "optional": 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, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "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", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "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, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": 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, + "optional": 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, + "optional": 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, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "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, + "optional": true + }, + "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, + "optional": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "2.0.6" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": 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, + "optional": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "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.17", + "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.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "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 + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "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", + "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, + "optional": true + } + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": 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 + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true, + "optional": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + } + } + }, + "less-loader": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz", + "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=", + "dev": true, + "requires": { + "clone": "2.1.1", + "loader-utils": "1.1.0", + "pify": "2.3.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "less-plugin-autoprefix": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/less-plugin-autoprefix/-/less-plugin-autoprefix-1.5.1.tgz", + "integrity": "sha1-vKTlsuSMrGlloXgxQuOzLDwAzgc=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "postcss": "5.2.18" + }, + "dependencies": { + "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 + }, + "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.30000778", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "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.30000778", + "electron-to-chromium": "1.3.27" + } + }, + "caniuse-db": { + "version": "1.0.30000778", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000778.tgz", + "integrity": "sha1-Fnxg6VQqKqYFN8RG+ziB2FOjByo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "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 + } + } + }, + "electron-to-chromium": { + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", + "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", + "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 + }, + "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 + }, + "js-base64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", + "dev": true + }, + "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 + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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 + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + }, + "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" + } + } + } + }, + "less-plugin-clean-css": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz", + "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=", + "dev": true, + "requires": { + "clean-css": "3.4.28" + }, + "dependencies": { + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "dev": true, + "requires": { + "commander": "2.8.1", + "source-map": "0.4.4" + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "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 + }, + "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" + } + } + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=" + }, + "lodash.without": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", + "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=" + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.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" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "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" + } + }, + "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 + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "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 + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "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-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "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 + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "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._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "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" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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" + } + }, + "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 + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, + "mocha-webpack": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mocha-webpack/-/mocha-webpack-0.7.0.tgz", + "integrity": "sha1-065ax93PKc+UfosO7Xc/pCKODM4=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "fs-extra": "0.30.0", + "glob-parent": "2.0.0", + "interpret": "1.1.0", + "invariant": "2.2.2", + "is-glob": "2.0.1", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "normalize-path": "2.1.1", + "object-hash": "1.2.0", + "webpack-info-plugin": "0.1.0", + "webpack-sources": "0.1.5", + "yargs": "4.8.1" + }, + "dependencies": { + "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.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "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 + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "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" + } + }, + "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 + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "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" + } + }, + "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 + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "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.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 + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "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 + }, + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-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=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "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" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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.2.0", + "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.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "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.2" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", + "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "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" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "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" + } + }, + "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-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" + } + }, + "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" + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "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-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 + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "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 + }, + "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.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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 + }, + "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" + } + }, + "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": "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" + } + }, + "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 + }, + "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" + } + }, + "webpack-info-plugin": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/webpack-info-plugin/-/webpack-info-plugin-0.1.0.tgz", + "integrity": "sha1-3/56qI/LlsWcxFCXZCHq+YzbeQE=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "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.7" + } + }, + "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 + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "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" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "lodash.assign": "4.2.0", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "window-size": "0.2.0", + "y18n": "3.2.1", + "yargs-parser": "2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "lodash.assign": "4.2.0" + } + } + } + }, + "mock-local-storage": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/mock-local-storage/-/mock-local-storage-1.0.5.tgz", + "integrity": "sha1-iZ/zAAJ87+1HgW5txTm7BZ/M5Ik=", + "dev": true, + "requires": { + "core-js": "0.8.4", + "global": "4.3.2" + }, + "dependencies": { + "core-js": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.8.4.tgz", + "integrity": "sha1-wiZl8eDRucPF4bCNq9HxCGleT88=", + "dev": true + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + } + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "0.1.1" + } + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "moment": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.3.tgz", + "integrity": "sha1-vbmdJw1tf9p4zA+6zoVeJ/59pp8=" + }, + "moo-server": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz", + "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE=", + "dev": true + }, + "null-loader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", + "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=", + "dev": true + }, + "nw-builder": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/nw-builder/-/nw-builder-3.5.1.tgz", + "integrity": "sha512-+GHIPyK5SsShWvicNEW5x0IHXUYlrqBsKgWf8FPIw5slLI3lJRfdCGi+9U0FeSdKYUpjwXOa18ttmRSPA7S0Cg==", + "dev": true, + "requires": { + "archiver": "1.3.0", + "boxen": "1.3.0", + "chalk": "1.1.3", + "deprecate": "1.0.0", + "extract-zip": "1.6.6", + "graceful-fs-extra": "2.0.0", + "graceful-ncp": "3.0.0", + "inherits": "2.0.3", + "lazy-req": "2.0.0", + "lodash": "4.17.4", + "optimist": "0.6.1", + "platform-overrides": "1.0.1", + "plist": "2.1.0", + "progress": "1.1.8", + "rcedit": "0.9.0", + "recursive-readdir-sync": "1.0.6", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "2.3.2", + "simple-glob": "0.1.0", + "tar-fs": "1.16.0", + "temp": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", + "thenify": "3.3.0", + "update-notifier": "1.0.3", + "winresourcer": "0.9.0" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "async": "2.6.0", + "buffer-crc32": "0.2.13", + "glob": "7.1.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3", + "tar-stream": "1.5.5", + "walkdir": "0.0.11", + "zip-stream": "1.2.0" + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lazystream": "1.0.0", + "lodash": "4.17.4", + "normalize-path": "2.1.1", + "readable-stream": "2.3.3" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "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.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "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 + }, + "base64-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", + "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", + "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" + } + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "ansi-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 + }, + "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" + } + }, + "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 + } + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "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" + } + }, + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "crc32-stream": "2.0.0", + "normalize-path": "2.1.1", + "readable-stream": "2.3.3" + } + }, + "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.3", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true, + "requires": { + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.0", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "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 + }, + "crc": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", + "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", + "dev": true + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "3.5.0", + "readable-stream": "2.3.3" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "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" + } + }, + "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 + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "deprecate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", + "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=", + "dev": true + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "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" + } + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true, + "requires": { + "once": "1.4.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" + } + }, + "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 + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "requires": { + "is-object": "1.0.1", + "merge-descriptors": "1.0.1" + } + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.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.17" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "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.2" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "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 + } + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.3", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-fs-extra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs-extra/-/graceful-fs-extra-2.0.0.tgz", + "integrity": "sha1-fR5X/Mcm4rDMcH14tKzqVC+pvk4=", + "dev": true, + "requires": { + "fs-extra": "0.30.0", + "graceful-ncp": "3.0.0", + "proxyquire": "1.8.0" + } + }, + "graceful-ncp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/graceful-ncp/-/graceful-ncp-3.0.0.tgz", + "integrity": "sha1-WAXqJVhe+YTMyqgIajxTDuQSioo=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "ncp": "2.0.0", + "proxyquire": "1.8.0" + } + }, + "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-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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "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" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "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-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "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 + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": 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-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 + }, + "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 + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "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" + } + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "dev": true, + "requires": { + "package-json": "2.4.0" + } + }, + "lazy-req": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz", + "integrity": "sha1-yUUKNj7N2i5vDHATKtTzf48G8rQ=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "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" + } + }, + "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 + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + } + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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 + }, + "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" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true, + "requires": { + "got": "5.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "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" + } + }, + "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-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "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" + } + }, + "platform-overrides": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/platform-overrides/-/platform-overrides-1.0.1.tgz", + "integrity": "sha1-kUzheydnF0YdHPcdj4g3qvv7c58=", + "dev": true, + "requires": { + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "plist": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", + "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", + "dev": true, + "requires": { + "base64-js": "1.2.0", + "xmlbuilder": "8.2.2", + "xmldom": "0.1.27" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "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 + }, + "proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "dev": true, + "requires": { + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1", + "resolve": "1.1.7" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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" + } + }, + "recursive-readdir-sync": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", + "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=", + "dev": true + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true, + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.2" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "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.17", + "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.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "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 + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "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 + }, + "simple-glob": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-glob/-/simple-glob-0.1.0.tgz", + "integrity": "sha1-9ehPuGkttzDqhlTU2kLRte+MFFY=", + "dev": true, + "requires": { + "glob": "3.2.11", + "lodash": "2.4.2", + "minimatch": "0.2.14" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + }, + "dependencies": { + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + } + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "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" + } + }, + "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 + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-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 + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "tar-fs": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz", + "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", + "dev": true, + "requires": { + "chownr": "1.0.1", + "mkdirp": "0.5.1", + "pump": "1.0.3", + "tar-stream": "1.5.5" + }, + "dependencies": { + "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" + } + } + } + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.0", + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "temp": { + "version": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", + "dev": true, + "requires": { + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "1.3.0" + } + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "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 + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", + "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "dev": true, + "requires": { + "boxen": "0.6.0", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "lazy-req": "1.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "boxen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", + "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", + "dev": true, + "requires": { + "ansi-align": "1.1.0", + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "winresourcer": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/winresourcer/-/winresourcer-0.9.0.tgz", + "integrity": "sha1-CvyjDzxudFgFjSigtnPJ3aYiubU=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", + "dev": true + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + }, + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "compress-commons": "1.2.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3" + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + }, + "dependencies": { + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "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=" + } + } + }, + "po2json": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", + "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", + "dev": true, + "requires": { + "gettext-parser": "1.1.0", + "nomnom": "1.8.1" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "gettext-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", + "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", + "dev": true, + "requires": { + "encoding": "0.1.12" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "0.4.0", + "underscore": "1.6.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "pofile": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.10.tgz", + "integrity": "sha512-bkQlDA9YYNaZGLLrxBoQgydzjc2tasbUfxa94/kx2FO/FCiHAJG6B40Jr3fWQgDC7kr+a9q7q5x7449B91CF0A==", + "dev": true + }, + "promised-io": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz", + "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y=", + "dev": true + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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 + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + } + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "rcedit": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-0.9.0.tgz", + "integrity": "sha1-ORDfVzRTmeKwMl9KUZAH+J5V7xw=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "scroll": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/scroll/-/scroll-2.0.1.tgz", + "integrity": "sha1-tMfSfovPOuiligQvJyaK4/VfnM0=", + "requires": { + "rafl": "1.2.2" + }, + "dependencies": { + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + } + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "0.1.1" + } + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + }, + "rafl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rafl/-/rafl-1.2.2.tgz", + "integrity": "sha1-/pMPdYIRAg1H44gV9Rlqi+QVB0A=", + "requires": { + "global": "4.3.2" + } + } + } + }, + "segseg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/segseg/-/segseg-0.2.2.tgz", + "integrity": "sha1-liCsjWDS8JjIdLlFyRzd+v/j49c=" + }, + "semver-utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.1.tgz", + "integrity": "sha1-J9kv7DTSfPpCcH07QNAlrphV8t8=" + }, + "sinon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.3.0.tgz", + "integrity": "sha512-/flfGfIxIRXSvZBHJzIf3iAyGYkmMQq6SQjA0cx9SOuVuq+4ZPPO4LJtH1Ce0Lznax1KSG1U6Dad85wIcSW19w==", + "dev": true, + "requires": { + "build": "0.1.4", + "diff": "3.4.0", + "formatio": "1.2.0", + "lodash.get": "4.4.2", + "lolex": "2.3.1", + "native-promise-only": "0.8.1", + "nise": "1.2.0", + "path-to-regexp": "1.7.0", + "samsam": "1.3.0", + "text-encoding": "0.6.4", + "type-detect": "4.0.5" + }, + "dependencies": { + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true + }, + "lolex": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.1.tgz", + "integrity": "sha512-mQuW55GhduF3ppo+ZRUTz1PRjEh1hS5BbqU7d8D0ez2OKxHDod7StPPeAVKisZR5aLkHZjdGWSL42LSONUJsZw==", + "dev": true + }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "dev": true + }, + "nise": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", + "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", + "dev": true, + "requires": { + "formatio": "1.2.0", + "just-extend": "1.1.27", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" + }, + "dependencies": { + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "dev": true + } + } + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + }, + "samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "dev": true + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, + "type-detect": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", + "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", + "dev": true + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "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": { + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "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 + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "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.5.1" + } + } + } + }, + "tether-drop": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tether-drop/-/tether-drop-1.4.2.tgz", + "integrity": "sha1-KOJAzOB39K4djlmQoDtx4M1vv+w=", + "requires": { + "tether": "1.4.3" + }, + "dependencies": { + "tether": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.3.tgz", + "integrity": "sha512-YCfE/Ym9MpZpzUmzbek7MiLEyTofxx2YS0rJfSOUXX0aZtfQgxcgw7/Re2oGJUsREWZtEF0DzBKCjqH+DzgL6A==" + } + } + }, + "timespan": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", + "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", + "dev": true + }, + "tiny-uuid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tiny-uuid/-/tiny-uuid-1.0.0.tgz", + "integrity": "sha1-rqNKL4nHtxQ16zivMTmqOgJTUco=" + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "unfetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-3.0.0.tgz", + "integrity": "sha1-jR4FE6Ts0OX/LUGmund3Gq6LZII=" + }, + "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.6" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "mime": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", + "dev": true + } + } + }, + "vue": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/vue/-/vue-1.0.28.tgz", + "integrity": "sha1-7S/weyAL3hXIepDvhyfO6n04Vn0=", + "requires": { + "envify": "3.4.1" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base62": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.1.tgz", + "integrity": "sha512-xVtfFHNPUzpCNHygpXFGMlDk3saxXLQcOOQzAAk6ibvlAHgT6WKXLv9rMFhcyEK1n9LuDmp/LxyGW/Fm9L8++g==" + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "requires": { + "commander": "2.12.2", + "detective": "4.7.0", + "glob": "5.0.15", + "graceful-fs": "4.1.11", + "iconv-lite": "0.4.19", + "mkdirp": "0.5.1", + "private": "0.1.8", + "q": "1.5.1", + "recast": "0.11.23" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "detective": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.0.tgz", + "integrity": "sha512-4mBqSEdMfBpRAo/DQZnTcAXenpiSIJmVKbCMSotS+SFWWcrP/CKM6iBRPdTiEO+wZhlfEsoZlGqpG6ycl5vTqw==", + "requires": { + "acorn": "5.2.1", + "defined": "1.0.0" + } + }, + "envify": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", + "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", + "requires": { + "jstransform": "11.0.3", + "through": "2.3.8" + } + }, + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=" + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "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=" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "jstransform": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", + "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", + "requires": { + "base62": "1.2.1", + "commoner": "0.10.8", + "esprima-fb": "15001.1.0-dev-harmony-fb", + "object-assign": "2.1.1", + "source-map": "0.4.4" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "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=" + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } + }, + "vue-router": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-0.7.13.tgz", + "integrity": "sha1-4fDwQqwlYVBLJ/Rvbc0XuDKxyNE=" + }, + "vuex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-1.0.1.tgz", + "integrity": "sha1-uTw0FbXoblRmAWShoX4rN2x1n+s=" + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "webpack": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.1", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "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 + } + } + }, + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "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" + } + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "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 + }, + "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 + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "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=", + "dev": true, + "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.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "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.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "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.4", + "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.8", + "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.8", + "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.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "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 + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "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" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "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" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "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" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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 + }, + "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 + }, + "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" + } + }, + "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 + }, + "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 + }, + "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.8", + "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.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "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.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.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.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" + } + }, + "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.37" + } + }, + "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 + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "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" + } + }, + "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.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "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 + }, + "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.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "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 + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "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" + } + }, + "es5-ext": { + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "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.37", + "es6-iterator": "2.0.3", + "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.37", + "es6-iterator": "2.0.3", + "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.37" + } + }, + "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.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "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" + } + }, + "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" + } + }, + "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.37" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "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, + "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 + }, + "detect-libc": { + "version": "1.0.2", + "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, + "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.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "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, + "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 + } + } + }, + "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-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "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.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "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.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "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 + }, + "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.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "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 + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "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" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "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" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.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" + } + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "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.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "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" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "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.9" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "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 + }, + "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.8", + "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 + }, + "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==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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.3", + "set-immediate-shim": "1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "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-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 + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "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 + }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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 + }, + "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.3" + } + }, + "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.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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 + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "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-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "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 + }, + "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 + }, + "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.7", + "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" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + }, + "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 + } + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "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": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.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 + }, + "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" + }, + "dependencies": { + "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" + } + } + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.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 + } + } + } + } + }, + "webpack-dev-server": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.5.tgz", + "integrity": "sha512-o0lS6enIxyOPiRJTh8vcgK5TsGNTn7lH1q/pNniAgs46mCE8sQYeqv7Y/oAIh/+u4kiBsFizLJo5EWC+ezz6FQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "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 + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "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": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.1", + "multicast-dns-service-types": "1.1.0" + } + }, + "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=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "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 + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "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" + } + }, + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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 + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "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 + }, + "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 + }, + "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" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", + "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "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" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "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, + "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 + }, + "detect-libc": { + "version": "1.0.2", + "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, + "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.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "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, + "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 + } + } + }, + "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 + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "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-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" + } + } + } + }, + "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" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "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.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-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.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-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=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "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": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "loglevel": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", + "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", + "dev": true + }, + "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" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "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.3" + } + }, + "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.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "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=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", + "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", + "dev": true, + "requires": { + "dns-packet": "1.2.2", + "thunky": "0.1.0" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "node-forge": { + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", + "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, + "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" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "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.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "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-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" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "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" + } + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "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 + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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.3", + "set-immediate-shim": "1.0.1" + } + }, + "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" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "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 + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", + "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "dev": true, + "requires": { + "node-forge": "0.6.33" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "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 + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "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 + }, + "sockjs": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "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 + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "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" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "thunky": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "dev": true + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "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.17" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "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 + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "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.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + } + } + }, + "webpack-node-externals": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz", + "integrity": "sha1-Iyxi7GCSsQBjWj0p2DwXRxKN+b0=", + "dev": true + }, + "winston": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz", + "integrity": "sha1-gIBQuT1SZh7Z+2wms/DIJnCLCu4=", + "dev": true, + "requires": { + "async": "1.0.0", + "colors": "1.0.3", + "cycle": "1.0.3", + "eyes": "0.1.8", + "isstream": "0.1.2", + "stack-trace": "0.0.10" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "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 + } + } + }, + "wrench": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz", + "integrity": "sha1-bxPsNRRTF+spLKX2UxORskQRFBE=", + "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": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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 + }, + "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" + } + }, + "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 + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "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" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "get-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 + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "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 + }, + "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-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-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-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "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" + } + }, + "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" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "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-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 + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "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 + }, + "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 + }, + "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" + } + }, + "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": "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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs-parser": { + "version": "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" + } + } + } + } + } +} diff --git a/package.json b/package.json index e393ff1e0..1ac75874b 100644 --- a/package.json +++ b/package.json @@ -30,20 +30,15 @@ "watch": "webpack -d --progress --watch" }, "dependencies": { - "babel-loader": "^6.2.10", "blob-polyfill": "^1.0.20150320", "browser-saveas": "^1.0.0", "codemirror": "^5.5.0", "core-js": "^2.4.0", - "ejs-html-loader": "^2.0.2", - "extract-text-webpack-plugin": "^2.0.0-rc.3", "fastclick": "^1.0.6", "font-awesome": "^4.3.0", - "html-webpack-plugin": "^2.28.0", "jed": "^1.1.0", "jsonp": "^0.2.1", "jszip": "^2.5.0", - "karma-webpack": "^2.0.4", "lodash.debounce": "^4.0.8", "lodash.escape": "^4.0.1", "lodash.uniq": "^4.5.0", From 863ad215a05dd1e7431b47d008dd8d3c7b8d4516 Mon Sep 17 00:00:00 2001 From: Thomas Edwards <101626+tmedwards@users.noreply.github.com> Date: Tue, 5 Dec 2017 08:55:53 -0600 Subject: [PATCH 04/12] Update SugarCube v2 to v2.21.0. --- src/data/actions/story-format.js | 4 ++-- src/data/actions/story-format.spec.js | 8 ++++---- .../{sugarcube-2.18.0 => sugarcube-2.21.0}/LICENSE | 0 .../{sugarcube-2.18.0 => sugarcube-2.21.0}/format.js | 2 +- .../{sugarcube-2.18.0 => sugarcube-2.21.0}/icon.svg | 0 5 files changed, 7 insertions(+), 7 deletions(-) rename story-formats/{sugarcube-2.18.0 => sugarcube-2.21.0}/LICENSE (100%) rename story-formats/{sugarcube-2.18.0 => sugarcube-2.21.0}/format.js (53%) rename story-formats/{sugarcube-2.18.0 => sugarcube-2.21.0}/icon.svg (100%) diff --git a/src/data/actions/story-format.js b/src/data/actions/story-format.js index 46fa6e38a..945079405 100644 --- a/src/data/actions/story-format.js +++ b/src/data/actions/story-format.js @@ -199,8 +199,8 @@ const actions = module.exports = { }, { name: 'SugarCube', - url: 'story-formats/sugarcube-2.18.0/format.js', - version: '2.18.0', + url: 'story-formats/sugarcube-2.21.0/format.js', + version: '2.21.0', userAdded: false } ]; diff --git a/src/data/actions/story-format.spec.js b/src/data/actions/story-format.spec.js index b99d2e069..96194bae9 100644 --- a/src/data/actions/story-format.spec.js +++ b/src/data/actions/story-format.spec.js @@ -76,9 +76,9 @@ describe('story format actions module', () => { expect(created['SugarCube-1.0.35']).to.exist; expect(created['SugarCube-1.0.35'].url).to.equal('story-formats/sugarcube-1.0.35/format.js'); expect(created['SugarCube-1.0.35'].userAdded).to.be.false; - expect(created['SugarCube-2.18.0']).to.exist; - expect(created['SugarCube-2.18.0'].url).to.equal('story-formats/sugarcube-2.18.0/format.js'); - expect(created['SugarCube-2.18.0'].userAdded).to.be.false; + expect(created['SugarCube-2.21.0']).to.exist; + expect(created['SugarCube-2.21.0'].url).to.equal('story-formats/sugarcube-2.21.0/format.js'); + expect(created['SugarCube-2.21.0'].userAdded).to.be.false; }); it('sets default formats with repairFormats()', () => { @@ -131,7 +131,7 @@ describe('story format actions module', () => { { name: 'Paperthin', version: '1.0.0' }, { name: 'Snowman', version: '1.3.0' }, { name: 'SugarCube', version: '1.0.35' }, - { name: 'SugarCube', version: '2.18.0' } + { name: 'SugarCube', version: '2.21.0' } ] } } diff --git a/story-formats/sugarcube-2.18.0/LICENSE b/story-formats/sugarcube-2.21.0/LICENSE similarity index 100% rename from story-formats/sugarcube-2.18.0/LICENSE rename to story-formats/sugarcube-2.21.0/LICENSE diff --git a/story-formats/sugarcube-2.18.0/format.js b/story-formats/sugarcube-2.21.0/format.js similarity index 53% rename from story-formats/sugarcube-2.18.0/format.js rename to story-formats/sugarcube-2.21.0/format.js index 2dac121b7..b9dadc196 100644 --- a/story-formats/sugarcube-2.18.0/format.js +++ b/story-formats/sugarcube-2.21.0/format.js @@ -1 +1 @@ -window.storyFormat({"name":"SugarCube","version":"2.18.0","description":"A Twine 2 port of the Twine 1 story format by the same name. See its documentation.","author":"Thomas Michael Edwards","image":"icon.svg","url":"http://www.motoslave.net/sugarcube/","license":"BSD-2-Clause","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
\n\t\t
\n\t\t
Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
\n\t\t
Loading…
\n\t
\n\t\n\t\n\n\n"}); \ No newline at end of file +window.storyFormat({"name":"SugarCube","version":"2.21.0","description":"A Twine 2 port of the Twine 1 story format by the same name. See its documentation.","author":"Thomas Michael Edwards","image":"icon.svg","url":"http://www.motoslave.net/sugarcube/","license":"BSD-2-Clause","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
\n\t\t
\n\t\t
Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
\n\t\t
Loading…
\n\t
\n\t\n\t\n\n\n"}); \ No newline at end of file diff --git a/story-formats/sugarcube-2.18.0/icon.svg b/story-formats/sugarcube-2.21.0/icon.svg similarity index 100% rename from story-formats/sugarcube-2.18.0/icon.svg rename to story-formats/sugarcube-2.21.0/icon.svg From 913a203b4b85468442d19b90b48b58f11f8e25ad Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Wed, 6 Dec 2017 00:24:52 -0500 Subject: [PATCH 05/12] Rework throttled saving in favor of a queue I am haunted by the feeling that there is an existing data structure/module that does this job, but I can't think of it --- .editorconfig | 8 + .eslintignore | 1 + .eslintrc | 48 + .hgignore | 13 + CONTRIBUTING.md | 16 + LICENSE | 674 + README.md | 82 + package-lock.json | 17672 ++++++++++++++++ package.json | 107 + scripts/build-number.js | 8 + scripts/build-nw.js | 28 + scripts/extract-pot.js | 195 + scripts/nsis-script.ejs | 63 + scripts/package.js | 140 + src/codemirror/prefix-trigger.js | 50 + src/common/app/index.js | 35 + src/common/app/update-check.js | 30 + src/common/colors.less | 41 + src/common/depth.less | 32 + src/common/fonts.less | 81 + src/common/fonts/nunito-light.eot | Bin 0 -> 27728 bytes src/common/fonts/nunito-light.svg | 712 + src/common/fonts/nunito-light.ttf | Bin 0 -> 58580 bytes src/common/fonts/nunito-light.woff | Bin 0 -> 31384 bytes src/common/fonts/sourcecodepro.eot | Bin 0 -> 24009 bytes src/common/fonts/sourcecodepro.svg | 241 + src/common/fonts/sourcecodepro.ttf | Bin 0 -> 52752 bytes src/common/fonts/sourcecodepro.woff | Bin 0 -> 27168 bytes src/common/fonts/sourcecodepro.woff2 | Bin 0 -> 20992 bytes src/common/fonts/sourcesanspro-bold.eot | Bin 0 -> 26749 bytes src/common/fonts/sourcesanspro-bold.svg | 957 + src/common/fonts/sourcesanspro-bold.ttf | Bin 0 -> 67368 bytes src/common/fonts/sourcesanspro-bold.woff | Bin 0 -> 29504 bytes src/common/fonts/sourcesanspro-bold.woff2 | Bin 0 -> 23460 bytes src/common/fonts/sourcesanspro-bolditalic.eot | Bin 0 -> 28156 bytes src/common/fonts/sourcesanspro-bolditalic.svg | 833 + src/common/fonts/sourcesanspro-bolditalic.ttf | Bin 0 -> 67660 bytes .../fonts/sourcesanspro-bolditalic.woff | Bin 0 -> 31208 bytes .../fonts/sourcesanspro-bolditalic.woff2 | Bin 0 -> 24796 bytes src/common/fonts/sourcesanspro-italic.eot | Bin 0 -> 28309 bytes src/common/fonts/sourcesanspro-italic.svg | 845 + src/common/fonts/sourcesanspro-italic.ttf | Bin 0 -> 66992 bytes src/common/fonts/sourcesanspro-italic.woff | Bin 0 -> 31332 bytes src/common/fonts/sourcesanspro-italic.woff2 | Bin 0 -> 25012 bytes src/common/fonts/sourcesanspro-regular.eot | Bin 0 -> 27090 bytes src/common/fonts/sourcesanspro-regular.svg | 980 + src/common/fonts/sourcesanspro-regular.ttf | Bin 0 -> 68452 bytes src/common/fonts/sourcesanspro-regular.woff | Bin 0 -> 29768 bytes src/common/fonts/sourcesanspro-regular.woff2 | Bin 0 -> 23772 bytes src/common/img/favicon.ico | Bin 0 -> 1150 bytes src/common/img/logo.icns | Bin 0 -> 113543 bytes src/common/img/logo.ico | Bin 0 -> 31076 bytes src/common/img/logo.svg | 133 + src/common/metrics.less | 11 + src/common/rect.js | 168 + src/common/router.js | 201 + src/common/typography.less | 120 + src/data/actions/passage.js | 242 + src/data/actions/passage.spec.js | 204 + src/data/actions/pref.js | 9 + src/data/actions/pref.spec.js | 17 + src/data/actions/story-format.js | 296 + src/data/actions/story-format.spec.js | 228 + src/data/actions/story.js | 176 + src/data/actions/story.spec.js | 227 + src/data/import.js | 134 + src/data/import.spec.js | 93 + src/data/latest-format-versions.js | 34 + src/data/link-parser.js | 82 + src/data/link-parser.spec.js | 142 + src/data/local-storage/comma-list.js | 39 + src/data/local-storage/comma-list.spec.js | 29 + src/data/local-storage/index.js | 190 + src/data/local-storage/index.spec.js | 222 + src/data/local-storage/pref.js | 63 + src/data/local-storage/pref.spec.js | 71 + src/data/local-storage/story-format.js | 69 + src/data/local-storage/story-format.spec.js | 83 + src/data/local-storage/story.js | 216 + src/data/local-storage/story.spec.js | 154 + src/data/publish.js | 136 + src/data/publish.spec.js | 145 + src/data/store/app-info.js | 14 + src/data/store/app-info.spec.js | 36 + src/data/store/index.js | 19 + src/data/store/pref.js | 28 + src/data/store/pref.spec.js | 23 + src/data/store/story-format.js | 49 + src/data/store/story-format.spec.js | 103 + src/data/store/story.js | 215 + src/data/store/story.spec.js | 262 + src/dialogs/about/index.html | 114 + src/dialogs/about/index.js | 21 + src/dialogs/about/index.less | 11 + src/dialogs/app-donation/index.html | 24 + src/dialogs/app-donation/index.js | 43 + src/dialogs/app-donation/index.less | 19 + src/dialogs/app-donation/klimas.png | Bin 0 -> 26080 bytes src/dialogs/app-update/index.js | 70 + src/dialogs/confirm/index.html | 8 + src/dialogs/confirm/index.js | 82 + src/dialogs/confirm/index.less | 27 + src/dialogs/formats/index.html | 72 + src/dialogs/formats/index.js | 211 + src/dialogs/formats/item.html | 40 + src/dialogs/formats/item.js | 101 + src/dialogs/formats/item.less | 26 + src/dialogs/prompt/index.html | 18 + src/dialogs/prompt/index.js | 82 + src/dialogs/prompt/index.less | 25 + src/dialogs/story-format/index.html | 17 + src/dialogs/story-format/index.js | 132 + src/dialogs/story-format/index.less | 12 + src/dialogs/story-format/item.html | 30 + src/dialogs/story-format/item.js | 58 + src/dialogs/story-format/item.less | 3 + src/dialogs/story-import/index.html | 46 + src/dialogs/story-import/index.js | 153 + src/dialogs/story-search/index.html | 60 + src/dialogs/story-search/index.js | 120 + src/dialogs/story-search/index.less | 15 + src/dialogs/story-search/result.html | 20 + src/dialogs/story-search/result.js | 95 + src/dialogs/story-search/result.less | 31 + src/dialogs/story-stats/index.html | 59 + src/dialogs/story-stats/index.js | 137 + src/dialogs/story-stats/index.less | 12 + src/editors/javascript/index.html | 13 + src/editors/javascript/index.js | 62 + src/editors/passage/index.html | 15 + src/editors/passage/index.js | 265 + src/editors/passage/index.less | 56 + src/editors/passage/tag-editor/index.html | 26 + src/editors/passage/tag-editor/index.js | 70 + .../passage/tag-editor/tag-menu/index.html | 19 + .../passage/tag-editor/tag-menu/index.js | 46 + .../passage/tag-editor/tag-menu/index.less | 50 + src/editors/stylesheet/index.html | 13 + src/editors/stylesheet/index.js | 65 + src/file/load.js | 17 + src/file/save.js | 78 + src/index.ejs | 41 + src/index.js | 85 + src/index.less | 8 + src/locale/index.js | 144 + src/locale/po/cs.po | 1371 ++ src/locale/po/da.po | 823 + src/locale/po/de.po | 1203 ++ src/locale/po/es.po | 1098 + src/locale/po/fi.po | 1154 + src/locale/po/fr.po | 1261 ++ src/locale/po/it.po | 793 + src/locale/po/nl.po | 1152 + src/locale/po/piglatin.po | 1217 ++ src/locale/po/pt-br.po | 1164 + src/locale/po/pt-pt.po | 793 + src/locale/po/ru.po | 1178 + src/locale/po/sv.po | 1163 + src/locale/po/template.pot | 653 + src/locale/po/tr.po | 1164 + src/locale/view/img/flags/cs.svg | 6 + src/locale/view/img/flags/da.svg | 6 + src/locale/view/img/flags/de.svg | 71 + src/locale/view/img/flags/en.svg | 10 + src/locale/view/img/flags/es.svg | 631 + src/locale/view/img/flags/fi.svg | 6 + src/locale/view/img/flags/fr.svg | 2 + src/locale/view/img/flags/it.svg | 71 + src/locale/view/img/flags/nl.svg | 5 + src/locale/view/img/flags/pt-br.svg | 90 + src/locale/view/img/flags/pt-pt.svg | 67 + src/locale/view/img/flags/ru.svg | 1 + src/locale/view/img/flags/sv.svg | 5 + src/locale/view/img/flags/tr.svg | 8 + src/locale/view/index.html | 14 + src/locale/view/index.js | 59 + src/locale/view/index.less | 35 + src/nw/directories.js | 124 + src/nw/img/logo-osx.svg | 137 + src/nw/img/logo.icns | Bin 0 -> 113543 bytes src/nw/index.js | 250 + src/nw/index.less | 32 + src/nw/menus.js | 128 + src/nw/patches/quota-gauge.js | 6 + src/nw/patches/store/file-persistence.js | 74 + src/nw/patches/store/index.js | 6 + src/nw/patches/story-list-toolbar.js | 10 + src/nw/patches/welcome-view/index.js | 7 + .../welcome-view/replacement-template.html | 74 + src/nw/save-queue.js | 63 + src/nw/startup-error.ejs | 45 + src/nw/story-file.js | 146 + src/story-edit-view/index.html | 10 + src/story-edit-view/index.js | 501 + src/story-edit-view/index.less | 83 + src/story-edit-view/link-arrows/index.html | 27 + src/story-edit-view/link-arrows/index.js | 77 + src/story-edit-view/link-arrows/index.less | 52 + src/story-edit-view/link-arrows/link-arrow.js | 215 + .../marquee-selector/index.html | 1 + src/story-edit-view/marquee-selector/index.js | 233 + .../marquee-selector/index.less | 18 + src/story-edit-view/passage-item/index.html | 19 + src/story-edit-view/passage-item/index.js | 435 + src/story-edit-view/passage-item/index.less | 146 + .../passage-item/passage-menu/index.html | 49 + .../passage-item/passage-menu/index.js | 140 + .../passage-item/passage-menu/index.less | 7 + src/story-edit-view/story-toolbar/index.html | 45 + src/story-edit-view/story-toolbar/index.js | 62 + src/story-edit-view/story-toolbar/index.less | 86 + .../story-toolbar/story-menu/index.html | 41 + .../story-toolbar/story-menu/index.js | 128 + .../story-toolbar/story-search/index.html | 6 + .../story-toolbar/story-search/index.js | 54 + src/story-edit-view/zoom-settings.js | 9 + src/story-edit-view/zoom-settings.spec.js | 16 + src/story-list-view/index.html | 35 + src/story-list-view/index.js | 201 + src/story-list-view/index.less | 85 + src/story-list-view/list-toolbar/index.html | 52 + src/story-list-view/list-toolbar/index.js | 107 + .../list-toolbar/theme-switcher.html | 8 + .../list-toolbar/theme-switcher.js | 27 + src/story-list-view/story-item/index.html | 20 + src/story-list-view/story-item/index.js | 91 + src/story-list-view/story-item/index.less | 46 + .../story-item/item-menu/index.html | 29 + .../story-item/item-menu/index.js | 153 + .../story-item/item-preview/index.html | 3 + .../story-item/item-preview/index.js | 111 + src/story-list-view/zoom-transition/index.js | 54 + .../zoom-transition/index.less | 38 + src/ui/badges.less | 22 + src/ui/buttons.less | 172 + src/ui/drop-down/index.html | 3 + src/ui/drop-down/index.js | 133 + src/ui/drop-down/index.less | 20 + src/ui/file-drag-n-drop/index.html | 7 + src/ui/file-drag-n-drop/index.js | 53 + src/ui/file-drag-n-drop/index.less | 46 + src/ui/forms.less | 91 + src/ui/gauge.less | 25 + src/ui/ie-mouse-event-polyfill.js | 26 + src/ui/index.js | 90 + src/ui/index.less | 91 + src/ui/menus.less | 49 + src/ui/modal-dialog/index.html | 21 + src/ui/modal-dialog/index.js | 172 + src/ui/modal-dialog/index.less | 183 + src/ui/notify/index.js | 13 + src/ui/notify/list.html | 21 + src/ui/notify/list.js | 73 + src/ui/notify/list.less | 39 + src/ui/quota-gauge/index.html | 7 + src/ui/quota-gauge/index.js | 78 + src/ui/quota-gauge/index.less | 4 + src/ui/replace.js | 34 + src/ui/tab-panel/index.html | 10 + src/ui/tab-panel/index.js | 22 + src/ui/tab-panel/item.js | 24 + src/ui/tables.less | 42 + src/ui/tags.less | 49 + src/ui/toolbar.less | 8 + src/vue/codemirror-theme.less | 68 + src/vue/codemirror.js | 46 + src/vue/codemirror.spec.js | 51 + src/vue/directives/mouse-scrolling.js | 148 + src/vue/directives/mouse-scrolling.less | 6 + src/vue/filters/locale.js | 10 + src/vue/filters/locale.spec.js | 24 + src/vue/index.less | 1 + src/vue/mixins/dom-events.js | 75 + src/vue/mixins/dom-events.spec.js | 87 + src/vue/mixins/mount-to.js | 14 + src/vue/mixins/mount-to.spec.js | 33 + src/vue/mixins/thenable.js | 53 + src/vue/mixins/thenable.spec.js | 76 + src/vue/transitions.less | 49 + src/welcome/img/welcome-alpha.png | Bin 0 -> 4167 bytes src/welcome/img/welcome-help.png | Bin 0 -> 3545 bytes src/welcome/img/welcome-logo.png | Bin 0 -> 14745 bytes src/welcome/img/welcome-save.png | Bin 0 -> 5308 bytes src/welcome/img/welcome-thanks.png | Bin 0 -> 2377 bytes src/welcome/index.html | 74 + src/welcome/index.js | 48 + src/welcome/index.less | 51 + src/welcome/index.spec.js | 65 + story-formats/harlowe-1.2.4/format.js | 1 + story-formats/harlowe-1.2.4/icon.svg | 78 + story-formats/harlowe-2.0.1/format.js | 2 + story-formats/harlowe-2.0.1/icon.svg | 78 + story-formats/paperthin-1.0.0/format.js | 1 + story-formats/paperthin-1.0.0/icon.svg | 5 + story-formats/snowman-1.3.0/format.js | 1 + story-formats/snowman-1.3.0/icon.svg | 436 + story-formats/sugarcube-1.0.35/LICENSE | 23 + story-formats/sugarcube-1.0.35/format.js | 1 + story-formats/sugarcube-1.0.35/icon.svg | 56 + story-formats/sugarcube-2.18.0/LICENSE | 23 + story-formats/sugarcube-2.18.0/format.js | 1 + story-formats/sugarcube-2.18.0/icon.svg | 56 + webpack.config.cdn.js | 37 + webpack.config.js | 93 + webpack.config.release.js | 49 + webpack.config.test.js | 18 + webpack/po-webpack-plugin.js | 43 + yarn.lock | 5903 ++++++ 308 files changed, 63050 insertions(+) create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .hgignore create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scripts/build-number.js create mode 100644 scripts/build-nw.js create mode 100644 scripts/extract-pot.js create mode 100644 scripts/nsis-script.ejs create mode 100644 scripts/package.js create mode 100644 src/codemirror/prefix-trigger.js create mode 100644 src/common/app/index.js create mode 100644 src/common/app/update-check.js create mode 100644 src/common/colors.less create mode 100644 src/common/depth.less create mode 100644 src/common/fonts.less create mode 100755 src/common/fonts/nunito-light.eot create mode 100755 src/common/fonts/nunito-light.svg create mode 100755 src/common/fonts/nunito-light.ttf create mode 100755 src/common/fonts/nunito-light.woff create mode 100755 src/common/fonts/sourcecodepro.eot create mode 100755 src/common/fonts/sourcecodepro.svg create mode 100755 src/common/fonts/sourcecodepro.ttf create mode 100755 src/common/fonts/sourcecodepro.woff create mode 100755 src/common/fonts/sourcecodepro.woff2 create mode 100755 src/common/fonts/sourcesanspro-bold.eot create mode 100755 src/common/fonts/sourcesanspro-bold.svg create mode 100755 src/common/fonts/sourcesanspro-bold.ttf create mode 100755 src/common/fonts/sourcesanspro-bold.woff create mode 100755 src/common/fonts/sourcesanspro-bold.woff2 create mode 100755 src/common/fonts/sourcesanspro-bolditalic.eot create mode 100755 src/common/fonts/sourcesanspro-bolditalic.svg create mode 100755 src/common/fonts/sourcesanspro-bolditalic.ttf create mode 100755 src/common/fonts/sourcesanspro-bolditalic.woff create mode 100755 src/common/fonts/sourcesanspro-bolditalic.woff2 create mode 100755 src/common/fonts/sourcesanspro-italic.eot create mode 100755 src/common/fonts/sourcesanspro-italic.svg create mode 100755 src/common/fonts/sourcesanspro-italic.ttf create mode 100755 src/common/fonts/sourcesanspro-italic.woff create mode 100755 src/common/fonts/sourcesanspro-italic.woff2 create mode 100755 src/common/fonts/sourcesanspro-regular.eot create mode 100755 src/common/fonts/sourcesanspro-regular.svg create mode 100755 src/common/fonts/sourcesanspro-regular.ttf create mode 100755 src/common/fonts/sourcesanspro-regular.woff create mode 100755 src/common/fonts/sourcesanspro-regular.woff2 create mode 100644 src/common/img/favicon.ico create mode 100644 src/common/img/logo.icns create mode 100644 src/common/img/logo.ico create mode 100644 src/common/img/logo.svg create mode 100644 src/common/metrics.less create mode 100644 src/common/rect.js create mode 100644 src/common/router.js create mode 100644 src/common/typography.less create mode 100644 src/data/actions/passage.js create mode 100644 src/data/actions/passage.spec.js create mode 100644 src/data/actions/pref.js create mode 100644 src/data/actions/pref.spec.js create mode 100644 src/data/actions/story-format.js create mode 100644 src/data/actions/story-format.spec.js create mode 100644 src/data/actions/story.js create mode 100644 src/data/actions/story.spec.js create mode 100644 src/data/import.js create mode 100644 src/data/import.spec.js create mode 100644 src/data/latest-format-versions.js create mode 100644 src/data/link-parser.js create mode 100644 src/data/link-parser.spec.js create mode 100644 src/data/local-storage/comma-list.js create mode 100644 src/data/local-storage/comma-list.spec.js create mode 100644 src/data/local-storage/index.js create mode 100644 src/data/local-storage/index.spec.js create mode 100644 src/data/local-storage/pref.js create mode 100644 src/data/local-storage/pref.spec.js create mode 100644 src/data/local-storage/story-format.js create mode 100644 src/data/local-storage/story-format.spec.js create mode 100644 src/data/local-storage/story.js create mode 100644 src/data/local-storage/story.spec.js create mode 100644 src/data/publish.js create mode 100644 src/data/publish.spec.js create mode 100644 src/data/store/app-info.js create mode 100644 src/data/store/app-info.spec.js create mode 100644 src/data/store/index.js create mode 100644 src/data/store/pref.js create mode 100644 src/data/store/pref.spec.js create mode 100644 src/data/store/story-format.js create mode 100644 src/data/store/story-format.spec.js create mode 100644 src/data/store/story.js create mode 100644 src/data/store/story.spec.js create mode 100644 src/dialogs/about/index.html create mode 100644 src/dialogs/about/index.js create mode 100644 src/dialogs/about/index.less create mode 100644 src/dialogs/app-donation/index.html create mode 100644 src/dialogs/app-donation/index.js create mode 100644 src/dialogs/app-donation/index.less create mode 100644 src/dialogs/app-donation/klimas.png create mode 100644 src/dialogs/app-update/index.js create mode 100644 src/dialogs/confirm/index.html create mode 100644 src/dialogs/confirm/index.js create mode 100644 src/dialogs/confirm/index.less create mode 100644 src/dialogs/formats/index.html create mode 100644 src/dialogs/formats/index.js create mode 100644 src/dialogs/formats/item.html create mode 100644 src/dialogs/formats/item.js create mode 100644 src/dialogs/formats/item.less create mode 100644 src/dialogs/prompt/index.html create mode 100644 src/dialogs/prompt/index.js create mode 100644 src/dialogs/prompt/index.less create mode 100644 src/dialogs/story-format/index.html create mode 100644 src/dialogs/story-format/index.js create mode 100644 src/dialogs/story-format/index.less create mode 100644 src/dialogs/story-format/item.html create mode 100644 src/dialogs/story-format/item.js create mode 100644 src/dialogs/story-format/item.less create mode 100644 src/dialogs/story-import/index.html create mode 100644 src/dialogs/story-import/index.js create mode 100644 src/dialogs/story-search/index.html create mode 100644 src/dialogs/story-search/index.js create mode 100644 src/dialogs/story-search/index.less create mode 100644 src/dialogs/story-search/result.html create mode 100644 src/dialogs/story-search/result.js create mode 100644 src/dialogs/story-search/result.less create mode 100644 src/dialogs/story-stats/index.html create mode 100644 src/dialogs/story-stats/index.js create mode 100644 src/dialogs/story-stats/index.less create mode 100644 src/editors/javascript/index.html create mode 100644 src/editors/javascript/index.js create mode 100644 src/editors/passage/index.html create mode 100644 src/editors/passage/index.js create mode 100644 src/editors/passage/index.less create mode 100644 src/editors/passage/tag-editor/index.html create mode 100644 src/editors/passage/tag-editor/index.js create mode 100644 src/editors/passage/tag-editor/tag-menu/index.html create mode 100644 src/editors/passage/tag-editor/tag-menu/index.js create mode 100644 src/editors/passage/tag-editor/tag-menu/index.less create mode 100644 src/editors/stylesheet/index.html create mode 100644 src/editors/stylesheet/index.js create mode 100644 src/file/load.js create mode 100644 src/file/save.js create mode 100644 src/index.ejs create mode 100644 src/index.js create mode 100644 src/index.less create mode 100644 src/locale/index.js create mode 100644 src/locale/po/cs.po create mode 100755 src/locale/po/da.po create mode 100644 src/locale/po/de.po create mode 100644 src/locale/po/es.po create mode 100644 src/locale/po/fi.po create mode 100644 src/locale/po/fr.po create mode 100644 src/locale/po/it.po create mode 100644 src/locale/po/nl.po create mode 100644 src/locale/po/piglatin.po create mode 100644 src/locale/po/pt-br.po create mode 100644 src/locale/po/pt-pt.po create mode 100755 src/locale/po/ru.po create mode 100644 src/locale/po/sv.po create mode 100644 src/locale/po/template.pot create mode 100755 src/locale/po/tr.po create mode 100644 src/locale/view/img/flags/cs.svg create mode 100755 src/locale/view/img/flags/da.svg create mode 100644 src/locale/view/img/flags/de.svg create mode 100644 src/locale/view/img/flags/en.svg create mode 100644 src/locale/view/img/flags/es.svg create mode 100644 src/locale/view/img/flags/fi.svg create mode 100644 src/locale/view/img/flags/fr.svg create mode 100644 src/locale/view/img/flags/it.svg create mode 100644 src/locale/view/img/flags/nl.svg create mode 100644 src/locale/view/img/flags/pt-br.svg create mode 100644 src/locale/view/img/flags/pt-pt.svg create mode 100755 src/locale/view/img/flags/ru.svg create mode 100644 src/locale/view/img/flags/sv.svg create mode 100755 src/locale/view/img/flags/tr.svg create mode 100644 src/locale/view/index.html create mode 100644 src/locale/view/index.js create mode 100644 src/locale/view/index.less create mode 100644 src/nw/directories.js create mode 100644 src/nw/img/logo-osx.svg create mode 100644 src/nw/img/logo.icns create mode 100644 src/nw/index.js create mode 100644 src/nw/index.less create mode 100644 src/nw/menus.js create mode 100644 src/nw/patches/quota-gauge.js create mode 100644 src/nw/patches/store/file-persistence.js create mode 100644 src/nw/patches/store/index.js create mode 100644 src/nw/patches/story-list-toolbar.js create mode 100644 src/nw/patches/welcome-view/index.js create mode 100644 src/nw/patches/welcome-view/replacement-template.html create mode 100644 src/nw/save-queue.js create mode 100644 src/nw/startup-error.ejs create mode 100644 src/nw/story-file.js create mode 100644 src/story-edit-view/index.html create mode 100644 src/story-edit-view/index.js create mode 100644 src/story-edit-view/index.less create mode 100644 src/story-edit-view/link-arrows/index.html create mode 100644 src/story-edit-view/link-arrows/index.js create mode 100644 src/story-edit-view/link-arrows/index.less create mode 100644 src/story-edit-view/link-arrows/link-arrow.js create mode 100644 src/story-edit-view/marquee-selector/index.html create mode 100644 src/story-edit-view/marquee-selector/index.js create mode 100644 src/story-edit-view/marquee-selector/index.less create mode 100644 src/story-edit-view/passage-item/index.html create mode 100644 src/story-edit-view/passage-item/index.js create mode 100644 src/story-edit-view/passage-item/index.less create mode 100644 src/story-edit-view/passage-item/passage-menu/index.html create mode 100644 src/story-edit-view/passage-item/passage-menu/index.js create mode 100644 src/story-edit-view/passage-item/passage-menu/index.less create mode 100644 src/story-edit-view/story-toolbar/index.html create mode 100644 src/story-edit-view/story-toolbar/index.js create mode 100644 src/story-edit-view/story-toolbar/index.less create mode 100644 src/story-edit-view/story-toolbar/story-menu/index.html create mode 100644 src/story-edit-view/story-toolbar/story-menu/index.js create mode 100644 src/story-edit-view/story-toolbar/story-search/index.html create mode 100644 src/story-edit-view/story-toolbar/story-search/index.js create mode 100644 src/story-edit-view/zoom-settings.js create mode 100644 src/story-edit-view/zoom-settings.spec.js create mode 100644 src/story-list-view/index.html create mode 100644 src/story-list-view/index.js create mode 100644 src/story-list-view/index.less create mode 100644 src/story-list-view/list-toolbar/index.html create mode 100644 src/story-list-view/list-toolbar/index.js create mode 100644 src/story-list-view/list-toolbar/theme-switcher.html create mode 100644 src/story-list-view/list-toolbar/theme-switcher.js create mode 100644 src/story-list-view/story-item/index.html create mode 100644 src/story-list-view/story-item/index.js create mode 100644 src/story-list-view/story-item/index.less create mode 100644 src/story-list-view/story-item/item-menu/index.html create mode 100644 src/story-list-view/story-item/item-menu/index.js create mode 100644 src/story-list-view/story-item/item-preview/index.html create mode 100644 src/story-list-view/story-item/item-preview/index.js create mode 100644 src/story-list-view/zoom-transition/index.js create mode 100644 src/story-list-view/zoom-transition/index.less create mode 100644 src/ui/badges.less create mode 100644 src/ui/buttons.less create mode 100644 src/ui/drop-down/index.html create mode 100644 src/ui/drop-down/index.js create mode 100644 src/ui/drop-down/index.less create mode 100644 src/ui/file-drag-n-drop/index.html create mode 100644 src/ui/file-drag-n-drop/index.js create mode 100644 src/ui/file-drag-n-drop/index.less create mode 100644 src/ui/forms.less create mode 100644 src/ui/gauge.less create mode 100644 src/ui/ie-mouse-event-polyfill.js create mode 100644 src/ui/index.js create mode 100644 src/ui/index.less create mode 100644 src/ui/menus.less create mode 100644 src/ui/modal-dialog/index.html create mode 100644 src/ui/modal-dialog/index.js create mode 100644 src/ui/modal-dialog/index.less create mode 100644 src/ui/notify/index.js create mode 100644 src/ui/notify/list.html create mode 100644 src/ui/notify/list.js create mode 100644 src/ui/notify/list.less create mode 100644 src/ui/quota-gauge/index.html create mode 100644 src/ui/quota-gauge/index.js create mode 100644 src/ui/quota-gauge/index.less create mode 100644 src/ui/replace.js create mode 100644 src/ui/tab-panel/index.html create mode 100644 src/ui/tab-panel/index.js create mode 100644 src/ui/tab-panel/item.js create mode 100644 src/ui/tables.less create mode 100644 src/ui/tags.less create mode 100644 src/ui/toolbar.less create mode 100644 src/vue/codemirror-theme.less create mode 100644 src/vue/codemirror.js create mode 100644 src/vue/codemirror.spec.js create mode 100644 src/vue/directives/mouse-scrolling.js create mode 100644 src/vue/directives/mouse-scrolling.less create mode 100644 src/vue/filters/locale.js create mode 100644 src/vue/filters/locale.spec.js create mode 100644 src/vue/index.less create mode 100644 src/vue/mixins/dom-events.js create mode 100644 src/vue/mixins/dom-events.spec.js create mode 100644 src/vue/mixins/mount-to.js create mode 100644 src/vue/mixins/mount-to.spec.js create mode 100644 src/vue/mixins/thenable.js create mode 100644 src/vue/mixins/thenable.spec.js create mode 100644 src/vue/transitions.less create mode 100644 src/welcome/img/welcome-alpha.png create mode 100644 src/welcome/img/welcome-help.png create mode 100644 src/welcome/img/welcome-logo.png create mode 100644 src/welcome/img/welcome-save.png create mode 100644 src/welcome/img/welcome-thanks.png create mode 100644 src/welcome/index.html create mode 100644 src/welcome/index.js create mode 100644 src/welcome/index.less create mode 100644 src/welcome/index.spec.js create mode 100644 story-formats/harlowe-1.2.4/format.js create mode 100644 story-formats/harlowe-1.2.4/icon.svg create mode 100644 story-formats/harlowe-2.0.1/format.js create mode 100644 story-formats/harlowe-2.0.1/icon.svg create mode 100644 story-formats/paperthin-1.0.0/format.js create mode 100644 story-formats/paperthin-1.0.0/icon.svg create mode 100644 story-formats/snowman-1.3.0/format.js create mode 100644 story-formats/snowman-1.3.0/icon.svg create mode 100755 story-formats/sugarcube-1.0.35/LICENSE create mode 100755 story-formats/sugarcube-1.0.35/format.js create mode 100755 story-formats/sugarcube-1.0.35/icon.svg create mode 100644 story-formats/sugarcube-2.18.0/LICENSE create mode 100644 story-formats/sugarcube-2.18.0/format.js create mode 100644 story-formats/sugarcube-2.18.0/icon.svg create mode 100644 webpack.config.cdn.js create mode 100644 webpack.config.js create mode 100644 webpack.config.release.js create mode 100644 webpack.config.test.js create mode 100644 webpack/po-webpack-plugin.js create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..ed741e651 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = tab +trim_trailing_whitespace = true diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..889f827ca --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +*.spec.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 000000000..007a1c199 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,48 @@ +{ + "rules": { + "brace-style": [ + 2, + "stroustrup", + { "allowSingleLine": true } + ], + "comma-dangle": 0, + "curly": [2, "all"], + "indent": [ + 2, + "tab", + { "SwitchCase": 1 } + ], + "max-len": [ + 2, + 80, + { + "ignoreUrls": true, + "ignoreStrings": true, + "ignoreTemplateLiterals": true + } + ], + "newline-after-var": [2, "always"], + "no-console": [ + 2, + { "allow": ["warn"] } + ], + "no-extra-semi": 0, + "no-mixed-spaces-and-tabs": 0, + "no-trailing-spaces": [ + 2, + { "skipBlankLines": true } + ], + "quote-props": 0, + "semi": [ + 2, + "always" + ], + }, + "env": { + "browser": true, + "es6": true, + "commonjs": true, + "node": true + }, + "extends": "eslint:recommended" +} diff --git a/.hgignore b/.hgignore new file mode 100644 index 000000000..1656d0fd4 --- /dev/null +++ b/.hgignore @@ -0,0 +1,13 @@ +syntax: glob +*.swp +node_modules/* +dist/* +doc/* +.tmp/* +*.DS_Store +.idea +cache +dist-apps +build +nw-cache +nwbuilder-cache \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..9403c204a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,16 @@ +# Contributing + +Please give [Chris a holler on Bitbucket](https://bitbucket.org/klembot) if you +have a feature you would like to add or a change you'd like to make to existing +functionality, so we can come to agreement on the change itself before you +spend time writing code. Bugfixes don't require discussion, though -- we can +hash things out in the comments of your pull request as needed. + +Pull requests should be accompanied by [Selenium IDE +tests](http://docs.seleniumhq.org/projects/ide/) where possible; there are some +things related to uploaded or downloaded files that Selenium isn't able to +test. If you're adding a new JavaScript file, please make sure it has ["use +strict";]() at the top, and passes the `grunt jslint` task, and that methods +and classes are documented properly (we use +[YUIDoc](https://yui.github.io/yuidoc/syntax/) -- use `grunt doc` to regenerate +documentation). diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..818433ecc --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 000000000..9fddd4c34 --- /dev/null +++ b/README.md @@ -0,0 +1,82 @@ +twinejs +------- + +by Chris Klimas, Leon Arnott, Daithi O Crualaoich, Ingrid Cheung, Thomas Michael +Edwards, Micah Fitch, Juhana Leinonen, Michael Savich, and Ross Smith + +### SYNOPSIS + +This is a port of Twine to a local browser-based app. See +[twinery.org](https://twinery.org) for more info. + +The story formats in minified format under `story-formats/` exist in separate +repositories: + +* [Harlowe](https://bitbucket.org/_L_/harlowe) +* [Paperthin](https://bitbucket.org/klembot/paperthin) +* [Snowman](https://bitbucket.org/klembot/snowman-2) +* [SugarCube](https://bitbucket.org/tmedwards/sugarcube) + +### A NOTE ABOUT YARN + +Any time you read `npm` below, you can also use `yarn` ([more +information](https://yarnpkg.com/)). Using `yarn` is a little more foolproof, as +it ensures that everyone is using the exact same version of dependencies. + +### INSTALL + +Run `npm install` at the top level of the directory to install all goodies. + +### BUILDING + +Run `npm start` to begin serving a development version of Twine to +http://localhost:8080. This server will automatically update with changes you +make. You can also create a dev build at `build/` with `npm run build`. + +`npm run lint` and `npm test` will lint and test the source code respectively. + +`npm run pot` will create a POT template file for localization at +`src/locale/po/template.pot`. See Localization below for more information. + +`npm run nw` will build NW.js-based apps in `dist/nw`. In order to build Windows +apps on OS X or Linux, you will need to have [Wine](https://www.winehq.org/) +and [makensis](http://nsis.sourceforge.net/) installed. + +To build distributable versions of Twine, use `npm run package`. This will +create ZIP archives and Windows installer packages under `dist/uploads`. An +additional file named `2.json` is created under `dist/`. This contains +information relevant to the autoupdater process, and is currently posted to +http://twinery.org/latestversion/2.json. + +`npm run clean` will delete existing files in `build/` and `dist/`. + +### LOCALIZATION + +Would you like to help localize Twine for another language? Awesome! You don't +need to know JavaScript to do so. Here's how it works: + +1. Download +[template.pot](https://bitbucket.org/klembot/twinejs/raw/4b64592fd47dd6678d9d0ebb0f07067f1bfaeabb/locale/po/template.pot) +from the repository. + +2. Use a translation application like [Poedit](http://poedit.net/) to create a +.po file with the source text translated. If you are using Poedit, get started +by choosing **New from POT/PO File** from the **File** menu. Make sure to name +your po file according to the [IETF locale naming +convention](https://en.wikipedia.org/wiki/IETF_language_tag) -- Poedit can help +suggest that as well. For example, a generic French translation should be named +`fr.po`, while an Australian English one would be named `en-au.po`. + +3. Finally, two other things are needed: an SVG-formatted image of the flag +that should be associated with your language, and what native speakers call the +language you are localizing to (e.g. Français for French speakers). +[Wikimedia +Commons](https://commons.wikimedia.org/wiki/Category:SVG_flags_by_country) is +your best bet for nice-looking SVG flags. Obviously, whatever image you provide +must either be in the public domain or otherwise OK to use in Twine without any +compensation. + +4. If you're comfortable using Mercurial, then you can open a pull request to +have your localization added. Please place it in the `src/locale/po` directory. If +you aren't, you can instead open a bug tracker issue and attach your PO file, +flag image, and language name and we'll take it from there. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..47541a6fc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17672 @@ +{ + "name": "Twine", + "version": "2.2.0-beta1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/node": { + "version": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha1-9hjxGpRPahjZK1xHIChyij49S2Y=", + "dev": true + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "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 + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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" + } + }, + "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 + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "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.2" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "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 + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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 + } + } + }, + "babel-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "dev": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + } + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "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.26.0", + "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-regenerator": "6.26.0" + }, + "dependencies": { + "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 + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-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.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "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.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-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.26.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.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "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.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.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.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-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.26.0", + "babel-types": "6.26.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.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-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.26.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.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.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.26.0", + "babel-template": "6.26.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.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-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.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-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.26.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.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "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" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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 + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "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.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "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.3", + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + } + } + }, + "base64-font-loader": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/base64-font-loader/-/base64-font-loader-0.0.4.tgz", + "integrity": "sha1-NE7W1+PElpQzZB9nuw2vVJMguCQ=", + "dev": true, + "requires": { + "loader-utils": "0.2.17" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "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 + } + } + }, + "blob-polyfill": { + "version": "1.0.20150320", + "resolved": "https://registry.npmjs.org/blob-polyfill/-/blob-polyfill-1.0.20150320.tgz", + "integrity": "sha1-A2kt1oIFae8lqHYy+mGclR1XSNo=" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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 + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "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 + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "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.17" + } + } + } + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "browser-saveas": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-saveas/-/browser-saveas-1.0.1.tgz", + "integrity": "sha1-H5HL9aaFpvpCS/jgG6f6mCXjtek=" + }, + "build": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz", + "integrity": "sha1-cH/gJv/O3crL/c3zVur9pk8VEEY=", + "dev": true, + "requires": { + "cssmin": "0.3.2", + "jsmin": "1.0.1", + "jxLoader": "0.1.1", + "moo-server": "1.3.0", + "promised-io": "0.3.5", + "timespan": "2.3.0", + "uglify-js": "1.3.5", + "walker": "1.0.7", + "winston": "2.4.0", + "wrench": "1.3.9" + }, + "dependencies": { + "uglify-js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz", + "integrity": "sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0=", + "dev": true + } + } + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "deep-eql": "0.1.3", + "type-detect": "1.0.0" + }, + "dependencies": { + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + } + } + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.4", + "parse5": "3.0.3" + }, + "dependencies": { + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "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" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "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" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz" + } + } + } + }, + "chmodr": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chmodr/-/chmodr-1.0.2.tgz", + "integrity": "sha1-BGYrky0PAuxm3qorDqQoEZaOPrk=", + "dev": true + }, + "codemirror": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.32.0.tgz", + "integrity": "sha512-95OxAlYiigW0g4n4ixFdavG07clJGILp3MvHh2pKR3FvyrTuHHvqtKSVbrV3/Jz6o0YqGvyCDLDTbH4h6ciaSw==" + }, + "copy-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-cL/Wl3Y1QmmKThl/mWeGB+HH3YH+25tn8nhqEGsZda4Yn7GqGnDZ+TbeKJ7A6zvrxyNhhuviYAxn/tCyyAqh8Q==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "glob": "7.1.2", + "is-glob": "4.0.0", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "minimatch": "3.0.4" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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 + }, + "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" + } + }, + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "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 + }, + "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" + } + }, + "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 + } + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "css-loader": { + "version": "0.28.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", + "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.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.18", + "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": "2.0.0" + }, + "dependencies": { + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "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 + }, + "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" + } + }, + "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.30000778", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "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 + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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.30000778", + "electron-to-chromium": "1.3.27" + } + }, + "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.30000778", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30000778", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000778.tgz", + "integrity": "sha1-Fnxg6VQqKqYFN8RG+ziB2FOjByo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "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.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "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.3" + } + }, + "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 + }, + "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-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" + } + }, + "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.18", + "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.3", + "source-map": "0.5.7" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", + "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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 + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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.1" + } + }, + "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 + }, + "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 + }, + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "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-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-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" + } + }, + "js-base64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.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" + } + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "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.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 + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "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 + }, + "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" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "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" + } + } + } + }, + "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.18", + "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.18", + "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.18", + "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.18" + } + }, + "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.18" + } + }, + "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.18" + } + }, + "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.18" + } + }, + "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.18", + "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.18", + "uniqid": "4.1.1" + } + }, + "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.18", + "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.18" + } + }, + "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.18", + "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.18", + "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.18", + "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.18", + "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.18", + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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.18" + } + }, + "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.18", + "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.18", + "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.18", + "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.18" + } + }, + "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.18", + "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.18", + "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.18", + "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.18", + "uniqs": "2.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "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" + } + }, + "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" + } + }, + "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" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "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.3", + "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" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "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 + }, + "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" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "svgo": { + "version": "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.4", + "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" + } + }, + "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 + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "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 + } + } + }, + "cssmin": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz", + "integrity": "sha1-3c5MVHtRCuDVlKjx+/iq+OLFwA0=", + "dev": true + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz", + "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==", + "dev": true + }, + "ejs": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", + "dev": true + }, + "ejs-loader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ejs-loader/-/ejs-loader-0.3.0.tgz", + "integrity": "sha1-aHNv3CMaSQ7fkZpkRq2dkFWlh74=", + "dev": true, + "requires": { + "loader-utils": "0.2.17", + "lodash": "3.10.1" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "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 + } + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + }, + "dependencies": { + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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.1" + } + } + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "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.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.9", + "doctrine": "2.0.2", + "escope": "3.6.0", + "espree": "3.5.2", + "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.7", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.1", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.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": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "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 + } + } + }, + "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 + }, + "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-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 + }, + "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" + } + }, + "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 + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "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 + }, + "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" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "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-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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 + }, + "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.3", + "typedarray": "0.0.6" + } + }, + "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 + }, + "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.37" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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 + }, + "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.2" + } + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "es5-ext": { + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "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.37", + "es6-iterator": "2.0.3", + "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.37", + "es6-iterator": "2.0.3", + "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.37" + } + }, + "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.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "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" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.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" + } + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "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.37" + } + }, + "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 + }, + "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 + }, + "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.3.0", + "object-assign": "4.1.1" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "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" + } + }, + "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" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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.2.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.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "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.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-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" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "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 + }, + "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 + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "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 + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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" + } + }, + "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.5.0" + } + }, + "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" + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "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 + }, + "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" + } + }, + "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 + }, + "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.1.0", + "rechoir": "0.6.2" + } + }, + "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 + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "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" + } + }, + "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-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 + }, + "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 + }, + "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.1" + }, + "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.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "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" + } + } + } + }, + "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 + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": 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" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "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-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "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=", + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.4" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "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=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "5.5.1" + } + }, + "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==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + } + } + } + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fastclick": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz", + "integrity": "sha1-FhYlsnsaWAZAWTa9qaLBkm0Gvmo=" + }, + "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": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + } + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "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" + } + }, + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.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" + } + }, + "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 + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "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 + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, + "html-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz", + "integrity": "sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA==", + "dev": true, + "requires": { + "es6-templates": "0.2.3", + "fastparse": "1.1.1", + "html-minifier": "3.5.7", + "loader-utils": "1.1.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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.2", + "upper-case": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "dev": true, + "requires": { + "recast": "0.11.23", + "through": "2.3.8" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "html-minifier": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", + "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.2.1" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "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" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "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 + }, + "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.2" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "uglify-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.1.tgz", + "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==", + "dev": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "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 + } + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.7", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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 + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "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.2", + "upper-case": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "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 + }, + "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" + } + }, + "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 + }, + "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 + } + } + }, + "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.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.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" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "html-minifier": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", + "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.2.1" + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + } + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "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 + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "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" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "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" + } + }, + "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 + }, + "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.2" + } + }, + "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" + } + }, + "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" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "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 + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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 + }, + "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" + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "dev": true + }, + "uglify-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.1.tgz", + "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==", + "dev": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "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 + } + } + }, + "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.3" + }, + "dependencies": { + "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 + }, + "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 + } + } + }, + "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" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "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 + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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" + } + }, + "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 + }, + "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" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + } + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + }, + "dependencies": { + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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.1" + } + } + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "jed": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=" + }, + "jsdom": { + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", + "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "5.2.1", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.0", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "3.0.3", + "pn": "1.0.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.3.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true, + "requires": { + "acorn": "5.2.1" + } + }, + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "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 + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "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" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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" + } + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "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 + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "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 + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "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" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.1", + "har-schema": "2.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "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 + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": 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-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 + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "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" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "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" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", + "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" + } + }, + "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 + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + }, + "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" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "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" + } + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz", + "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + } + } + }, + "jsdom-global": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", + "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", + "dev": true + }, + "jsmin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", + "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "jsonp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", + "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=", + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "jszip": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", + "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "requires": { + "pako": "1.0.6" + }, + "dependencies": { + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + } + } + }, + "jxLoader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz", + "integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=", + "dev": true, + "requires": { + "js-yaml": "0.3.7", + "moo-server": "1.3.0", + "promised-io": "0.3.5", + "walker": "1.0.7" + }, + "dependencies": { + "js-yaml": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", + "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=", + "dev": true + } + } + }, + "karma-webpack": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.6.tgz", + "integrity": "sha512-dcKvtiW00caWrceCKwIvlKwHQu8zI+e3zWZYDLk7kr7nl1lYSp8uP+8fQoBvRCnZiPUGuwU5Psm20NbEIn7KlA==", + "dev": true, + "requires": { + "async": "0.9.2", + "loader-utils": "0.2.17", + "lodash": "3.10.1", + "source-map": "0.5.7", + "webpack-dev-middleware": "1.12.2" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "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.3" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "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 + }, + "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 + }, + "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 + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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" + } + }, + "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 + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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" + } + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "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 + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } + } + } + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, + "less": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "dev": true, + "requires": { + "errno": "0.1.4", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.81.0", + "source-map": "0.5.7" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true + }, + "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, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": 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" + } + }, + "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" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": 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" + } + }, + "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, + "optional": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": 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, + "optional": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "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" + } + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "optional": true, + "requires": { + "prr": "0.0.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": 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, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": 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, + "optional": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "optional": true + }, + "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, + "optional": 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, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "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", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "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, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": 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, + "optional": 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, + "optional": 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, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "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, + "optional": true + }, + "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, + "optional": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "2.0.6" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": 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, + "optional": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "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.17", + "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.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "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 + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "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", + "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, + "optional": true + } + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": 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 + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true, + "optional": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + } + } + }, + "less-loader": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz", + "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=", + "dev": true, + "requires": { + "clone": "2.1.1", + "loader-utils": "1.1.0", + "pify": "2.3.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "less-plugin-autoprefix": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/less-plugin-autoprefix/-/less-plugin-autoprefix-1.5.1.tgz", + "integrity": "sha1-vKTlsuSMrGlloXgxQuOzLDwAzgc=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "postcss": "5.2.18" + }, + "dependencies": { + "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 + }, + "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.30000778", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "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.30000778", + "electron-to-chromium": "1.3.27" + } + }, + "caniuse-db": { + "version": "1.0.30000778", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000778.tgz", + "integrity": "sha1-Fnxg6VQqKqYFN8RG+ziB2FOjByo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "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 + } + } + }, + "electron-to-chromium": { + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", + "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", + "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 + }, + "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 + }, + "js-base64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", + "dev": true + }, + "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 + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "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 + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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" + } + }, + "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" + } + } + } + }, + "less-plugin-clean-css": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz", + "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=", + "dev": true, + "requires": { + "clean-css": "3.4.28" + }, + "dependencies": { + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "dev": true, + "requires": { + "commander": "2.8.1", + "source-map": "0.4.4" + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "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 + }, + "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" + } + } + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=" + }, + "lodash.without": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", + "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=" + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.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" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "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" + } + }, + "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 + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "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 + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "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-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "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 + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "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._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "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" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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" + } + }, + "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 + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, + "mocha-webpack": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mocha-webpack/-/mocha-webpack-0.7.0.tgz", + "integrity": "sha1-065ax93PKc+UfosO7Xc/pCKODM4=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "fs-extra": "0.30.0", + "glob-parent": "2.0.0", + "interpret": "1.1.0", + "invariant": "2.2.2", + "is-glob": "2.0.1", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "normalize-path": "2.1.1", + "object-hash": "1.2.0", + "webpack-info-plugin": "0.1.0", + "webpack-sources": "0.1.5", + "yargs": "4.8.1" + }, + "dependencies": { + "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.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "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 + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "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" + } + }, + "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 + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "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" + } + }, + "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 + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "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.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 + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "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 + }, + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-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=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "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" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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.2.0", + "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.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "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.2" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", + "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "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" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "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" + } + }, + "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-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" + } + }, + "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" + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "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-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 + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "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 + }, + "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.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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 + }, + "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" + } + }, + "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": "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" + } + }, + "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 + }, + "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" + } + }, + "webpack-info-plugin": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/webpack-info-plugin/-/webpack-info-plugin-0.1.0.tgz", + "integrity": "sha1-3/56qI/LlsWcxFCXZCHq+YzbeQE=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "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.7" + } + }, + "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 + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "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" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "lodash.assign": "4.2.0", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "window-size": "0.2.0", + "y18n": "3.2.1", + "yargs-parser": "2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "lodash.assign": "4.2.0" + } + } + } + }, + "mock-local-storage": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/mock-local-storage/-/mock-local-storage-1.0.5.tgz", + "integrity": "sha1-iZ/zAAJ87+1HgW5txTm7BZ/M5Ik=", + "dev": true, + "requires": { + "core-js": "0.8.4", + "global": "4.3.2" + }, + "dependencies": { + "core-js": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.8.4.tgz", + "integrity": "sha1-wiZl8eDRucPF4bCNq9HxCGleT88=", + "dev": true + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + } + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "0.1.1" + } + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "moment": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.3.tgz", + "integrity": "sha1-vbmdJw1tf9p4zA+6zoVeJ/59pp8=" + }, + "moo-server": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz", + "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE=", + "dev": true + }, + "null-loader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", + "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=", + "dev": true + }, + "nw-builder": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/nw-builder/-/nw-builder-3.5.1.tgz", + "integrity": "sha512-+GHIPyK5SsShWvicNEW5x0IHXUYlrqBsKgWf8FPIw5slLI3lJRfdCGi+9U0FeSdKYUpjwXOa18ttmRSPA7S0Cg==", + "dev": true, + "requires": { + "archiver": "1.3.0", + "boxen": "1.3.0", + "chalk": "1.1.3", + "deprecate": "1.0.0", + "extract-zip": "1.6.6", + "graceful-fs-extra": "2.0.0", + "graceful-ncp": "3.0.0", + "inherits": "2.0.3", + "lazy-req": "2.0.0", + "lodash": "4.17.4", + "optimist": "0.6.1", + "platform-overrides": "1.0.1", + "plist": "2.1.0", + "progress": "1.1.8", + "rcedit": "0.9.0", + "recursive-readdir-sync": "1.0.6", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "2.3.2", + "simple-glob": "0.1.0", + "tar-fs": "1.16.0", + "temp": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", + "thenify": "3.3.0", + "update-notifier": "1.0.3", + "winresourcer": "0.9.0" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "async": "2.6.0", + "buffer-crc32": "0.2.13", + "glob": "7.1.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3", + "tar-stream": "1.5.5", + "walkdir": "0.0.11", + "zip-stream": "1.2.0" + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lazystream": "1.0.0", + "lodash": "4.17.4", + "normalize-path": "2.1.1", + "readable-stream": "2.3.3" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "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.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "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 + }, + "base64-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", + "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", + "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" + } + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "ansi-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 + }, + "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" + } + }, + "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 + } + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "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" + } + }, + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "crc32-stream": "2.0.0", + "normalize-path": "2.1.1", + "readable-stream": "2.3.3" + } + }, + "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.3", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true, + "requires": { + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.0", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "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 + }, + "crc": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", + "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", + "dev": true + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "3.5.0", + "readable-stream": "2.3.3" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "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" + } + }, + "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 + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "deprecate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", + "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=", + "dev": true + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "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" + } + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true, + "requires": { + "once": "1.4.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" + } + }, + "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 + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "requires": { + "is-object": "1.0.1", + "merge-descriptors": "1.0.1" + } + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.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.17" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "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.2" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "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 + } + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.3", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-fs-extra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs-extra/-/graceful-fs-extra-2.0.0.tgz", + "integrity": "sha1-fR5X/Mcm4rDMcH14tKzqVC+pvk4=", + "dev": true, + "requires": { + "fs-extra": "0.30.0", + "graceful-ncp": "3.0.0", + "proxyquire": "1.8.0" + } + }, + "graceful-ncp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/graceful-ncp/-/graceful-ncp-3.0.0.tgz", + "integrity": "sha1-WAXqJVhe+YTMyqgIajxTDuQSioo=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "ncp": "2.0.0", + "proxyquire": "1.8.0" + } + }, + "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-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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "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" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "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-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "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 + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": 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-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 + }, + "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 + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "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" + } + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "dev": true, + "requires": { + "package-json": "2.4.0" + } + }, + "lazy-req": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz", + "integrity": "sha1-yUUKNj7N2i5vDHATKtTzf48G8rQ=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "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" + } + }, + "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 + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + } + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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 + }, + "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" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true, + "requires": { + "got": "5.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "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" + } + }, + "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-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "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" + } + }, + "platform-overrides": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/platform-overrides/-/platform-overrides-1.0.1.tgz", + "integrity": "sha1-kUzheydnF0YdHPcdj4g3qvv7c58=", + "dev": true, + "requires": { + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "plist": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", + "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", + "dev": true, + "requires": { + "base64-js": "1.2.0", + "xmlbuilder": "8.2.2", + "xmldom": "0.1.27" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "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 + }, + "proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "dev": true, + "requires": { + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1", + "resolve": "1.1.7" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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" + } + }, + "recursive-readdir-sync": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", + "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=", + "dev": true + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true, + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.2" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "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.17", + "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.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "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 + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "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 + }, + "simple-glob": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-glob/-/simple-glob-0.1.0.tgz", + "integrity": "sha1-9ehPuGkttzDqhlTU2kLRte+MFFY=", + "dev": true, + "requires": { + "glob": "3.2.11", + "lodash": "2.4.2", + "minimatch": "0.2.14" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + }, + "dependencies": { + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + } + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "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" + } + }, + "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 + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-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 + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "tar-fs": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz", + "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", + "dev": true, + "requires": { + "chownr": "1.0.1", + "mkdirp": "0.5.1", + "pump": "1.0.3", + "tar-stream": "1.5.5" + }, + "dependencies": { + "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" + } + } + } + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.0", + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "temp": { + "version": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", + "dev": true, + "requires": { + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "1.3.0" + } + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "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 + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", + "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "dev": true, + "requires": { + "boxen": "0.6.0", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "lazy-req": "1.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "boxen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", + "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", + "dev": true, + "requires": { + "ansi-align": "1.1.0", + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "winresourcer": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/winresourcer/-/winresourcer-0.9.0.tgz", + "integrity": "sha1-CvyjDzxudFgFjSigtnPJ3aYiubU=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", + "dev": true + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + }, + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "compress-commons": "1.2.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3" + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + }, + "dependencies": { + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "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=" + } + } + }, + "po2json": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", + "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", + "dev": true, + "requires": { + "gettext-parser": "1.1.0", + "nomnom": "1.8.1" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "gettext-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", + "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", + "dev": true, + "requires": { + "encoding": "0.1.12" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "0.4.0", + "underscore": "1.6.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "pofile": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.10.tgz", + "integrity": "sha512-bkQlDA9YYNaZGLLrxBoQgydzjc2tasbUfxa94/kx2FO/FCiHAJG6B40Jr3fWQgDC7kr+a9q7q5x7449B91CF0A==", + "dev": true + }, + "promised-io": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz", + "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y=", + "dev": true + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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 + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + } + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "rcedit": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-0.9.0.tgz", + "integrity": "sha1-ORDfVzRTmeKwMl9KUZAH+J5V7xw=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "scroll": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/scroll/-/scroll-2.0.1.tgz", + "integrity": "sha1-tMfSfovPOuiligQvJyaK4/VfnM0=", + "requires": { + "rafl": "1.2.2" + }, + "dependencies": { + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + } + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "0.1.1" + } + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + }, + "rafl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rafl/-/rafl-1.2.2.tgz", + "integrity": "sha1-/pMPdYIRAg1H44gV9Rlqi+QVB0A=", + "requires": { + "global": "4.3.2" + } + } + } + }, + "segseg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/segseg/-/segseg-0.2.2.tgz", + "integrity": "sha1-liCsjWDS8JjIdLlFyRzd+v/j49c=" + }, + "semver-utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.1.tgz", + "integrity": "sha1-J9kv7DTSfPpCcH07QNAlrphV8t8=" + }, + "sinon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.3.0.tgz", + "integrity": "sha512-/flfGfIxIRXSvZBHJzIf3iAyGYkmMQq6SQjA0cx9SOuVuq+4ZPPO4LJtH1Ce0Lznax1KSG1U6Dad85wIcSW19w==", + "dev": true, + "requires": { + "build": "0.1.4", + "diff": "3.4.0", + "formatio": "1.2.0", + "lodash.get": "4.4.2", + "lolex": "2.3.1", + "native-promise-only": "0.8.1", + "nise": "1.2.0", + "path-to-regexp": "1.7.0", + "samsam": "1.3.0", + "text-encoding": "0.6.4", + "type-detect": "4.0.5" + }, + "dependencies": { + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true + }, + "lolex": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.1.tgz", + "integrity": "sha512-mQuW55GhduF3ppo+ZRUTz1PRjEh1hS5BbqU7d8D0ez2OKxHDod7StPPeAVKisZR5aLkHZjdGWSL42LSONUJsZw==", + "dev": true + }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "dev": true + }, + "nise": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", + "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", + "dev": true, + "requires": { + "formatio": "1.2.0", + "just-extend": "1.1.27", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" + }, + "dependencies": { + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "dev": true + } + } + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + }, + "samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "dev": true + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, + "type-detect": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", + "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", + "dev": true + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "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": { + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "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 + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "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.5.1" + } + } + } + }, + "tether-drop": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tether-drop/-/tether-drop-1.4.2.tgz", + "integrity": "sha1-KOJAzOB39K4djlmQoDtx4M1vv+w=", + "requires": { + "tether": "1.4.3" + }, + "dependencies": { + "tether": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.3.tgz", + "integrity": "sha512-YCfE/Ym9MpZpzUmzbek7MiLEyTofxx2YS0rJfSOUXX0aZtfQgxcgw7/Re2oGJUsREWZtEF0DzBKCjqH+DzgL6A==" + } + } + }, + "timespan": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", + "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", + "dev": true + }, + "tiny-uuid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tiny-uuid/-/tiny-uuid-1.0.0.tgz", + "integrity": "sha1-rqNKL4nHtxQ16zivMTmqOgJTUco=" + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "unfetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-3.0.0.tgz", + "integrity": "sha1-jR4FE6Ts0OX/LUGmund3Gq6LZII=" + }, + "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.6" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "mime": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", + "dev": true + } + } + }, + "vue": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/vue/-/vue-1.0.28.tgz", + "integrity": "sha1-7S/weyAL3hXIepDvhyfO6n04Vn0=", + "requires": { + "envify": "3.4.1" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base62": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.1.tgz", + "integrity": "sha512-xVtfFHNPUzpCNHygpXFGMlDk3saxXLQcOOQzAAk6ibvlAHgT6WKXLv9rMFhcyEK1n9LuDmp/LxyGW/Fm9L8++g==" + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "requires": { + "commander": "2.12.2", + "detective": "4.7.0", + "glob": "5.0.15", + "graceful-fs": "4.1.11", + "iconv-lite": "0.4.19", + "mkdirp": "0.5.1", + "private": "0.1.8", + "q": "1.5.1", + "recast": "0.11.23" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "detective": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.0.tgz", + "integrity": "sha512-4mBqSEdMfBpRAo/DQZnTcAXenpiSIJmVKbCMSotS+SFWWcrP/CKM6iBRPdTiEO+wZhlfEsoZlGqpG6ycl5vTqw==", + "requires": { + "acorn": "5.2.1", + "defined": "1.0.0" + } + }, + "envify": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", + "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", + "requires": { + "jstransform": "11.0.3", + "through": "2.3.8" + } + }, + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=" + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "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=" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "jstransform": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", + "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", + "requires": { + "base62": "1.2.1", + "commoner": "0.10.8", + "esprima-fb": "15001.1.0-dev-harmony-fb", + "object-assign": "2.1.1", + "source-map": "0.4.4" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "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=" + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } + }, + "vue-router": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-0.7.13.tgz", + "integrity": "sha1-4fDwQqwlYVBLJ/Rvbc0XuDKxyNE=" + }, + "vuex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-1.0.1.tgz", + "integrity": "sha1-uTw0FbXoblRmAWShoX4rN2x1n+s=" + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "webpack": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.1", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "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 + } + } + }, + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "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" + } + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "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 + }, + "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 + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "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=", + "dev": true, + "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.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "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.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "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.4", + "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.8", + "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.8", + "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.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "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 + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "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" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "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" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "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" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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 + }, + "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 + }, + "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" + } + }, + "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 + }, + "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 + }, + "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.8", + "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.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "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.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.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.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" + } + }, + "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.37" + } + }, + "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 + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "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" + } + }, + "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.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "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 + }, + "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.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "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 + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "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" + } + }, + "es5-ext": { + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "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.37", + "es6-iterator": "2.0.3", + "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.37", + "es6-iterator": "2.0.3", + "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.37" + } + }, + "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.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "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" + } + }, + "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" + } + }, + "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.37" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "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, + "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 + }, + "detect-libc": { + "version": "1.0.2", + "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, + "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.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "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, + "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 + } + } + }, + "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-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "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.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "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.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "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 + }, + "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.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "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 + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "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" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "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" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.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" + } + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "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.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "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" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "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.9" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "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 + }, + "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.8", + "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 + }, + "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==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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.3", + "set-immediate-shim": "1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "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-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 + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "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 + }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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 + }, + "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.3" + } + }, + "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.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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 + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "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-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "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 + }, + "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 + }, + "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.7", + "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" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + }, + "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 + } + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "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": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.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 + }, + "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" + }, + "dependencies": { + "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" + } + } + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.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 + } + } + } + } + }, + "webpack-dev-server": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.5.tgz", + "integrity": "sha512-o0lS6enIxyOPiRJTh8vcgK5TsGNTn7lH1q/pNniAgs46mCE8sQYeqv7Y/oAIh/+u4kiBsFizLJo5EWC+ezz6FQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "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 + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "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": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.1", + "multicast-dns-service-types": "1.1.0" + } + }, + "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=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "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 + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "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" + } + }, + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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 + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "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 + }, + "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 + }, + "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" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", + "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "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" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "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, + "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 + }, + "detect-libc": { + "version": "1.0.2", + "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, + "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.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "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, + "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 + } + } + }, + "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 + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "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-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" + } + } + } + }, + "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" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "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.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-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.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-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=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "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": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "loglevel": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", + "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", + "dev": true + }, + "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" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "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.3" + } + }, + "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.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "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=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", + "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", + "dev": true, + "requires": { + "dns-packet": "1.2.2", + "thunky": "0.1.0" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "node-forge": { + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", + "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, + "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" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "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.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "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-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" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "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" + } + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "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 + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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.3", + "set-immediate-shim": "1.0.1" + } + }, + "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" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "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 + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", + "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "dev": true, + "requires": { + "node-forge": "0.6.33" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "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 + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "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 + }, + "sockjs": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "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 + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "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" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "thunky": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "dev": true + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "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.17" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "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 + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "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.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + } + } + }, + "webpack-node-externals": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz", + "integrity": "sha1-Iyxi7GCSsQBjWj0p2DwXRxKN+b0=", + "dev": true + }, + "winston": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz", + "integrity": "sha1-gIBQuT1SZh7Z+2wms/DIJnCLCu4=", + "dev": true, + "requires": { + "async": "1.0.0", + "colors": "1.0.3", + "cycle": "1.0.3", + "eyes": "0.1.8", + "isstream": "0.1.2", + "stack-trace": "0.0.10" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "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 + } + } + }, + "wrench": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz", + "integrity": "sha1-bxPsNRRTF+spLKX2UxORskQRFBE=", + "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": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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 + }, + "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" + } + }, + "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 + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "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" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "get-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 + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "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 + }, + "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-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-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-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "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" + } + }, + "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" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "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-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 + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "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 + }, + "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 + }, + "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" + } + }, + "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": "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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs-parser": { + "version": "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" + } + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..1ac75874b --- /dev/null +++ b/package.json @@ -0,0 +1,107 @@ +{ + "name": "Twine", + "version": "2.2.0-beta1", + "author": "Chris Klimas ", + "description": "a GUI for creating nonlinear stories", + "license": "GPL-3.0", + "repository": { + "type": "hg", + "url": "https://bitbucket.org/klembot/twinejs" + }, + "main": "index.html", + "dom_storage_quota": 1000000, + "window": { + "show": true, + "width": 1024, + "height": 600, + "icon": "rsrc/img/logo.ico" + }, + "scripts": { + "build": "webpack -d --progress", + "build:release": "webpack -p --progress --config webpack.config.release.js && webpack -p --progress --config webpack.config.cdn.js", + "clean": "rimraf build/ dist/", + "lint": "eslint src/ || exit 0", + "lint:noisy": "eslint src/", + "nw": "node scripts/build-nw.js", + "package": "npm run build:release && npm run nw && node scripts/package.js", + "pot": "node scripts/extract-pot.js", + "start": "webpack-dev-server --inline --hot", + "test": "mocha-webpack --webpack-config webpack.config.test.js -r \"jsdom-global/register\" -r mock-local-storage \"src/**/*.spec.js\"", + "watch": "webpack -d --progress --watch" + }, + "dependencies": { + "blob-polyfill": "^1.0.20150320", + "browser-saveas": "^1.0.0", + "codemirror": "^5.5.0", + "core-js": "^2.4.0", + "fastclick": "^1.0.6", + "font-awesome": "^4.3.0", + "jed": "^1.1.0", + "jsonp": "^0.2.1", + "jszip": "^2.5.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.uniq": "^4.5.0", + "lodash.values": "^4.3.0", + "lodash.without": "^4.4.0", + "mkdirp": "^0.5.1", + "moment": "^2.10.3", + "osenv": "^0.1.3", + "scroll": "^2.0.0", + "segseg": "^0.2.2", + "semver-utils": "^1.1.1", + "tether-drop": "^1.4.2", + "tiny-uuid": "^1.0.0", + "unfetch": "^3.0.0", + "vue": "^1.0.18", + "vue-router": "^0.7.13", + "vuex": "^1.0.0" + }, + "devDependencies": { + "acorn": "^4.0.3", + "babel-core": "^6.26.0", + "babel-loader": "^7.1.0", + "babel-preset-es2015": "^6.18.0", + "base64-font-loader": "0.0.4", + "chai": "^3.5.0", + "cheerio": "^1.0.0-rc.2", + "chmodr": "^1.0.2", + "copy-webpack-plugin": "^4.0.1", + "css-loader": "^0.28.7", + "ejs": "^2.5.2", + "ejs-loader": "^0.3.0", + "eslint": "^3.10.2", + "estraverse": "^4.2.0", + "extract-text-webpack-plugin": "^2.1.2", + "file-loader": "^0.11.2", + "fs-extra": "^1.0.0", + "glob": "^7.1.1", + "html-loader": "^0.5.1", + "html-webpack-plugin": "^2.30.1", + "htmlparser2": "^3.9.2", + "jsdom": "^11.2.0", + "jsdom-global": "^3.0.2", + "json-loader": "^0.5.7", + "karma-webpack": "^2.0.4", + "less": "^2.7.1", + "less-loader": "^4.0.5", + "less-plugin-autoprefix": "^1.5.1", + "less-plugin-clean-css": "^1.5.1", + "mocha": "^3.2.0", + "mocha-webpack": "^0.7.0", + "mock-local-storage": "^1.0.4", + "null-loader": "^0.1.1", + "nw-builder": "^3.2.0", + "po2json": "^0.4.5", + "pofile": "^1.0.2", + "raw-loader": "^0.5.1", + "rimraf": "^2.5.4", + "sinon": "^3.2.1", + "style-loader": "^0.18.2", + "url-loader": "^0.5.9", + "webpack": "^3.5.5", + "webpack-dev-server": "^2.7.1", + "webpack-node-externals": "^1.6.0", + "yargs": "^6.6.0" + } +} diff --git a/scripts/build-number.js b/scripts/build-number.js new file mode 100644 index 000000000..c871e53ae --- /dev/null +++ b/scripts/build-number.js @@ -0,0 +1,8 @@ +/* +This exports a value, not a function, so that it stays consistent across an +entire build process. +*/ + +const moment = require('moment'); + +module.exports = moment().format('YYYYMMDDHHmm'); diff --git a/scripts/build-nw.js b/scripts/build-nw.js new file mode 100644 index 000000000..c072f1b7d --- /dev/null +++ b/scripts/build-nw.js @@ -0,0 +1,28 @@ +const chmodr = require('chmodr'); +const fs = require('fs'); +const fsExtra = require('fs-extra'); +const NwBuilder = require('nw-builder'); + +var argv = require('yargs').argv; + +var platforms = argv.platform ? [argv.platform] : + ['osx64', 'win32', 'win64', 'linux32', 'linux64']; + +fsExtra.copySync('package.json', 'dist/web/package.json'); + +var nw = new NwBuilder({ + files: 'dist/web/**', + platforms: platforms, + version: '0.25.4', + buildDir: 'dist/nw', + cacheDir: 'nw-cache/', + macIcns: 'src/common/img/logo.icns', + winIco: 'src/common/img/logo.ico' +}); + +nw.on('log', console.log); + +nw.build().then(() => { + chmodr.sync('dist/nw/Twine/osx64/Twine.app', 0755); + fs.unlinkSync('dist/web/package.json'); +}); diff --git a/scripts/extract-pot.js b/scripts/extract-pot.js new file mode 100644 index 000000000..486412721 --- /dev/null +++ b/scripts/extract-pot.js @@ -0,0 +1,195 @@ +/* +Creates src/locale/po/template.pot by scanning the application source. +*/ + +'use strict'; +const acorn = require('acorn'); +const estraverse = require('estraverse'); +const fs = require('fs'); +const htmlParser = require('htmlparser2'); +const glob = require('glob'); +const poFile = require('pofile'); + +let result = new poFile(); + +function addItem(location, string, pluralString, comment) { + /* + Clean up the comment. + */ + + if (comment) { + comment = comment.trim().replace(/[\t\r\n]+/g, ' '); + } + + /* + Check for an existing item. + */ + + let existing = result.items.find(item => item.msgid === string); + + if (existing) { + existing.references.push(location); + + if (comment) { + existing.extractedComments.push(comment); + } + } + else { + let item = new poFile.Item(); + + item.msgid = string; + item.msgid_plural = pluralString; + item.references = [location]; + + if (pluralString) { + item.msgstr = ['', '']; + } + + if (comment) { + item.extractedComments = [comment]; + } + + result.items.push(item); + } +} + +/* +Parse .html files for text in this format: +{{ 'Simple string' | say }} +{{ 'Singular string' | sayPlural 'Plural string' }} +*/ + +const templateRegexp = new RegExp( + /* Opening moustache. */ + /{{{? */.source + + + /* String to localize and say filter. */ + /['"]([^}]*?)['"] *\| *say/.source + + + /* Optional pluralization. */ + /(?:Plural *['"](.+)['"].*)?/.source + + + /* Closing moustache. */ + / *}}}?/.source, + + 'gm' +); + +glob.sync('src/**/*.html').forEach(fileName => { + const source = fs.readFileSync(fileName, { encoding: 'utf8' }); + const parser = new htmlParser.Parser({ + ontext(text) { + let match; + + while (match = templateRegexp.exec(text.trim())) { + /* + The first captured expression is a comment, if any. + The third is the plural form of the string, if any. + */ + + addItem(fileName, match[1], match[2]); + } + } + }); + + parser.write(source); +}); + +/* +Parse .js files for say() and sayPlural() calls. +*/ + +glob.sync('src/**/*.js').forEach(fileName => { + /* + Simplifies an expression (e.g. 'a compound ' + ' string') to a single + value. + */ + + function parseValue(node) { + switch (node.type) { + case 'Literal': + /* + We can't use .value here because we need to keep the strings + intact with Unicode escapes. + */ + + return node.raw.replace(/^['"]/, '').replace(/['"]$/, ''); + break; + + case 'BinaryExpression': + if (node.operator === '+') { + return parseValue(node.left) + parseValue(node.right); + } + + throw new Error( + `Don't know how to parse operator ${node.operator}` + ); + break; + + default: + throw new Error(`Don't know how to parse value of ${node.type}`); + } + } + + let comments = []; + const ast = acorn.parse( + fs.readFileSync(fileName, { encoding: 'utf8' }), + { + ecmaVersion: 6, + locations: true, + onComment: comments + } + ); + + estraverse.traverse( + ast, + { + enter: function(node, parent) { + if (node.type === 'CallExpression') { + let funcName; + + if (node.callee.type === 'Identifier') { + funcName = node.callee.name; + } + else if (node.callee.type === 'MemberExpression') { + funcName = node.callee.property.name; + } + + /* + Check for a comment that ended 0-2 lines before this call. + */ + + const precedingComment = comments.find(comment => + Math.abs(comment.loc.end.line - node.loc.start.line) < 3 && + /^\s*L10n/.test(comment.value) + ); + + if (funcName === 'say') { + addItem( + fileName + ':' + node.loc.start.line, + parseValue(node.arguments[0]), + null, + precedingComment ? precedingComment.value : null + ); + } + + if (funcName === 'sayPlural') { + addItem( + fileName + ':' + node.loc.start.line, + parseValue(node.arguments[0]), + parseValue(node.arguments[1]), + precedingComment ? precedingComment.value : null + ); + } + } + } + } + ); +}); + +fs.writeFileSync( + 'src/locale/po/template.pot', + result.toString(), + { encoding: 'utf8' } +); +console.log(`Wrote ${result.items.length} extracted strings to src/locale/po/template.pot.\n`); diff --git a/scripts/nsis-script.ejs b/scripts/nsis-script.ejs new file mode 100644 index 000000000..5ed821c5b --- /dev/null +++ b/scripts/nsis-script.ejs @@ -0,0 +1,63 @@ +; NOTE: this .NSI script is designed for NSIS v1.8+ +; and is shamelessly ripped from https://github.com/tweecode/twine/blob/master/install.nsi + +Name "<%- name %> <%- version %>" +OutFile "dist\uploads\twine_<%- version %>_<%- arch %>.exe" + +; Some default compiler settings (uncomment and change at will): +; SetCompress auto ; (can be off or force) +; SetDatablockOptimize on ; (can be off) +; CRCCheck on ; (can be off) +; AutoCloseWindow false ; (can be true for the window go away automatically at end) +; ShowInstDetails hide ; (can be show to have them shown, or nevershow to disable) +; SetDateSave off ; (can be on to have files restored to their orginal date) +RequestExecutionLevel highest + +InstallDir "$PROGRAMFILES\<%- name %> 2" +InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\<%- regKey %>" "" +;DirShow show ; (make this hide to not let the user change it) +DirText "Choose which folder to install <%- name %> <%- version %> into:" + +Section "" ; (default section) +SetOutPath "$INSTDIR" + +; add files / whatever that need to be installed here. +; see http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.1.5 + +File /r "dist\nw\<%- name %>\<%- arch %>\*" + +; add Start Menu entries + +CreateDirectory "$SMPROGRAMS\<%- startMenuFolder %>\" +CreateShortCut "$SMPROGRAMS\<%- startMenuFolder %>\<%- name %>.lnk" "$INSTDIR\<%- name %>.exe" +CreateShortCut "$SMPROGRAMS\<%- startMenuFolder %>\Uninstall.lnk" "$INSTDIR\uninstall.exe" + +; add uninstall entry in Add/Remove Programs + +WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\<%- regKey %>" "" "$INSTDIR" +WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\<%- regKey %>" "DisplayName" "<%- name %> <%- version %> (remove only)" +WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\<%- regKey %>" "UninstallString" '"$INSTDIR\uninstall.exe"' + +; write out uninstaller + +WriteUninstaller "$INSTDIR\uninstall.exe" + +SectionEnd ; end of default section + + +; begin uninstall settings/section + +UninstallText "This will uninstall <%- name %> <%- version %> from your system." + +Section Uninstall + +; add delete commands to delete whatever files/registry keys/etc you installed here. + +Delete "$INSTDIR\uninstall.exe" +DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\<%- regKey %>" +DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<%- regKey %>" +RMDir /r "$SMPROGRAMS\<%- startMenuFolder %>" +RMDir /r "$INSTDIR" +SectionEnd ; end of uninstall section + +; eof diff --git a/scripts/package.js b/scripts/package.js new file mode 100644 index 000000000..ee7ba2e19 --- /dev/null +++ b/scripts/package.js @@ -0,0 +1,140 @@ +/* +These expect that NW.js builds have already been made in dist/nw/. + +FIXME: expects to be run from the top level of the project directory +*/ + +'use strict'; +const childProcess = require('child_process'); +const ejs = require('ejs'); +const fs = require('fs'); +const twine = require('../package.json'); + +/* +Creates dist/uploads if it doesn't already exist. +*/ + +function createDistDirectory() { + if (!fs.existsSync('dist')) { + fs.mkdirSync('dist'); + } + + if (!fs.existsSync('dist/uploads')) { + fs.mkdirSync('dist/uploads'); + } +} + +/* +Builds .nsi packages for installation on Windows with makensis, which must +be installed separately -- http://nsis.sourceforge.net/Main_Page. +*/ + +function buildWindowsInstallers() { + let data = Object.assign( + { + arch: 'win32', + startMenuFolder: 'Twine 2', + regKey: 'Twine2' + }, + twine + ); + + const installerTemplate = fs.readFileSync( + 'scripts/nsis-script.ejs', + { encoding: 'utf8' } + ); + const win32Script = ejs.render(installerTemplate, data); + const win64Script = ejs.render( + installerTemplate, + Object.assign({}, data, { arch: 'win64' }) + ); + + fs.writeFileSync('win32.nsi', win32Script, { encoding: 'utf8' }); + fs.writeFileSync('win64.nsi', win64Script, { encoding: 'utf8' }); + + childProcess.execSync('makensis win32.nsi'); + fs.unlinkSync('win32.nsi'); + console.log(`Wrote dist/uploads/twine_${twine.version}_win32.exe.`); + + childProcess.execSync('makensis win64.nsi'); + fs.unlinkSync('win64.nsi'); + console.log(`Wrote dist/uploads/twine_${twine.version}_win64.exe.`); +} + +/* +Zips up the web build, which requires zip to be installed as a command-line tool. +*/ + +function buildWebArchive() { + let folderName = 'twine_' + twine.version; + + fs.renameSync('dist/web', 'dist/' + folderName); + childProcess.execSync( + `zip -r uploads/${folderName}.zip ${folderName}`, + { cwd: 'dist/' } + ); + fs.renameSync(`dist/${folderName}`, 'dist/web'); + console.log(`Wrote dist/uploads/${folderName}.zip.`); +} + +/* +Zips up the Mac build, which requires zip to be installed as a command-line tool. +*/ + +function buildMacInstallers() { + childProcess.execSync( + `zip -r ../../../uploads/twine_${twine.version}_osx.zip Twine.app`, + { cwd: 'dist/nw/Twine/osx64' } + ); + console.log(`Wrote dist/uploads/twine_${twine.version}_osx.zip.`); +} + +/* +Zips up the Linux build, which requires zip to be installed as a command-line tool. +*/ + +function buildLinuxInstallers() { + fs.renameSync('dist/nw/Twine/linux32', `dist/nw/Twine/twine_${twine.version}`); + childProcess.execSync( + `zip -r ../../uploads/twine_${twine.version}_linux32.zip twine_${twine.version}`, + { cwd: 'dist/nw/Twine/' } + ); + fs.renameSync(`dist/nw/Twine/twine_${twine.version}`, 'dist/nw/Twine/linux32'); + console.log(`Wrote dist/uploads/twine_${twine.version}_linux32.zip.`); + + fs.renameSync('dist/nw/Twine/linux64', `dist/nw/Twine/twine_${twine.version}`); + childProcess.execSync( + `zip -r ../../uploads/twine_${twine.version}_linux64.zip twine_${twine.version}`, + { cwd: 'dist/nw/Twine' } + ); + fs.renameSync(`dist/nw/Twine/twine_${twine.version}`, 'dist/nw/Twine/linux64'); + console.log(`Wrote dist/uploads/twine_${twine.version}_linux64.zip.`); +} + +/* +Writes version information to a file that will be uploaded to +https://twinery.org/latestversion/2.json, which signals the app auto-updater to +notify the user. +*/ + +function buildVersionJSON() { + fs.writeFileSync( + 'dist/uploads/2.json', + JSON.stringify({ + buildNumber: require('./build-number'), + version: twine.version, + url: 'https://twinery.org' + }), + { encoding: 'utf8' } + ); + + console.log('Wrote dist/uploads/2.json.'); +} + +createDistDirectory(); +buildWebArchive(); +buildWindowsInstallers(); +buildMacInstallers(); +buildLinuxInstallers(); +buildVersionJSON(); +console.log('Done.\n'); diff --git a/src/codemirror/prefix-trigger.js b/src/codemirror/prefix-trigger.js new file mode 100644 index 000000000..e07c9ca13 --- /dev/null +++ b/src/codemirror/prefix-trigger.js @@ -0,0 +1,50 @@ +/** + This automatically triggers a function when typing a word that is prefixed by + certain text. We use this to automatically pop open the autocomplete when the + user is probably typing a passage name. + + The format of options to this option is: + prefixes - an array of strings that will trigger the callback, + case-sensitive + callback - the function that will be called + + @class CodeMirror.prefixTrigger +**/ + +'use strict'; +const CodeMirror = require('codemirror'); + +CodeMirror.defineOption('prefixTrigger', [], (cm, opts) => { + if (opts.prefixes && opts.callback) { + cm.on('inputRead', checkTrigger); + } + else { + cm.off('inputRead', checkTrigger); + } + + const prefixes = opts.prefixes; + const callback = opts.callback; + + function checkTrigger(cm) { + if (cm.state.completionActive) { return; } + + // back up two words from the cursor + + const curWord = cm.findWordAt(cm.getDoc().getCursor()); + + curWord.anchor.ch--; + + const prevWordRange = cm.findWordAt(curWord.anchor); + const prevWord = cm.getRange(prevWordRange.anchor, prevWordRange.head); + + // do we have a match? + // only trigger this once + + for (let i = prefixes.length; i >= 0; i--) { + if (prevWord == prefixes[i]) { + callback(); + return; + } + } + } +}); diff --git a/src/common/app/index.js b/src/common/app/index.js new file mode 100644 index 000000000..039542547 --- /dev/null +++ b/src/common/app/index.js @@ -0,0 +1,35 @@ +// The main app running the show. + +'use strict'; +const Vue = require('vue'); +const ui = require('../../ui'); +const { repairFormats } = require('../../data/actions/story-format'); +const { repairStories } = require('../../data/actions/story'); +const store = require('../../data/store'); + +module.exports = Vue.extend({ + template: '
', + + ready() { + ui.init(); + this.repairFormats(); + this.repairStories(); + document.body.classList.add(`theme-${this.themePref}`); + }, + + watch: { + themePref(value, oldValue) { + document.body.classList.remove(`theme-${oldValue}`); + document.body.classList.add(`theme-${value}`); + } + }, + + vuex: { + actions: { repairFormats, repairStories }, + getters: { + themePref: state => state.pref.appTheme + } + }, + + store +}); diff --git a/src/common/app/update-check.js b/src/common/app/update-check.js new file mode 100644 index 000000000..3f32aaf93 --- /dev/null +++ b/src/common/app/update-check.js @@ -0,0 +1,30 @@ +/** + Checks for a newer version of the Twine app against + https://twinery.org/latestversion/2.json, using build numbers which are + automatically generated. + + If retrieving this information fails, then this does nothing. + + This is separated from the app component to avoid a circular dependency. + + @method checkForUpdate + @param {Number} latestBuildNumber build number to consider as current. + This is required; the app's build number is stored in + store.appInfo.buildNumber. + @param {Function} callback if a new version is available, this is called + with an object with the properties buildNumber, the newest release's + build number, version, the human-readable version number, and url, the + URL the download is available at. +**/ + +const fetch = require('unfetch').default; + +module.exports = function(latestBuildNumber, callback) { + fetch('https://twinery.org/latestversion/2.json') + .then(r => r.json()) + .then(data => { + if (data.buildNumber > latestBuildNumber) { + callback(data); + } + }); +}; diff --git a/src/common/colors.less b/src/common/colors.less new file mode 100644 index 000000000..d2f847183 --- /dev/null +++ b/src/common/colors.less @@ -0,0 +1,41 @@ +@import './metrics.less'; + +/* base background color */ +@color-paper: white; +@color-paper-dark: hsl(0, 0%, 15%); + +/* a dark transparent color used to fade out inaccessible UI, as on a modal */ +@color-darken: hsla(0, 0%, 0%, 0.8); + +/* base foreground color for text */ +@color-text: hsl(0, 0%, 30%); +@color-text-dark: hsl(0, 0%, 60%); + +/* color for emphasized text */ +@color-text-em: black; + +/* link color */ +@color-link: hsl(212, 90%, 40%); +@color-link-dark: lighten(@color-link, 10%); + +/* color associated with creating new things, or successful actions */ +@color-create: hsl(140, saturation(@color-link), lightness(@color-link)); + +/* color associated with dangerous actions such as deletion */ +@color-danger: hsl(0, saturation(@color-link), lightness(@color-link)); + +/* color used to call out text, e.g. highlighting search matches */ +@color-highlight: hsl(60, saturation(@color-link), 50%); + +/* color used for borders around form elements */ +@color-form-line: lighten(@color-text, 55%); +@color-form-line-dark: darken(@color-text-dark, 25%); + +/* tag colors */ +@color-tag-blue: @color-link; +@color-tag-red: @color-danger; +@color-tag-orange: spin(@color-tag-red, 25); +@color-tag-yellow: spin(@color-tag-orange, 25); +@color-tag-green: @color-create; +@color-tag-purple: spin(@color-tag-blue, 60); +@color-tag-gray: lighten(desaturate(@color-tag-blue, 100), 20); \ No newline at end of file diff --git a/src/common/depth.less b/src/common/depth.less new file mode 100644 index 000000000..2d626c28b --- /dev/null +++ b/src/common/depth.less @@ -0,0 +1,32 @@ +.shadow-tiny { + box-shadow: 0 1px 1px hsla(0, 0%, 0%, 0.15); +} + +.recessed-small { + box-shadow: inset 0 1px 1px hsla(0, 0%, 0%, 0.3); +} + +.shadow-small { + box-shadow: 0 1px 1px hsla(0, 0%, 0%, 0.25); +} + +.shadow-small-inverted { + box-shadow: 0 1px 1px hsla(0, 100%, 100%, 0.25); +} + +.shadow-medium { + box-shadow: 0 2px 2px hsla(0, 0%, 0%, 0.4); +} + +.recessed-medium { + box-shadow: inset 0 2px 2px hsla(0, 0%, 0%, 0.4); +} + +.raised-medium { + box-shadow: inset 0 -2px 2px hsla(0, 0%, 0%, 0.25), + 0 1px 1px hsla(0, 0%, 0%, 0.3); +} + +.shadow-large { + box-shadow: 0 1px 8px hsla(0, 0%, 0%, 0.5); +} diff --git a/src/common/fonts.less b/src/common/fonts.less new file mode 100644 index 000000000..92e1ab8d1 --- /dev/null +++ b/src/common/fonts.less @@ -0,0 +1,81 @@ +/* base UI font */ +@font-ui: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; + +/* font for user-entered information */ +@font-user: "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace; + +/* display font, for titles */ +@font-display: "Nunito Light", sans-serif; + +@font-face { + font-family: 'Source Sans Pro'; + src: url('fonts/sourcesanspro-regular.eot'); + src: url('fonts/sourcesanspro-regular.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcesanspro-regular.woff2') format('woff2'), + url('fonts/sourcesanspro-regular.woff') format('woff'), + url('fonts/sourcesanspro-regular.ttf') format('truetype'), + url('fonts/sourcesanspro-regular.svg#source_sans_proregular') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('fonts/sourcesanspro-italic.eot'); + src: url('fonts/sourcesanspro-italic.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcesanspro-italic.woff2') format('woff2'), + url('fonts/sourcesanspro-italic.woff') format('woff'), + url('fonts/sourcesanspro-italic.ttf') format('truetype'), + url('fonts/sourcesanspro-italic.svg#source_sans_proitalic') format('svg'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('fonts/sourcesanspro-bold.eot'); + src: url('fonts/sourcesanspro-bold.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcesanspro-bold.woff2') format('woff2'), + url('fonts/sourcesanspro-bold.woff') format('woff'), + url('fonts/sourcesanspro-bold.ttf') format('truetype'), + url('fonts/sourcesanspro-bold.svg#source_sans_probold') format('svg'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('fonts/sourcesanspro-bolditalic.eot'); + src: url('fonts/sourcesanspro-bolditalic.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcesanspro-bolditalic.woff2') format('woff2'), + url('fonts/sourcesanspro-bolditalic.woff') format('woff'), + url('fonts/sourcesanspro-bolditalic.ttf') format('truetype'), + url('fonts/sourcesanspro-bolditalic.svg#source_sans_probold_italic') format('svg'); + font-weight: bold; + font-style: italic; + +} + +@font-face { + font-family: 'Source Code Pro'; + src: url('fonts/sourcecodepro.eot'); + src: url('fonts/sourcecodepro.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcecodepro.woff2') format('woff2'), + url('fonts/sourcecodepro.woff') format('woff'), + url('fonts/sourcecodepro.ttf') format('truetype'), + url('fonts/sourcecodepro.svg#sourcecodepro') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Nunito Light'; + src: url('fonts/nunito-light.eot'); + src: url('fonts/nunito-light.eot?#iefix') format('embedded-opentype'), + url('fonts/nunito-light.woff') format('woff'), + url('fonts/nunito-light.ttf') format('truetype'), + url('fonts/nunito-light.svg#nunito_light') format('svg'); + font-weight: normal; + font-style: normal; +} + diff --git a/src/common/fonts/nunito-light.eot b/src/common/fonts/nunito-light.eot new file mode 100755 index 0000000000000000000000000000000000000000..1bf16814657d123b84fe36ddf24114c995767a2b GIT binary patch literal 27728 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/common/fonts/nunito-light.ttf b/src/common/fonts/nunito-light.ttf new file mode 100755 index 0000000000000000000000000000000000000000..7929c851522e38a7afe3c9658248acbe7a5d69e6 GIT binary patch literal 58580 zcmbrn2Y4LSy*E6wU0Y{+?^W6+?MhnpZWT+iWfe=Z2sME) zvoa;7#6S{4UQ#Ye3$o&A39*6FBzu3@snwF249a9A89HiuZa(#yXyx zf384L%28aeTt1S{{I>SaZ{zq19IxB3b7uDsTPD7Q;}7x7&o=D4z^9pD_ED7j1gZgz4dhJ%6(A_4p;`n_Whqms#;G+Myc})vNokX9-_wP7&!;HT0YZpbm^ANuO=FXXm zc8jF+X^MIm{il4pW_E7+;@nfOXBl2-0M_xuZf`TQ%(DC+(1qCfw!d(Wob0e|yt z6!pQqcs_mMruCZ--Z3&uQ6Ij6=g}{UK#zK(`N1EO{p){u`9iY);X5f4e?^M}8#zOX za7o!rGJ!BGMV&xnM+n7yFm5@>9p)l*-Nqy zWq+6Z`DXcH`6KcZ@{{uaREW^8(ERtP+`N;jpWj6_U~5AAt@(dYKbyagdT;(A zN=k`w^j6^|>g~ca)Xxf8>fJ)(GiUQSJA<<;F)||+rcCpDDK*95S6?VlM(j=V3CfIj zS+H5L*|6EMIp!~=ob%tLTxd%vUEv^}dInD a#9u@}%JUw2WF`MaqKY?=9YscLMs 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 irrf&T_WB(t&pCmm1 literal 0 HcmV?d00001 diff --git a/src/common/fonts/nunito-light.woff b/src/common/fonts/nunito-light.woff new file mode 100755 index 0000000000000000000000000000000000000000..8b3db65f17eeac36e4ec694c5b8d2eca226d1ecd GIT binary patch literal 31384 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ÏwBw6 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 literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcecodepro.svg b/src/common/fonts/sourcecodepro.svg new file mode 100755 index 000000000..5e4a9bf97 --- /dev/null +++ b/src/common/fonts/sourcecodepro.svg @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/common/fonts/sourcecodepro.ttf b/src/common/fonts/sourcecodepro.ttf new file mode 100755 index 0000000000000000000000000000000000000000..4a58ed7b34bb9b2fa42a342acc1a141139c49809 GIT binary patch literal 52752 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 literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcecodepro.woff2 b/src/common/fonts/sourcecodepro.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..5b9671043a754ba85984dc0b60537a80f305252d GIT binary patch literal 20992 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/common/fonts/sourcesanspro-bold.ttf b/src/common/fonts/sourcesanspro-bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..24195b5830e5e121275fece0fbaeb85bdf8ca7c8 GIT binary patch literal 67368 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 literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-bold.woff b/src/common/fonts/sourcesanspro-bold.woff new file mode 100755 index 0000000000000000000000000000000000000000..129bf8c5b94d5607683b30d2329caefa8c92caf7 GIT binary patch literal 29504 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%0APmb;u8Py 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 literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-bold.woff2 b/src/common/fonts/sourcesanspro-bold.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..2f18474b3b4d6a512f9ae7219c9668e346405e14 GIT binary patch literal 23460 zcmV(`K-0f>Pew8T0RR9109&L06aWAK0S6oa09!Qx0SwFl00000000000000000000 z0000PP(MaSR81TjC>!T&9D^6C<}vD00bZf z&oBptV+?@^KX+wfW(FID^#|BCjpNzvz#2c*d(LQR>~^5)VDz1vjfg!C1eTY{{{K%& zkTQlfbzTahsAKzxq^XgL246u&AnhR5EvrT}qRaC+=l5=C{20qE>vlFtna=7DD-||^ znxo0Jh*!S8;z)*5p8WVY@~~wE1K9Q-Fa0MDLo&DX%96R?1-1=)QMRLAf~UIb<7H)4 zkGb2c`2u(XaDv!BkN5f~4=Ry%yJ-qP7i2P5PzHSncak&612DJ#N6AKtSd_&i##k|8 zjKLxqD^|doB{2p_jBw%@2uMoQA+#c?99AJ1^-jfW>&mEq#^(y*xbpwgW#+n`sC^)! z1i!q!Vq^W@soskfM~ba+S*vUO?hPQiGG0JFfK34Ze|Wz3dp+SB-ubhEl?iWvil6{d z1ItW>s<0g&kg90pJA+RBUP3|*6$FUZ47PD;iSwM7E2R$OaMNWvT}*fhz#s>KV#?0@$#FFj_glBWn~n?1$0Gp*<*o ze|Vnu>vdjm6Mpl7csDfRf{@~zJ9kT}M%B2gMs~kxy`%LM&$>x-Ubnrnd#x#7^PAEt zL1C;@lsq160P{jv2&;2my`ZqUgnFM_^%u#B-hH+s-3Gl2HEHj5Rbq<`|@ieb0t9ugd&!|w8~{df)LG; zh`wzn37vnP=4v0Yi?9(4)A3YMMmM+Q{qTaivRC2B^#Hu1@08qdT$OQ(F zOhA-PQt~dzO$^#3tshBAK1xnZXWur7NFMoCFCH#2v@=)?4*d0@M4BhP>nKxkCs=AtE9oA|gfp zc4ruC(x_~$XKvTZ9&MVU`~jk3iO>DlP_09@Q=0DX|2>mhB!jKeXbUWhl>E&k(1ff* z+GYEay2iSiTCiV!#grWI*nOMkS^$%PkThu%|6i}FK-i`8^wJVTuL6LVFY5mu0KB%} z%yZ;<>%b5MBq4l-kWXxtHSV^>iVPA&|B^C|Mp@ng!eus%MPR*LR!*|4pOp+>op9Q1 zhsIj)*l(B45?IeTPR8~;XbRRzla^SPU5s2^f_Bq+%Ar$l%&g1KyW){I(c#5&pY0U- zsQ!&3haC&#YO+iwYrnQ=%P1TVo=ULK}*o=-AAnSa?VQ z7GcFnIEjgePnVZF)gT;n?4oFW%f0;&96Rm$c+m?MDw2eZR+&mehS|?^H%I2IE3W{9 z1i(gg@Y!7{a@o4g2j71`ulnS{F9!K>uns@}M*o=4w9GRa93f8wTtNyDehMW5ispQu z{Z#`VAa+?7uKRGG_wsmVR=?l)ArSDBySU6vHsl;${(lHizr)Z$#Ifl87ZQ^F=}btk z#{F{iLxIN)#d{83@L?;|@a8y^l*6h+#fNW8TQFTZtpEYK!A4_>E=Iy*}I9 zCf5sKlsq#3UI1?o6LCDo1ti@yUNt8jyGS+bCogPx!I4m%As%bySg~^l!`Eajo>Lw_ z`>U^M;looQ`Pk{}a5zA*p6opU{keB{3`OIM^Zngb?2#w^n#%hW%~ar*8yLF5UQ6HA zS3(k{4!^wPYv2_bok;gj z|HZoibmYv{V}lj$vqkTC8~!M8UXBeiYrx6>=$f;zVB|hZYSCe)U3Voh8j{3`*dXiH zw=`&0K$UoV#TK}%bif--=z#$Nua_3CXX#%GOc6+6;boJiFNyK@Kw=`*f<+16sAWQV6~YOc$J~gws9E1I^-9l8218^ zM9&SdDZl}XJ~_7fUu;kp#hIV;5JHHMhO#MCOA6mu)>CBz-R%qt)M_f5l;ZX#;e`D& z4}o(rgs;v^>sw(9nr~tCmBAwZkiZ9Ms(k4e?Lcng6T0FH+g;*;_Bg937!LM&F5seFX~#4mMMX+Q1G^bQl_i zBGanS5S0$lUe}+lS1bA!s+!2qweBH_$BLZf5T-}|YE1!3Xn-WH80`SBB1C0q*?>DR z`hZ%s6`TZ_r|sDg9Klhe9G^9TFjy^aCZorZu(_14~i1yiov zSMbY8tGdZ+Uu4jCCg=)_@LHViM? z;XMOU9h^OyOQ-K=qS#DGg>mRsD`HV_G_p%sdBt~3XkOguv0X*ZqIge3yaTo9bhh=F zr>(8&A>1AFEc?f>J}_{}>Edz@4G+(6|_V;#GD0(YzajUMd zE)`+Z!+y-Cu;Y57%4#Q7tz+_eP}Mr>q=l4eM7u3>6OehwwC&sYIbm(M8Z=*%qy&=& zt4rkpP_ES&f(TzCy|pm~R&b=-#!hC~sXKJtp!TIXCJBv9!^DrA+_q+aekU*Eu+8Tn zSwAXgtbxLlxwNB`8a?tJuHe&5O)DGC*aYX%;pKWRRepEYN|iMZ7Ol*D6)9 z^(?I<&CM5Q>&@=`avd(}HMzdMyMGLxqt|?c^8(Y_CCf~;dTWWyYMCA8_NzJU^#?;e zHj`;>C5bn38`iO`b!kc0eXv^z?DF*_0!KHzmM>UZ`Zr*YXL@N7O%+;&@sJNgs}o>3 zX~#EdUVZh=TINJo#cTj6G0`EDhj-(r-08yp^DoO6=&&ebbu`Na;1%WrI(_RHavXs6 z#GlwjpfD$qxrucHqoVk>7pU{`mLwP?h2g_8Yzt$%HjvCxsO|l7_6lBG zwmU16(EAN=3_?r;QH9V_b_O$MwZSwDU+u7z5m!B|W~va)qV|NIoRsM35Iv+x;8VUb zmrP)gL=A1)CEYBEOoqrz59dr_LL^r!q6?OU1tMcvJxmrQxDrdeI!l5E3tpLpV9zy0 zRH+BaS7u1eJI&;*B`v;nR==NIFzm_l+($ig)fhXpSXIG~`Ly2BT+-yMmlv(rZo8U# zSifUqK@n`(ucf{Tz~G{cI3~?XZ3dueo>GEjZfX1cn=*&O@%fAjce{Z{ApBTAtV0-K zn)Xaxrk!Nh2wXJpaUn(|U92nWhc%7t18@eE!+K7W(u8o}cs+c5V+hjrUD`Gq#gk5bri1|9{Y0p;;GZ;FPu5M4i=t)>mOgebsM@qd<3Isj?AC4aM9ug zpML=zSAPF3Tz#$y01h|k*bnY`5#pF5+}3*kIO2l49$Dv6_?fTAC>>3#b;K<(rPtk{ zck^Bir(`fVsg=bLxRfof!Zr?NZ!caCi;iQ$drn&)9MJk%Y#25NPSDk|m{^*nehieO zfbL?8@X{F!bq;2IaE9i~L(xE>8&G6;vVy z6&L0wFm^jt&D)K*dOY{7M00g+8Y!Db?Ba-b?a|0hh$Biu8a(Tua%AX9+wByIPI5BP za_mh+n2;|lZc8I3Ih&+#q;AX!bKoj8Hw|&CoOVHG{hb^`AKaw_WNvpe zPfly~0Gm5b(2rHK9)fsoueSgmcaqH7u3AiUwb^$asrOVA7{Z98)w3w@qMLtVr1oOI)Bz=?IVmqL%I6j3w~{ zYJ5s0&Nin&60ME2IPzqP>MwzqXKh9u%+lU(D+R`)m0xp+l<{6EDJF>{McO2hhIKOJ zHx}u!3U#lQu7uoJIIMzMf3V5L@q;e!4l{!rBjQfp_DAgUtJM_K8(^EOK>6c^+X;HGo(E>!jmExsLnG=<0}Wg>wt?3pJabSs`i0 zve5%RhA7EL4XhTZhIp?%zZr7ddZ6^F>4V{I2&;fe=O^9ph!-oAJFN*w+Di@`Qou?F z7*Yu#*2MMY{fGlrGPH(87%SHpvBNtaRh5hC*uMb-#|T^DG$Q4*my_=VvzqzzQ(Nxp z6Zu2Y7b9qJ_F`L-T<$9 zy5D@t;|-D59%WZYKQCIzN-(!6#E9O8Guu^zIvq9V%P1G3jVKc7@Tck4V5x^^UdHJG z`9x~h!(T4QxC|R4-{v_z0KVYJKvz1ZU`x9_KMf*tOF(H@;c-|95z|BT8F& z?2Rk!BMnK;Ih}96qv_%Wwy#h=y(IzRQ>MZ)Jqtk5~Eg;pZR3Cv%$zQoYDPd@kF zG_`VSfPUL7NNlpw*b;ZFM31+_1b=U~mo$c-T5}V5S~=eoqS=c?3m?b+yC{D{)I5lEe7mtL@^#$` zn)Dr{^5UR!H>7Io(8z!aKGM?}7&SWPQ8~s?nG73`?YH%q<4?Nk(+LpewS^7z2_@=9Al3nuQ!u;#LN6PU_xcCQ( z6cdS~fD{JHep`oqn@BkfT|+Q6ItPZ9B$;rMjz}~lIazH$sdVxoA3gm$9qZ&(_T$U& z8vn*yMnbzhsHamG-a&9t!&IHJa`2s8y)vm7zY>$edIri}1j>1W{*XCXbuXXhwQEbw z5?0+CnvXaUlL(b+D^PYW!p-U)=U8?vCWA09FGAk2yW680b(N{)a@t+AQM%g%)$=pa zd*ZRbJ4{qV6*O*vftSrIas;8Lv_Q-4NKlfFm42`cD*9Bea*~>@O~ihXP7I-ytFk6( z`8FEk45vY9;*`cME!~>DEDa1A$k71DLmK3j@K;}>dY7O@ckNQIfO$+h-8?&kHcu7p z+sJh~T9I34wpT%P_nNy&4h5E0hmrgVEtmcnGVbg^< z{;}pT&loyj<%#R^$%jJ2A+P_5l*I%UP}71{6`_Zza%dUuTGY9YDc@z?UqxyHT?*SP zO$&KZINbMw>XX-{o9g;u@l!~S(}k}|vm3V!7!fq!;J!i6>s-p-+!pB`CS<;hI-EW%{mWpb=$507vz;IQ{Ogo11Q;Zq0+fuKnvx%jxfB~Q6TfH8*gqfs+= z2stLs+D3+$nzcJMV#5|!T`FtB7ITIl_Ne7>T3WL!fbjhs)B z<%+=1!Am$ih1EnUiO4}R%t)3Ng^?v4 z@X`ZUL^P@B>;fcq-0JE0xLXPc$~uEs8jy7ocP+8SoocMekrV{?@;JDMQG|y?;!9Z( zL_siI;!4t4j20(yT-c*yb8;l|G-m9(70sx|P=(Z(iV@P#^2`CsbJ*D|kXZ(V?opqcbT20{@P2e4z`;QbfvL_5w|}ej%o=P69<%HLzEO8=Vpl*u?JUfJ}?UqI5+wS zSE+sh619?hR@FV*OXNfDkdEk~HIoET_r1QW{?heEy8R>@1Cs3zFzS;WDZ}kEXbJ^N zDozO=EaTR-TLh7}M0*Io5bDldi>69ftE1cEwSYGf(Y&$30rU-jf{`db;2^+QAPo$_ zZZPiPw14>h5&Oo0YalScDJHq6&!!+herH;kKdCuK0h)O9(a=5M2Z9QlJ5)0EH6Y!p zV?8)0FDwHAPB*kS&u!j~22C;pJd9z^t-uFH@U-nOnF4xeaOge6Dw8hXQ-L3tWaG;9 zI5-FTu{)55Tv)jZ1lbPZ1hNXNvM4(;WzoFR`(}d-0S69wj$^WxL@3JlWWy9Qv{Pk4+SDD6~ip!%V6pnPnV{v}<&++5i64yDInAwCRqCbRCMA zm=s4va)`ya{dlvSZA))Gc&~rQ^3~g^pvCk`2mTQaqF0<<8bha7UU4?6N2@{giH)V0 zXikjSi0J#Dx`~z_5kWyyn{#4}E;fGnhKy-YqesV!eI1`fsi{G^q*O88BZvm6$J0@} zWy-23e%H+Kej+T3BT=(<#1LxA8E6!Nb#SwM9k?{>5zFwT01{05!1tV>2$910+w?ug zQJhJSsr6SRWyvJTVl*qhVSg;cieQzqc5dL&X%Ll+48I1Cps)|B`fLRpi1BDxs*odIiojqrW{ozI86 zT14wlYV(8g)ZzKj`SlrSez1iSvur5&xg=vb!~C;ZD0`C|QeDgNT*59)ky=EW}Y9d76vvy`|pv}hjgMxsGuF0uflg^7+GW1f+?JQ;3or* zpM6{mYMwaH*X=zkx!X4fHb!A0JfSsrcA#a%~F<3Y4L&{d?JXt64D~ZAc%BD3+0| zcKML88;P>{rzFt8$q#Zg_NArBVh_r<0#H)aq2 z!{l+X%VRC)ocyQ$ImeTUjh2Pb6p(I*{0cmZqWAZ@ErJH5Ru$Xfr8B4miAWs=LiO&> zEua!rnhdkjdLAXi8fHUwAFspZmQmuriG7;2Vkq)f0F&BzRshXO%hSuTPk&fU=udgD zqAyyn02*b&3d}A04L}@on!-P$+a+oX$ri@h(h{H=qL9f+5P}s(5QwrRFD9MF!zV&$ z!3l|kc#IfbW9P6ZS(n9P8wi>Wza`pivwHa3R@py)rB|OFbImw=S?fB`AiP)IFiPg8 zSb3gwrz3UDgtFGrMtQ=VvA$E762XFvIr<6D$Sy->YQx1SiZY}|V8UIk?tYNkQTbQ) z!eY_p$u7l{(E|?|CEQUceg|P#hPndF>DerMc)_x*;aY9x_UGvc@0U;DGz?1Uqdny2 zyE8g-UxDYvb>^eKF(hD1slOWi#K!>IoPm7ouVx+u#QxU|#{z6DrbQXF0^lR?UK5I=b#XFA9^HmSicklgGJTaNRiX(I_mGpdM%?!x?nw*sVH!=E- z*DCpd5!FG{)ltJG#Zd$4%DNB{CI;%*NUIy&mfkIC!&Z~Rv5Zy!$h)g|C3vdm(cp0O z>$kF+hC7*f;^=9QtVj{N0xNqv_otto4P|*({{HCm^D-LgxvX*DOYzL4X0_}i5^jH6 z01t-1!*7Qt+|c{Wwtd@ow>rTj6+R-FudYfDFH@o>43ba#uB=o_oUG+YVl<-K*c@E6t@5J$uOY8Fj>0IPyb}irnbI>=PN^Uu2pg~-> z0+89c5cNWs`M4t`9o8TqD8t98_}eYJF5TAcXD`R+-?s0QWrHK)FW>+BNV0F=V@dza z6#T?8cKvgYmF`E%o=|Lu9=_TCvbMGc-MoJANgdv&WPBftKaA%f^=jT|Ng;ot(Rc=( zb$apZ!=LU~l!;3Y6W^{O(FFvZY<#AHgdC2I<2D14SG6n32_psdkcwj=?w^<_FEU}%C| zim0D#5Rlp`a?g;8D;<;u2Q+5Ya5V=5$Hca0+=jneEbPh4EA3f)wc|F|6=m<}6%h^i zZ9k#kxFrX6C%_2u&w<}Q^7I)ad^SX9;p~=``baRj>izG#W`Mjig6?@6noNLsN4>Sd z_r0@#?%BR~-3?OHHjichGONs!<=Y3MgIpOtU#(@8%L=~~WO-AP8g9WqIbr&{z#NDn zKJyI$;sYpNXpXX94qEM%DW<&8RpZlJv*$A5n?N z!M{{)TAesvGQleBXcS=0Wjt^fApYrYf4oEc^rFx2pBJ-bo!|T_`DS1?}6yk6uwfZ`7|L#5B`HR3n^~49VFdM!t=TWI$_<4Q?zIW>*2?Z^Bj1JtMWTG-)ec zZ;L)(SV_BOuJ2+blWPcAJaAJ6ev6IgAIvt^A6z#B$oNtfw-t-6}Egya0Po3^m4wwuls8DqF^y=mbD{{?+o zuLhEvXbgEbBfBQ{3c8|8QI~?`gb)X8LjO>@u~yCar;N8~tDT@rjRW*-EBcrr)R}}- zdKc8|^+qF6Jyt6sJotY=TDp zRQWy{M`GhnyguO;?v_fKDr@Ee>(E?$G+yHcA`5ELq?DQhNe47JjkIakk3$dFkwa5( zd$ag0!2;}uaDbm12`m~pyHs4q<=74={ufo5*1e@54zK#0k156Kbyiv=oU@IY5lL_= z%*DMCarjtlO)lcH`Eghd@0Eh@RqpfFPO)LE{kx0B;an4zOTZ+fJf@jzmc6JdVG>&* zq*4`Pc9KeLXZvj>d?iI+fc`0xwh0SkiT)1%GiS#Eeoh_UkRb4MJw6HDHc4esiIZ$> z?DvA5F+f5qO+9E4Qh%+hX#N{vi&cdi;ox;Ho^#+wwTT`P>`Y|5*uOlmYUQ(q74&wV zL~E=R2k}UhHno1F>xc6^jTy@&CaF}@=QeDa%?P=_D?o&}9tq<@k{RUSE!9-dQI*PL z)TTz<6J5bkno2oGi$PneB)xK}ykbGp!y62Z9x;rw?ch3%rbmUPi06J6`{aWqYJgXMp#PW44Z(go-<@Z zBX@Cq?6PS-ayuoALqVviRCHmcxFqUAnx%zx;`^grPF>t3?%fICz9 zaHA(_MJZ|bq-}0==YrgM8yY>RsqHCWa+)Yl@E_#V;aG?`6Zkh+>_Q%n2?E8uA*&A6 z!BR_szM*1&&Y>Xc50B=#jg-K~^-Q2AZAbGuTIt-jjgIzU1*b)?up!dm1kelpZ};hI zlX#5S-yrOv@r<(9e-4aioqP?8e==)F@~s2=A=hx6IZndpF-!Try#v7sHv|IbUU?xy z&sqm$c`*zH^5-QL2yP|>_wU_jDIbe=5;}9%aFBlBI-*bc%ohT7?2pZHdS`ILj{*U( zN0G0&m!(h++|&(x@POGVvc8VwYe#xZed;#&BAqT-L2M1Ppj*aHkRdoRG(=b!EpFv& zGqa#e%1)5q9xoLE4W-9{B3#r0u4CxnI*9%3KI%X{*!r~v@RHo8@xep(VzK4|jr z4Y)nKALRC(IWJU6=q<=T7^~WKSV-Xv4?|cGWU@k*zSEU40zVB3fO;fCGB*OfSHB4% zlv^mWD&h{4TdAe3v!O|aGG*#e^-V*^E?-hf2Ae#}&qibO^UO_=c``&(^YmX*ZFXW} zMWj+)HX}Ht3cL38k$TU~Bt*489_YKs>4VpK!lB~7o8t1~tRUPgFin^|?hb$F&kQaO zE$-R7xHpj5%NEx#VHdaXBln-5nl3)Ye^PVid45c!36Q>%8&w+BLMWB+tkN`b6$hc* zlmw@uiqeG#-dAJZLq0`3)veZ-0m6R>4ra#`MK;70N;ua4ija7cE~*?gO@XkH1d>|k z9C4ls8*=}&9n0Y*Byf3H95*>3fx~OV-3a&-g_)C&%Y#e02eMaAO?`4ws9Mg6sqBCH z2Er$fev(DI$W9&2RoB0Vf2*l=fs>a9)zrl7+0DP%)Uv>u7qE=7htH@bjnJH>ZHi{g zEi^!VxjlYIXu76cYS5L5A{aqAs=Db)EJxH5qc>pNTVo#>zut9yUEFJAsBD`Xb3ZAh z4Z*E!Ztt!<;!OmS{VZ+Skn(d%@BY!a z@#l>ihoa4;!^f)z>-QqJOR%ZTwCO)ja*Mky3zw3xafIkl3JR)pDDbcuXet#z8I6P+ z&hJSS!6HJF;K8pim*)^@)p&WdCLjqD&W}jIiIvy*3VJk3!cWKr;|z!RHlOuf^Qgf8 zG}~<5fOyeU#KaRh_V5~gZe0%yViY8jc7AzfcEXwOr{m*KdacR=ub z^zW;HEd1|m#QN1pWL6#GlRW?<4^go%hKRF<+l}>Eh;AMl<{`FENi8{ztOURFPCZF& zvQ$oGq9wSa86-cWwm4ap?y>8rCeBa2@G=Of-5^}^w^{Z=3K{m4SnVPW1%$8fh)&u= z2<@L#w7#Yngd2G{!MD7&S_5WLT-)vEHSJH&ZY4k1AF0td_#T1ohg(<4J`)bNJQ#r*NcoNvVa`}&X1fRHQW zmmFqR{g#eBTv&3FQffFDqgS9yiHQhx90x%R4rFtnvPe!MI-5;}l_*jhBBjzsBm<(q zsb<6R83HnxcvHLT%#WFe%VCD^va*) z2-#IaosKl-@i2&VVFC3v7rBu=0L*s$z)J5cI_JQ-OP=-l)ybh0|0d`rzZKl$S(jgv z97<{=ba;-XfWr*Lz44rpfZma=2O2(xsv*z0`Hpq^29QU2+R~Jk+-FuGR~gi^-!(Lw zbj`x9Fvq|^$FRd0O)54If#$;k90(+i2v>>tJl$cKtJMQzQB?(B zd-RX(R%)iRA5%9$iT;9@bLB8G;5{EOk zp`&)%@y5y5pu1MWSKOS@j=ayUEnL^$v5Oh6y&%Te)1i-7>_+}2wjuE%h4^#XRN*}n zWnx!hdjc1mA2f~bGw1DSX4&2p)l1MA>v0;mQAmmax3X-X%FU%ctl!Fr|10mD6Xq$$ zDOL+}-Yd7H+#(QVxA*&mZ+w;xj!erfN*}jsJn&;rQ`FZ!uH|#RqI)A-@8njR*&|{; z&y7-4SSZUiP~)0Zvb`p3Jg7B5WFxyibiG)q8DTy~gTEs%`mg5`22s!U9$ z*R)isTtuVGM8Q#NK#+hYd}j2zkoi=jNvtSBlM;^R(2wpa;fb?yg$Zxog!tJVmgI+s z@+GR=*eyKpoF>ibvI-t%j=YtC78T`3oRS_|$N#ou@Hcfqf!}I{I4xU~oYBfjkF?fJ z#)a$)cJueDKx}4!)GA!%+{m_~smgA8#y-r%>efumMY5ec)2brWB=`0;%-;eU+2Ew^ zula$0SnXM>e;Xe8_eg}tYE#n(-rT6}KlDTiW>l|kfuz8>@RXJiy%KX!TguC@maNrN z6B`F)Sbm)FkmU8yQrC{aT%Hu83sD-*@dcbjIw6f0#*2s2a?>Yi71i`5grzEVgiw@K zII5`$7J*+6#QVEOO>!f%yH@pzJb!K1nh@q8upA<5#3vaJ%Z^?Qz8Fv>Q3Cp!aQ42` z()iN>8o?@oNz7872T{VIvQtyZN<~8i$Xg(RNfRvY#I#s(3Pqk?x3{GQws8^758|=$ zRqdGtkP1juX~4Q56fl9CBR6j|E=12@svsDQ2GZ0l2ZsyMF<21{Mg?K~;{`)l@1OD; zjdDEAk(*?}2wd{^F`9?bcF2jw9OnQZ4-cOJQ@sVWIbU_OzH}yDFP-5LSce95d_+{r zF3aYE<6YOn)&>L=^eFvv3kpS8ag1%WhaowmG+o;C3ifMPK(IZy)NSd#M;4CkKRk4m zwaR_G33Bpkt8P?o+OhGKEPI`iERbClJHCX^uCw^hpDJHG>92cq{#vLCqp$smPIX56 zxAJvPexW&k4r&+wP9^T|3$(eE6j59=f0Cen`F}`2?+OGr0ExT=4ueGuSd&D_9^iO# zU3+2B2C}TyHJKQorm@P4=T>g-3Yg(Jffwokk-;S6ukql+9vZ+3tcXd0ZH_2SLAYUU z=BEhYo{Xy-hbyy$Rvf8lk2bdsSEl#|cZAzJi7os^N$f{jfK%wBf8zH7f>rI!l$Q4& z`eM0e5jG1to!2Kw77Bxw88LN>DbN&xGL^OQa&gaPt(ta^K19z6%Jr_Nk$yQ28x}0eR+O4uzOQVE( z`*?na<#l4PFVC=buR-z$=qH_c2m%52bX@d`ehkPEKnPWtbzr^gh&`MB~0d%BUXvvoV&_FN{VL)@iu%b=7R;)ZpE^HA?@a;XDH%L#! z3l?HFcfvOaNis{Asa)wm%}NEu$&CO-VYQ-^2eKj?>*YPU0FWpOchE=JV7HpsurZ{` z1;In^aK!WighD`i5rUL7`?Ej#`5)gM;0(OtWd%S{{cp!6;GTD{06JA|vj^`KVGMwU zr4{S5YH!i!Oadz}v|z|AjSBVHxNLDXd%iHW1%V2oBVqLnYu5qBgDJ*ai$*6l3WZjL zr{>TTegNmG@s~DQVdZyciK6R z5`ZV^h;S##Doc*7QNaZ$Y}?o(!{MLN=-MV?hrnC`K}oCAjirDWZC*r@&|YvATY)3< zBgxAWh3ay91VgfcB`kP6kgI^Nq%d9qNwD~VSuKK#p>lyVEsF~r(rJppRx42Ph;Y$0 z<^^Zon9E35Tln$}O*U&lP||92!nAT(At+$CR*9A47Q42Sdc3o65vi4q>pQ@n^p0%# zELimTfhzQjk5uf^O?I0-RG62~rFeN9E0vOxfLcQe_-%ZGDI^D2$fs>2L00B!lqwdw zh@}b*LkLjg=lsZX4^G*hvA22vBkC-wLq9Lq1tWR~q-`@?wuxJr2j&BSW5C$X`zK?~ z=H}}8?SmYpy&tQ|?j1jF=FdUU)vK9JrA-5;4tm%IPIW}SqM6OsGGZ@2x&^Z-1M++s zG{eK~w^2+xtwc&s#L6})_N{RuQ*E#Ys)3l3@(fZwCW+3zh3`d@RW2JW6*QOH6^fh{ z$q=O?({?y)#b^V!QP~a(TwHIkW5x~4D|K_d zJ$b1}>xk2wy`IHUmkRc649~}kRWi16{rcWXdD!g5XUQ!tkA5)obee0F{|@4;|x z&UPvm|8_U=GrXNAuhu9U>`*y336+?WaZU$Yp^XG51rkF3wy9~dAmSVU%Y^`D$CJWcC${MhQv)^Fo4qaKZTs%lHLfig|h9^IA4u6Ap6K z(%Vohbr^b?lh|0Iu4pV+vlD&Zie=|v6eKw*VJ8b@BI_z0Ms|t{XKSwW24@t7bkC$@ zZ7M_&L$`V+wikQLv>a1SkW5MXSvp+He#=#=Yru(ALbt zVlkG1Mb8f|hDEbQ+&wjJ!wASqH={3f08G;N)bJRZjiPN=z(M6l9X*}CIHYEbx@M-k^e%k((~C8}v9Gk3vxQ!f>&sCHeD`5ZImMO3si5 z0~$p{n<&?x7<$d1gkh^?_6&2$d)!6QVO1ma(E-mFv*9l<+Fu}1W;nK14w?_iF*?W3F4g`Ft(XPmpF)ousU#(6$Vlt(Et&H;pwsHZI;Yy80T zy{nBXkGKpIN$4)xsE8mqgUC`DqW}o;J{d4CB8+|nsmTCumo-yg~sV*Tq&tN)fX|M0*6zYhN6>!;FP%RDHt zX+aKt^xu!bj?au>r#=iXI{PpFZ?yG?Wd^ce)!Eh=f$-^kSqa-kR{HCsfByUJEztKj zhfUTpsj~tZ`EkuQE1$GBm_{7AE^Cxl17-aypfz-aeQB=cd#=OpWwyEV*vB+q-`c+Z z9S&cbTT}0<>~3_xqFaT9L3Mrb+ooCs$Fb_~2R=7l*+l}sWDSEoGcE1kv067C3quQ_ z+}KY`F)qZ@^b}}YOaet(@bH==B|VkSi*C`5t@|e@RrX7+1To!#Bc~8=} zG>A(`9!wJHk*0&EK!Bs8@ATLBKWqvd6A^9{0B9J_(-kr$Nj^nzcQ)TKggOH;`JfDp zE#cGDDddG&=p}iEaKDDoM1#z;XL z3j@NkM2lUDSK}VY0El~_T7;xkt*Iy-k3xz296=stJX4>LS&iQ-qi0r@jf=}SBvmVZ zX{O9AIzlQmfq$Xg)#8UFLatA+zCH~2gg`RtYN?C;(2{;qG;*US>j=g!?ypj!tSNvQTx+J*{D!#VCw>yu1vMhDA{Q8~drM<()bPoGMIG;qOJ}*V zyZz+QwETQE**ds}rMFm=SJVv9`dKpd>!CPMPNNYpOSk<%!Y|Frya%#}w=KC-nVS5` za*pyna7-kb7_vz`k%p-8v?xzN_#H9AocW|^W@@NhsWVQyQWo_%WRgTHB#K!Fz*uDh zKvIwTa_rJkVeIhb|NlDZ5c>)b>`@uNO&tdE^2JW`%@cMCP@eXj{(H+C!I&b^f#v^%XvEl)S)&!?8wh1#a^<;{s zX8ypnq+9_8t(+%H`0lFMN#Ms56^|7V?5xL_hFn$3g^3KdLCGcc!i~U~C3~Bc+1DE6 zQbCR7hgGL>u~1ruJ{@vWw-#7N@Kd!GVvO)K|n{Nr?* zS!AmtZEvQo0Yx(yx@fM{l%O8$LHA8zNxurXz-|%Bj5$SpdcAZuJ1&JC0S+|b=`#UT zEx85(cpHc0S(`^3duIX5>oC^#^>BUpY)pf(LI{uuBe+h*Sm?Uq#E60Bx0b>|Nwhql{8T{N2nC_pWZg{?z#R{Wl&T z?e`JCiGI7B-hGKHaZFr<4>E>2_knOK&;x*%B|r%saewv5H-$c_5^#>%sr7hkHR>=`4W7-TEry0a;{&6PWF#C*!xOF z6TjS>y$Tn6j4%0Z7PPKq^hRT2and{24?ztJxqm@A%MMz+@}19%ezRQ6y%NiT8|uZ_ zHtfwPOvzdrUPtR&N>NtiQ6&|pEeZr#|D5L%*vp4;s;Al*J{~d(WmN%_Q0+@tRfixX zbTcW=VbO{@DOr-XBw-xL1G@%qqVTB%Xhqm^v3)_~FM&^535&W6tt13VJCoyK)I>om z2pH$J(qi-=EE5Di@S7WuN>+1uS7VD+*I~&03QPZt?f_O^E3FpMts9mW9(|iXRgEE| zeKT)Ual5U^Z?h>fORN>TR_;YHbEjZCaR6sgM3|bRQc`v_rN+`IlGZ1ND5G$K`hJ|K z?sZ4@rUx!LLSU^5M=9$7t<^-8vMP%{7LC42hLS-Hk!lF?d>uP!K&HFodZInJ+l_S1 zQ-7AvoZPkKBwYD8SuD@$2;w~Ii%z1P`B2MxALz^O-}`tKdSM03mJn1&T5<)EL^hq` zY$=RbRgQ~=4&1V#ak5E22wC3x?#S0e2* zO$8n227063!blEJ;$%ZauWoU_NpZ_M5&L_Zr?akk&!brE$4aBDD0x5GK8~?i=`aet z6j^el!cFdS;?~FCeLP#1@3Syo-reArtH6&3@2PB`Tl3{O*1mhX`EW3&y_0XBw^n?77%L|o z+g^ajD;nRmF@WrI6Q_q_9Fdt42F5FU5F|~mu(`#wZH;??t$$;otkaq@ts(XWCW0?T zG{c~uo(%;E<2d-Rddw7M6wEAO3Z~yY_@D4-E32@+Hf(Vi2Mtr757Qt@G+9G+Y_!SVlau~ z?qimYbnTo#ql=rgh@AP-F7xTRac|jIg#8#|Stb{L4r7yTD#=k*Qr8l|{A}$8-kLdz zZqcnodn}Yu5b(rTPSowR`7A5y6#k}tm-N1tg-7nQ*Z#HwHAx_quZS`@HH#IzTIaP%Y>Quc+Aj+mpM) zS$Lqi-)}rWKC59|9d^h1;j(#Jd3WsxaaKptS^??eoQ7bh<%Y2Hfh+8sCNZZYvMajW z$?@4CYy4y-A}=6P?}qu9=0Us*hDny|gw-@Um1MlD^^gMMvcHo68`GTo>pF4>h1nwerzi<>GVXCU z*fS5;QL`(?!sb`8CyjJfGlOR?^62Ap+KluHCr23<}6o4tg}X%=a*ME9)6*h;ExbZny{`j+*i;V z^5gP{$R^Kaf);=SzwJ2NetVOobdw!7271NaQ}x`85BF}~*3*UFxoZVWg@(E3s+)0^ zok~4AR9gn>F@cs`opswDx*lSx4(u(kG+Z8XW@k;Z=DKlvN53`eIS+1^jk5VkJeaY95aDvJZ8Rql? zvyBP?tMj63I@Q4=oI1-+Aq(;Xoh+jzjSue2lf#{~sw0C)NhFlhn1e2Kp_4VsDTh%S z(iv68a%j3~LCI4P*2bghl<-*L*XLrH`IIgiu(inNPtb~y9>_*$8`ONXjS!p-vzR^PJ*vO51 zLKB}B7#R$mTc`bFyGy<`sm7V@$@xxd_ZpjgJQ)7&AbY0H(GNa_cC|_#9!9POwyrXXX5wYd>WeY}p9 zx8Ap(M%kYWmww(YjoZ9&cA%Ysg&$$-dv&AS*p|<{=;QSGdNx)b?P=5A?olH9)WdrZ zE@1q=qrM53_U&DwKc0>*bf{#VeYT8bk@Ju^pPs;{xBT$*@7xpRDZ|1tPo%u`gCUH*j>pP$F->Y+7i>frM3{cEKUlliAYQqxV_ zZcv~nigZTmd>Cm>JDrF%@|kOwkM|yAlA#O5=b?EKJ;mz!y0ylV(x1ko0>=?x(9iX25CFK<0$>|Q=-PRiEUA5NBgq;^Sa{ER+(ZG z?7L@qmS*Xo+>Es|t_dBKt-K}UQhA_T_nR1TGPCZx+#M12En7sGVPRq9MOx^L88|(u z`o1;J6q!3~(+*hWP7%w8`&`VyYRc`ftqxvR1I$_8$;#fMU!6PfUk1OV4mN?yVxYC2 zln1dV>AWd*GJa6|gtTWz-rxGzw$+p=+_>CZ@#XHgmIjbFPdV~Tn4B>ewMc{H>SC(T zGf-1UN|JjJV9XcZh+~RUwtdz5%8)w6Fkw@Tq)w-;P~M&QiHW?_Ro&u)gENg(sP8T_ z3;JJ~9W%cW?i;MwebIKhzb@$Vu&Z}yHnA5D=wKRoNGGQaZVbLXOTS&k(~VjFjawWm z=#i2W+Vt0#utVcHJZ(BMJNiEKuvqf?<(+!F9gj;WPKpm1@k*hXoh>C$Gi)o961-G~ zOsXVJwayc*xm*EPfmaStpAJqHE!wlC9y{lU>G_~J=aX@Wn2t}MHsC*Gwr!ppQEJR0 zSwauVMG*~!{?syQ#zva@fLx5(jBFvNSJpP6(hos1tsbA2*=2K2lS~hK88m9)>aN0Z zo7C-8pBW1q-7F%~LCw!uh3LUhB07>7gzfEcC&SNz)N+_TVU^!9Y8> z-ohlRK^2o8;#q+T4bs^#f;|PmVQu0o7@? zSq~dpuX#l8B-C`s7Th7b+637V=MFO994QIHie=NT!xgtxPK zF8PtO?vJI;PWLBKKz+u`IbMh!BL=Ph9TW?Cd%yD%SuCX>Ru${6sRLmbG7+;X)>?EEBknGzESK!OkO7k* z+FrUd=)-%F<9>t5O)z6m|KAHEAMs_kk*-(U38(3wW+@M9FaG;nnt1I8c60N8-sCa9 zPOrrPkpAjyKW>R_)5FFx!&ez2ZrMJg`jNiO6Ol@Nl`dMm6bp+(*jL(ZL7omt$%WnN zI6qh^5zR-T$OpM0CCWiloV*%)cb&mc?UNT@6Vxz@b9>`ir+k-5%ggoIN;iOXOW!kS z)MO~EL*?6M0t~J;yCu)=HIwJ>4ZO+bd~{e5^z-Y;`HjIJ5RfNq%G$=GvL*IlEtP9w zGLi87N;AN4t`A^dfikzND$Yv8S=g>QVdyy^v!*01ZJUPRyQ^C4hn9?*xAuNw*+g(#l zPnYX)1+aN~EVwwOSVK+sY;g=xa%oGtE5n5L7K+-f-692-8;RE1*)mXt%hNy9wdHk{ znX0-HtM`j2mJ?~d6mq|{@jnJSf_f9jZ5V5HXN&AURnkP-rXam&*-joqgQc(@mPZ~= z(0nP2D+aY|fbsDZ*|_6s$`+6PTXHGU2%3V-7s+G{4ORmkmzK+_mu6J0*F;Xb-fF!3 zZ^Z$C+6-XJ(l!9`Je0XzpQ3sX06PG@2pC4wHexE>i-eVDq?W}$IrfFFj8R=?Hy+*R_ zb16dOb+oHmLU*A&95gZ+WswRGektVr*SdN*UoLvh_Uemz6g#M2a`?L$Cr#H5p42&kd1OkL++!CS9b}Au4xc}@NGD#I z_|(yyaD}3O^vOw|P;7}4ZuH@^*iHURh?ualj@1jBxX{9(@_{HSvHz?uj3xgC2)hqDBVB+kplxW|Eq@yHL z3VmaNal)_{p{Sm8bOk-2Kb|uGLsLWnXlpWzVZmk2EsSDM@Y>)OoMvkSh?O>`wM#}j zALl6!l@O}|&43+t1XIa02XKHLM=Gd+wHaUFSY#do4SNQW@!bFy(=*99Y!4I&dRG1k z5XaKk>OTe$nW-`zYfF?qou)G@Fed6+Cgih+-Wv-{XDAHxm}LeT)ZkaGyQ)OhR%>YC zCIx=d{%$YuY6B(nC@%qWI18H*ZP*Zz5_Eewl!A2A(L*ATU{I+d zwlyAu3}fs9w>Y0hp$pSEOLI_&(avR}C!;|ZXxdJATTFxFj0RU``2aR8&gY01qNamw zPE6;xp;5qdLaQ(>t%{5Sij4qz&w@faIl_E~nN$G*YEwp9=e4T~zAR2i1Qg?NM4myt zZ^r+X{xjAG^XXLsj;L0r8!rliKx>(1K}BtekUe@D=`Gp7z%ceG$fF2$u24SYutRzj zkZ-Kwo=q2*H%(l;uyx%)Zfg!*`h^JXtw&G@oLxa5xvD1+(8Fe?;CYDddaZ~q=3nA> z8z5dJsAimI$|e4a{#4v*Wt=?5WZ#)(09_WbO;cqE;Y@oZi({E89G;B_8eY!boED0B z5J6>He{GV`n01Ccfo9o>&2xs4C;?yKgO?1twueaorhSyFl8^)tL<@-s5L9s{fd4b? z4$+W8Dl*}XOEAMZ{osQeXcf+*A@&Hga5AoSePNY6o(W`BHgG~}7mQet%DH9{+@K*R zOr%lHAUJ5ucB*HnhiEs>R)`=fbji38aR3Q3K0j!K!$Ap`t|1l+LntS-Gbg}^MEQhB zIb)V5w9yT!W|4w4MrVtNCgNLow+@jqhL2J~0!~CSM72{+*D<5dJWmshA+rWn=Az6U zg%#3d(1#Dwx=#-`&)KcpHt<6w;g~-6j?{;Y?UH0S7%BiO@(1)9fsIuJmn4GNtV1$) zsCICl;I25d33tZ6Tu~MxH$!5r1SI})ej)wB18^tcOaycy^7eBW%o0i~SojnMY*wMV zJEnFxNI?ptkSym)M0+D%@kA=br8Z@SVZ8|!B<}Z`54u-bHqN^_&dDEu^i1@uhK0`ZBCS0G>{1Q=u17bk@@QJ!UCy)c_A zlj@9cC`QOvirgFz%}-$q_BzbkIb8U78&=B3pD@fEuMXN-_5eA-oxqPIJfmDZ zrvfK*yw9Zs)jKkLOhyYHssgH$V{jhYccOHRHH;<_2A1Tg^xbQyCj*?Xr`=A~pn_CuF1e~6* z1W>&}>R?npLf73Yk|=UpXac1ZR99VP4AspHaYR@&tg15mms62dC!7n&syWFr6|=t7 z;ZqFIwc3O5v>uuMQ<`S2?i=WcTC(I8nsI3l#nqDfZUaIpaY2hFaZTpTI}tt0r|a>%tq6B!~~)`Hv&Bk zxUTfEqM7`Ig=$kevn1dJP$uwOhvT3<94r7#7t=J`UAvwH5Spkw6wZ`bNY1W-haUix zQij7}I%tPRKsc4N^-v1zO%!5I96b=2W0}!Fat7334a2Ga_F2Sghp+LZ2}ij5I{$vAXXHJ{=%Uu0Y(bSp;nY4N2<*MePpb|ULrO{ z02c)jl|5lx8@}ShuHW(_im|ht`S)wyHWNv4J*yS}=^up#t_%bVgAiE^$EmD0UF!Eo zE@5>&;GDld*0!hdvB_@7{k2F)+@SBK{&)zA;e;Q{^o%qkJioZSy8hnbugLwwYwggV2WJMBQfgM<}Gy zW}ihWX(Xg%oaa7oSo_iLs|nE&CUoHCtGkaTwUpiPo8<< zCsVH5noiu0eQf|g&HW_5fS*&-S+@0M{lUP9QNxyh2af4IFIcd^OXGV95S zk7gZl6}CA8v&FU*YOAp2v3T1GONCV_>?tJLA*R?8Qt8VOv$ax?wOtF&M>P_5wtEWd Xfj5@CWKwqEVFwmldI7Qi8vjoPe-}F& literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-bolditalic.eot b/src/common/fonts/sourcesanspro-bolditalic.eot new file mode 100755 index 0000000000000000000000000000000000000000..3a4535195cd73c542175c88ed31a5fee049ae166 GIT binary patch literal 28156 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 literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-bolditalic.svg b/src/common/fonts/sourcesanspro-bolditalic.svg new file mode 100755 index 000000000..b81468078 --- /dev/null +++ b/src/common/fonts/sourcesanspro-bolditalic.svg @@ -0,0 +1,833 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/common/fonts/sourcesanspro-bolditalic.ttf b/src/common/fonts/sourcesanspro-bolditalic.ttf new file mode 100755 index 0000000000000000000000000000000000000000..7d1a1814d16d9c95ad3433f5bb955df607853beb GIT binary patch literal 67660 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 mnAHJC*Nv!YCayz1Q+=9+)65(6>1O{tKow literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-bolditalic.woff b/src/common/fonts/sourcesanspro-bolditalic.woff new file mode 100755 index 0000000000000000000000000000000000000000..750dd55382d7e16abf4a1143a4498b4689b0c978 GIT binary patch literal 31208 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 Gr~m*D^91++ literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-bolditalic.woff2 b/src/common/fonts/sourcesanspro-bolditalic.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..8bcff238740a642a35f646d927400f896356facd GIT binary patch literal 24796 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 H`^kR*2zrQY literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-italic.eot b/src/common/fonts/sourcesanspro-italic.eot new file mode 100755 index 0000000000000000000000000000000000000000..972f1ce4035c59fdde3bdff7f66682ad07555f99 GIT binary patch literal 28309 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 KRL(BZ+%teos^1U* literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-italic.svg b/src/common/fonts/sourcesanspro-italic.svg new file mode 100755 index 000000000..b3e9ec05b --- /dev/null +++ b/src/common/fonts/sourcesanspro-italic.svg @@ -0,0 +1,845 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/common/fonts/sourcesanspro-italic.ttf b/src/common/fonts/sourcesanspro-italic.ttf new file mode 100755 index 0000000000000000000000000000000000000000..07fef909386255d1815ae7964a97d9b8b0d04a02 GIT binary patch literal 66992 zcmd3P3tUv^nfJNOjoUCc7;XbIjDTc-5k|z3s{|1VA(Rk0Arp#35$_tq63fT3ewJFb z)}$uJ7-OyLx~`wK=gg4Ax;Dj{OWo8>v)SmT-E7jjX-YRu)0pn&qBGzBdCwUxYLf2d z`~AK%@}Ap!&UxSGectE(K5{(AaW)hhuC9LJor`vC+B3p&d<(9&H8ytKzN%^KZk!*$ zdDh~FMU8wqHw)*da6Wr++Z}hF`K#}g;`}X+%S>B*=Uw%NtWW%?`Vl>I$DQ7?mEi;9 z9GCqF>i68YcIk$uhNFjY{vq!F>b^gFz-fHJ@-D|Y{|Way`Zlasd*_(KWXh*N+QHTeW|MbG)CM z)xY+E2k(AlaT>?{BmTr=Yu4Ylv|)cnJjY!c$M-L;UHae#LC?R=aj)+~edoHRYnPwT zkWS+K6vq`v8`f`n;1@-+*Ks`GkM>;NaR2fRwxSj1I9>zz@WH|5y?x*Rn~vK#UV9AB z>o|g?0e>3K$O$W#Enk2C`nBsgp`o#*gEOvK`oKECPKWz=m=jPlk>evr*i$#ZO7*b) zwEFPNw7>A!Upz+ppKa=y&F&a+lEyhv3OMJv3H)i;nerq(O@Hy+T&{CQJF-|kE*iy? zREM6LIulkezkeNP+_dtm%Q+jnPkrLJWmJo8^aMRAaPfQ*;3Kg6MlPQ#;>x%-u9tg| z+rd4;9p%n&KjwbM{hWIjU%7+9=nk%y({r|HkgJS-z}*vlm%BH5iMyW*a6>r$HTD|Z zt>vntFXPU;xKqz*ab*-|=hb?bP_G*GlB1vC%33_R1y}meo=Via2k)bMFX1VAb1Uw} z;~mM-lekZBY{e7wj!d+w5^ohzUcwj8v$oJ%4zV+OOFQ1Ohg*nee~qhJZdUX)oL$0K z&_2$^-5))Uw-`AqM#96DbCqb>Lhc^iTh0w}Te-vBUvfg)KN5se8tgjUF9EF2MSane z_yxIk?gH9Ws6zJt$u0_f{-4~Um!l`}zP|s-chb9}gRG?4sBY2o(My2*|AP%M{~z0; ztcM=i7$yhO%-F{OpP2};kl=_7nIJehG{!9QR%yPB!I;XhNN4S*im68o{`zGhnO{(4e($u>dZ32{|AE3{PQ?!Xa*9QK5Q@V?%c2Nz5x+&j?y_28` z+{I`|x1+Z&6Q5(yCn|-JM0pZ2Lx2l_>dx3u7xX{c51M!yvu_wr9*k8WxZ(VllkdI+ z?*A@E@B+Jb4)+*;W@G7{qE(ZvqV{ZwPUDJ`Z&v0dD`VGg++PP7Rw4H88*9g|s8E`m z^U-Hxcc$;JhXdXF6W*=TljxhMo`~P%2I@CSRp=r+E10~^P4XK&MI(6Qrcyxq0?Dr6 z!8g{y)flb1;pWZjE7dTY+A($=IIE4mjuBMkcAUmqO;{3Pm@@Ol^h{I-8p}p{<~`+% zco(n&5(D;^@dLbRE;H&)xO0i!>7_b2dwUAIV=!U+%owej@ePvH`nbO6hw9aa*j>WI z*fI7;qHhEL_Hz=hDm=3f@@YHA>Qf(qhp~5Xkh`%d@M2{PPF-|O+3;?(TRo=XUy`fn=dH=`$$SVYfEQi|!%$Hsm7 z_tf`I%)H0Wi09k{@}wh8;`dGNgANwrH*E&sdk(w{mK$seZ1%F_seH}(h#$RHPqHF5A&riKO_6*)lU!2M9`Z1O?OK-BN zT$RxY<+j?cmv3whFb8--oANeRqjiciO@CtgvGPo;L<>KlZxB^Nc{2JYFp4M?u0_Dv zrq9pVGuQ9Ņ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 literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-italic.woff2 b/src/common/fonts/sourcesanspro-italic.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..4d6b6161fc4f0f502ea4501a98c9573f07cf0489 GIT binary patch literal 25012 zcmV({K+?Z=Pew8T0RR910AaKM6aWAK0R^xC0AWJ_0SwFl00000000000000000000 z0000PP(MaSR81TjC>ypI9D^JNU;u++2viA#Wf2Gpg5V&6#0vp70we>6C<}vD00bZf z&oBptV+?{^KX+wfW(FH<^heNbn+L4|^=4J@|IVOuCga!vY#dMkxW_gb$0lIoz`#t$ zJ^TOvKPRckm`R68yUIWha>$gFu!EZY4sxc3y;WCXmy#3-(lQwx97fU!2mWLZWF#CG zEaN-e8kRztRmhD0R`_|{i~4(0yPzbqP3nSKk&&qI{nLF9YV;V<>pT^%@EqwtoZQ=) zGU2U$CX-NPvP9k@j};V&C2BR4qBmup(?*kP>l|^Y*Qw{n)6XYLjT(Vl0r>K=jEs%lFap2W!$umvtd-(1+j~kGp9(DyQz8q=VlL_SYh146CKHEeS&HY zvIp)SDNHUJ$VH~!#UUzSR#AkCkcFbXw6z3$7iiUVbNe1(g)j`ix^Mu{bv@JGrp$+^1~b*9b0a)0I;k2z4wk0N~;Oes!mU=6sv! zZR*BtYV8(SOJ36z9l>`8_-*z$3nOuuQ_LYMSYRMg5+x$y^MQa!8jXsKIYj2nO=skE z&PC>hTVMRU-7Vbi-=eN+m%92-vgNUCOLn(3BM&Y9x9GRizobVx0uEvTj2WUiVts^Y zgYc?+97K2X|K98EEA_fUDgU?(;u{|ZqsXKbU<#$+ozfxmt(tIJA&EUJAYY~-M z)Y6L;%_da+1245ztxAIbug*7a`8_NCzqIZ>=Sf$NoahsbB_~?q)owS24S**gLx;Ul zKmR(jS`BC?yX=L7ZnrzYq64C$A*lR8(nzvo^G4Pnz8%{)0Tg_*hMhcnp0j`~&*TE+ zgq=et$JjBI+;NRfm8#sLy?51CM`d$8ZC30 zpVui=*Yxa7*ng%WvlIZ!0U1J5mXHDTm8DwRy$i~-6m1if{L%M+LCD`vr0}9pJF^dG zcL54J3&6mF(&5nqfYcoT(mH^oy?982H0^@!d%j2nsgp^+9JbGNNq9;K90 zvJiqX!U!RR5SkGtl=ruzP>zLkLLa?##hU}C>&N2V zaUwY`F59uRan4$_r3D6&IB;9!wI{E8(1~!f`$ngwP=l z2p}e}V5(7^PMbOyFma+>8LusjfY=s@{t%8_I$9P&5-dCd3Xq&eyH2Un$TsZhexIW8~Bnx%lCCLv*7+=*ffYJADauB9`gotyDi(XfaT>99k z*RhEgl>BSAxc4UmRYC-X8hww1Pqr#n6C_8hX32tQ^y>hH8yGfZlEI0$C|RY%w{$OV zUkP@3CLk9xD$y0f7H<_!4&={Jn3Iw`K@pVr1f3*oTd{aprtWq-5A>K#LqZr&(I~Ac zYza!|^t?E6RR{tm)HV%g%+UM*@LGC(Tq*gj1L zun>WCrcaiq%&GKauv%MbXkI@6w_7-`(U%ZwJsuNC9WK`T?%P6%VuX82f`I%lPbvD+ zodCe5S$r@0}OF?pV|6?@z=oCS4YqW zMQL`kiTX?tu)-N-w*tH%g0Jcp&ZkUv%}bfeQDgBZ}gLBa^|a$_!s z1_MG^l<^UVh4xUAtKP2?%M8M+*LvQdThQopgPF z-!<#k!;uD+BillyesN~&^Wc&zbiec}X#UlTi7yH9(=v<*L%y_>VNKTJx(Exm416<2 zIbQa3SGXF}S)BKBY^EWk2?~pte~l%dxm22lnZ%^JGq)8S@YheCuHjna*v5!>Cf_R5 z*PU*DQh>iM$r@D7H2o>kq_}{JWE>GEF2?%%&5~ju~d$NOh+}2Yct7n zjWnW>15GLGUCAWWnP%{Gu3upf&Yd!}1BrmQQ-bJ)gbPUX$70;X(43&*(&TDbN8nRL zOB{s^*R7Iw*P&n-8GkN%gir90y(|XEwWh#pDSjAk=3MW#@$m=pYP5Z(hlz<-W&^E8 z1=h63Ca_vw%_7B-_i150m0QQFBJHsDWC~tCWHb9@t8G_FHOvwmh~pJvbQpI(nk4Hw zBw3sWYcTkvLd95v*`551PiC%Y?H{w`WPn6kl+wnBiyvtdvP>IZ8r;mg8>BI!VM3dp zFpEP;Ha?G+5T4Rs!)^E%K#YMdF{6Jpj~n!dN%204>>~57@U$%&0IReI(4X5h57yZG zE57)ca(Qh&XuAg61^@u-7yl0YLhJAKVEUTJOCC08w_vje7v*(?24itr@8NHbD=IZX$jP33)1Z@0TknMoON8EAKEVs0ZkH#zu3e>NGwSlwR%R( z!P03259*AY?VObWyrPhMNjCipuHl}W-5dem~o?nR&pO=(!xp32^PY+9*kLTryR4Ey~`; zw!yHxkM=uoI4PXyf6~DJ01Ix;UE6TF0ib@ICWF|9GZVvw*`iMT3in5r*@BA%Vh;!| z6lR$Z`>3-lj_3XC+{T1hOE?j3geT!k1Q6qhb#TAO;nV+54h`ke%j}yAMd2d@#7e?} zaA_D@6H1N$zi)mM?v8^NJqG@I@j3n+eD*&(S6_0@)MK?TJ^wpD5KF)^Ddzt+x*{?4 z8u-h>r1>1@6@IzBl)JHNQRy1uy$clXu9Q_kfcU!tn(pq%B8kG&C9B&6qL!!6iQXO8gl8ftJfo9lQYsYv$JyY z3i6r4;-Zq$^2!Rfx~jgep;4<2A93Wd-=0i6Xn#4rThE=~2*}Z=f#8I*?S3kBO90`- zbH3Xgb}{De%c!+eXlt*5uYh+yNFP6eQ(tz03s+M&uid^w--?O`k#{F0fCsM~0uW~s zy7Eix)T~XrwK`q*QmT{Ip9Gbkg8X$C=oCQJ$8DTOH4(xd98Q-AMKJpvW{~Kh#^<3Z*7_t}S0pJZD zg+X5QfaGEzvUK&EgVu`Pu807n7-kb-m@QGq8IG3e4YMtibPg&F;#T|IjBICrf$)DS zK@}Sh;5Hl}si39^nR@t^sQ|%m8~I3^;R4#;nw$e)&p$|jsQGO*%Sd%-^BX?IfM`x%{Lr6Q5Y-=gc_lm95PCq zj1YwZuN^^DfRma5U(9R&*jju964wHo?f@XWoL($1yA8-8FW*Rtxq8jHLXHE|Y$uzP zCk2qzG*1#{)P$8Uil{&rWUcJ4F*ej%7HAy0UdV}rSW)=qS$5sI=p`OH=UG#p><|H# zbEJqkjMvf?vecUd;}=lfK`gcXkQ$xPhy_1v62<}CxhP7GE~CSyxb?-Fo4v;ClDhiN zWoHnLTmBG~X|z79b>`Y(@nUM467{JR{i^10OvxxzG5gxs#glJ(3&S24bjkVVX-=sN z3g?f{i8i*FPw~@1gjL@h>4a;SoNJm>8>JNZD+mfxLO0*z?9mmSl9U>)Kz-b9#o`E{ zHKnMDcmAc4OY$fVSB(mv!{uBGor|%Vnu2Re0T)E{Pu9-3np4frCCvK0oh80diW)r5 zk=GS%}M#H z8XV9Kjg6g?$#_BSPT+!A4Fo`W^ailx!8ylT2CrU68wXo;3JW>N#U7|B0eldwC=0c8 z(nxsDQnHa=`KX|TAmAhc(IkXcndlH!0Zu>`A5S3&PXmzLsjIpcI6ss`^pe6jK|IuN zr$$tO!23>JS|c6q`?&RSWNL2Y!cw9l^p&K!-bL-Qm&dK(4k zo0qi{%4`}wQjr*uC|p7$b!5>6Wx)VXauG$S^#|US8vvgJkMk&o2lSi$GeQMIXL7D& zC;w16g^VP;ln{3}W2YtoWD=Y()+Fi)&g%t!theuELAe`bdXEl+JBP41ZwDElNNk@8 zon_jk^yyRziP}Ub)O?wqvpIuVsYT|aPO3;tt>e+30YZF!)C(PStIN@9V>R?t)GOM8 zx3;LMPfr|QhX~74FmzC}=Kc%$ahg>^s&S1qraQAK9fjV4^wfOM8_hCrzCtisL}V7C zaSxjNuNXwDAo*$TLx(}7|4ET|B#yXbsJ;%J!M4`nQ2A+}g$M$sPUc&kdQ|st%ZV)n z9@8MUo65APM%5q=ig;*XA0C$}ku5;{=GF?VZy5qSZEO!<;1ho`6u;BDo(3C4lStnx ziESdTkRf`af7jCOVyFz+(plm;C*RL3DKD-(k6pDeVC1rVjMv7rv1DzCA&Q47yUjGq zc4V?^G#c;-(?^X{?#S?5lT*vSLUAP=iHDWTtmN|oVKNGo#y=~T`8qi5Gm3N5kVd0a zu8LkBN9j^^(a9!n5A3aNfQzVp&%*Yc$pEQv4GHFmkIZJ_B)`9~; z<=zu97?8CR17r)4%gF$Pb0VavQA4hk%X!%fHwx$Dkf3Q{p|tkO+ad$|0sXC(;c!@U zcAB^G7?skmS_+sQ13^hHoD-7w8S)T>Ku4?GUXou%SSYvny^t7vn#>&%!rfDb&** zG%<}SN^=)PPJ$XUPIaZjkyoOR#Cla>om+D@1|4yEn!wAH@msk$kj3Tp<5)Ft&1(F* zg^R1J*5-cow&&l0rXZW*O~asq=zO{`X;f2I znh`AySYMJ%zG5|aDJ64RRZ$xqV)4Q*U`#UMY8X8QgcwO>*-ej%JEiFzx#PnVGEoVt z*S_A-P1K;Z!XOOix|A&H>*wykV++_~w{DKU4$p|g8d{Q6bJRj-C?z(FQs8ypTJQy3 zS5HHHLRz%A?8mEXyWTv7a;U*qWT(7ULs?fLSkx88Q&Il&`K_a)jDT_7L$Oe;JyU7% zFlt|-Ib8l}VBSFg{JEnOTBg`Bqs3U+tcEx&cI{Azp+=sDUxUTVW=TuV@eYWOEm!%n z)8NG!_~R6qix54~4?%wnOm;_-hsD#~l)^ALK=#!x!Y&}NrY~NJ2hUL>Bz3bde|E0$;RdVC zRvlKSdIq4}Zr4M(uc;^P)cRB`0Qh1?SEwL|&@5D*4o(|~P;k$}yV$;qmo}B3bbM$r zvtQ~uqFz;lRw{YMgJ1XMffOXWQD0sLHB;F7fI)qqE|d9fZI!AnyxX)W+R z0WkC8Fs!K-;2|*t%`y=+lS(~_7`N+PUBU9IURsuwr2}Y9-M}FM_ch89Kh=+!O33}8 zQ|ku8%~{iTF9vuH@rC$%lDQZHV#cIW#cj8c%VGOMG@VNqZX>)7zsx#^H)RlwIMAP6Uh{qh%_MO+5$(vFlED88`9h=ok*1J;I*!ww zwTR`pCD-^T)fndjapWE*zRW1mu!>`y)JxMeA`N5?_w7Q*ac%nqa{XnOYL#b3q8-xmw+#uj(S`~6zw$K^*Nh9hWGoT&#Tm$x)M67aa zqntzm6~a29LPhQ-&ikx79Zqk$1p=G0nH`_gQ7B7Zg+7ic)+Tnk0^{r7Ke} zD#m-1CHOK7u`s5tm0LzO^Kt+_!HgK?lu<11j}lANsMGx;gkRe#iLPz%tn7cQ`XUj9 z*>-ugSxQ01nd*zP2NZg1E~~cMQYIihF!lIzSOa zwpx(ZDhcDNux9eauE~Y6riL$Ie#-viQN!-;q zHlm_NAJtdd{SK2zZK#70^#fq~*RY3tI?H1mK86?oH1Vl68Ydh`Ka#M9pzXsg>zPTIWE4@eJUl*Z`M;0c@xqU}+REB2V z#`cZcX8l47N#v{Nz^`qyN0P zq&TE3)tRfQb}F4DQ~~@$Vs%jm8jvKL7}b(&Is$>3N}pd`JcxLI_@VLQZBu0P*VubaOi z6Kwri>*zFgtC19g7%3%?1iiw>jpAED9W?$9Hf_`1qg#}uz4f*UZfTL7B5%rA7zX=I z`}JAnIV=!qBGl{b`q1~RSRqLX#{fP@ha=Xn4$_Vd+>Go?D8)tZ*oHb`AoQ;~;bLjS zFmpNSX0f80eHz-0Z!IVy*bHEIs({cG2XL?ryw2VO)dc937wIenm|4Q?GpVMrC9H0w zQB3U^(B>qR(DDF8238#-B%+ms9CWcL-;g(;%kCUI6QVVltI}Edd0Ct&X=Zt?p(sVP z>hCy7U0feWo|cacdM-g{)u9=xZ)HeR8FT-KDjp!^i%FZ|TCzSFp& z!e=+e|>=D}-i5`>hoe-$I|GLy0QMm+M+GFBNxf zS@^iY=%Y%S>xOLD*vx9qTzA;nM3@TJJwNyFX6V1F`Gu}&=@v-i2FnBTQan?z+^qja zSP^%9@Ad-O;Es{5qFgIrFe>F5TB|GH;q5G;*nvt7D3N8WNyTzmA-*Q(mLBBaAJP5h zP8r#|=?O47FZ#Z7H2+!a%#^T@r4suv-Cnlx=@>~Ik)EKZloAhAZP+L-QeyQkp;CkP z3|xU}DooQ6MHcL_=34v(Ywra?XRp8Q%OC97CpL)h^=&-Qu9`G+(eef9-md4;9gC{> zLCZ2>DP9Iz*zBv0SV9GZWk7b^uTEJco%Fay+8(#??UxHHBL`v6JPd(fxi>;HoAh_H zYw#@pYb5QJhnt7#>2(r`F}pHE7c$t{STCL%(|?}c^1J25rN=$9+G)$^TX@sOOD6^z zWj)%-(}PW}v+C4i?>-J)Y+k5KmDGrlluDtX?V{E33G4TES^T)D#zq7SyUAo6Q^Tg5 z0oof630nt=*D{D5eLhOpc@z47VFX_wc-Ryov?824QoGks`Ma> z8yrL>rygzN*26<>+nea@ymP$fwo`m-Kkv!u4v<}5 z9~SKwcM==wV7PYYn;s;ugbuD8cyIyg+c`1$t2K!IGDPYzhwA;L)bdF(3hD($-17s+ zejRGEZ3>nllLSM()M4Ml^?f%cjvrz+@aIw~;t=Q}{|D0y-aBXxn^dgc^XlEeruu!t zrlGuBYbO<`Jug2D4i3v7&bu?;Qyw?ZX)qBBst;MLSLh#_Z;Za3+bFa3D*Zj3z|T*6 z*;H(`kYFxpmmZmF`VzP9D`Q00%;mdZF3dMi>4$GO_J8pXOA%Y1e?RK*jsf;as-jre zJS;RgW$&*s>5F?34n)ttAXh8=qOLC+kFMe7nTlk&V}{y6w#4rhbN9pSmvz~_r#`#1 zv}0rKgktzwSIC1#X)dr|T}Lp+aw*C3Tn?z_q9^5&%+}!s9??;w9nS^Zt{8|ST^X;x zs4NGF`zMN@C{Qcd$&)fwwti!MDPydyaxX#KyWAx6dUialdvDx-UGMwL@i{-2}+6AvAG8`R&2NPlrdFjQ}Uk?(vq z^mfnQw$`7bbicaU*>y3lb+0@ZN!vhM06VfLkOxI`r30y~e>--^!ZM6rGdiyWD_{y- zQ>iY(9v>vfxs+~?bfEokaQKr_U-191(ZuI)Q0T?jU+MeXZ>~U%gMrJi9}=JYfn{*F zC*Uqx;E|BEn=heGdnM@auJE^2LgxMp*X#_^1S7f*PqZQ$kV4@g@aNcx3r2l`MHEAW zCRo;btC!dL4MCawBl5D&sgv_J)~PH-f_WKB1)M?gHH;iikJLC!JU2xO#2%g%+LN!k zuygm6$U3J^9D;Pl$calvUG<}B?yD`lf02AG1JCIx(GL;N8P+N+#rcbpe6EaZ>IGj- z?75+;E;TbQgQ^-nD#4FkRMky9sa@YV*g~zuK4oZGQ{38ZpWY%c__Z?$<0x*3%Y6Gx zpyu%41#OXWKE$=wTGC8=FTsQkUG=%pFqY+W7u(;MtvJBn_xCBesfe{z%9KcVq4_FCE~`td?aMpP6z>O1^%!A+N|*}@+1e^w zbF6Hq)jVa^wAP357<>VKqohpUckwRCyK#BedwAL9nr{Y^hDn@D8H!TIe&FAc^d|fa zB8R350(>*eXLIYyh=J|{>o80hBL8>>gO;{BnYwy^Bd$*&Z}E37|N0#3pM6K0JNNAQ zkC}fD0J`X-epi2)^>_J)vs75iq@>Jqp4I{J;__Vyv}Dcl+WIy7T`sZ)CgvY z0z9M@tf`@Nfu;MH8B4_ErlesB(DzT9y=M%j3`t5tA1gCoNeO$0x-5TX9u}JVfj48j zE-18HFF!cl555`Mby>O9yYOJ<>iWt-L;hN!c75In{raj+db&-h>CQVzhb;swu3zV6 zbK?^C$qGp5)PcfjCukGay2L#oF&s1Y6Q<0>zfdj!q%UKZ${_sg!sZ?;pG}{?!{Ef@ zIr_)7@*Ff5oH5HXw&HsH$ec+l$!uvdxG$*qXo^iJNaBX=^^6UV=wT)&HxX;h#nh~7 zkZ(aTWSiJVK-#U!rWaI#_2fsg0_4m0+HmTAt&~y3_Eu? zGXDeOELeKZ@6^3H$-{rbgnvPQq=>)S_i*?4FD-Aj0zdu}D5Y_l zp52_Ti(`5&JfG&FJ!t;Zu8e%iGr1FS`H|?UxNTVp>>^7AXv$;;ze*4C0}{oaS3|8m z{$QdQ3JtNMDXuHE8O-pv8^8b+{On4-k1)mX76>Dj1%cQ?x;&`dPa1YAKn_zE)Z_<3 z{RUI8h!Ny8VlXY^F*OYaf=V&JI45QlH51d55_INm=f^|MA0g@s@6K%B*?|jy@E|4- zpg!=3ll}_0hF8N3@W9ldu~D0mQ;2~y>?LYO5Lj9+78cp*6R64PLEGbR)hTc-mKpK3 zM8?j0`yAZpCrsA;3xwi7Uf?>?6&(_C7Kjs5xVXd=CO(EN%}!UWD<);hvI@!Etke5T znJ9C@Subb*TIhoRsuNN_kbcg}YXAt8eIl1aL>*(ID?}Ju3MF z3J}Rmb?^I(;#{5f6lbI$2gq_a)R$V+*FCT;Hz#j2i$^6Z`!9W3$BPd^$O%udYeXknDFp3jE2BCiQfvH4yDTxr=66Mqtjz0$@qb&3*EC5H1A1xshuq0aL4%$ zJy>6i)ntgIX=bKgR_DHl(nUb3xhb0+C?SRP5d)?0QzLU?y$>z2+mGdj=8C(M$=~T` zu1{S!OiBprBf%tOGJBfFK79Fz@u;!jpz&brTd{`K!{rEc01HdzSCAVC6+*IsS8EGJybft(}hoZ@5#CVDnoNHiENh%>Ljm%QhnrLb<<;nLW+~Cllx8+gOY5`Fznk_pl z8hb%t7gaJWWKU)oS6YZ?N)7B*I+7M4QT2y2pqM;LQvB;g%$uaxm*NB;wN!KSgN(ktW+NwsG)X>z?anf3K@1 z95LB;v5bRnTF$@D^1pAH>UoFEmN6QKB`1V&7?*#+q-ioG3aq`LwyI8+Bg0_Qg>O5u z3%eGl+ue`2l;tf{w01BU7!g_pjS!aEhLm0^=ra?6SfaC-?1e;58m5N&D${S2Om3hJc}Um7D3*8oSSq{g;2=EI?~C(hD=j135_(H|DTuT3 ziV5@8mJ!y=rz`+uS~(IzjF!e%p$PO=yi}d;;I#M6w&$C2rRr3B>nrihdOU-WgUMvP z%bqVx9$-Wcpq5fFym$gF6tk$SBtK(y;0kuZ`a@TDzDfsAHGF;w6ETjS(Sw+ z)2K;eTnUrqXk`m(*VJoB=_a*lq(j9P1nJ0LF8*TtRVjnU(r}r0O>uLeIA0##*A|gM zCgc?r(Xzz5TNCIN7LAOjFahC=5V{73M}vHd0g+qLQ(hdsZPOdXPB;Pqa|AGqHLWmt zSpeYokjWfU3GiUDF?1I`{cjI-PN)3pr1djmb-7n;O_Xc_Z3glktDL(6k1fvzez6S9 z_dM->n3312L_Re+8L=)GYPJ}84SX#oErTsduZ}zx55Ml>FBEzyVj$~1?nkv-twQ(V za3yg@TWurIYVEyi%H8tq1bXed-X?ny9iU<)>11hwiBd=fscE(a3J~8!Mqfn`_p#Z@ zcMV{QH-2_L5X)-O*%NNxsi1Rgzx+rqc(#`U%ZJ#ks*7PmVXjqbG%Dmen#rB-@N$)qY(SL; zl*n@`NJTQa2w$Ilu|U3mLD+84xjEdWvKhXsSScAiSsvz<^3nV*a=PESv*+;|LXy|t zhWT$EA9j8G0~9>}o#szW+WN%_Uh1=2{FrJoejBc_X-NpSmK~YMQuB)rc2Y3uSz-!> zflYe)@>?5vH$C?nDLcZBksSFV%yD1$J0;ZdNYFRp)u-|*={fDjZ`k}bzizm#BBw9@ zEJ4|7+9<-X(e=8@W(ZcjuWi?l=_DWie7jCeBa2?C^^~MM(rMv$%EvB?`~lYyf--+H z#bpGKEDg%t8IJn48x&)K;sI9^uhnKiZy!q!8l5(Dn16EsKhJ;x>C>GUMF;+R(6}b> zhgObo(C`Z}Odu118m@*4Zvq9A`~VtM3Y2q64o~nZc54>^d|7ohK5d z^S&3cC^avYAQq!ZwhBaf=@!KSsV2Lf#y!GZ?(xek=CucT_T$9&rgj%Mm$~P}9d&cC z^x~TYN-MpXb6aO0Ob>;6Z;0Vgiq|8jAzc}%zI zt6q|iJtIKO9MW9yn7BmA7UIeI$ubf>y%Cg{GdR4V zjHmg!AN0wjg1QQRS~8nK;Ahh*$$TspDb8gu$+=9VC@Y@<6kw(4bV*u+55*_Q_gY6$ zIKX+iwdtv~#~*#^j%uO~rvDMO@6sQLW(T55c^10s>=7uNoqP}ms+*`uw(DD?!%qoH zecz%eDGk>yM~9viT!&hu*Oi>7hl#oeHsRlyl(dT5%0eV^6q3S2ZAnR$1dyg&PfQ~6 za7o(_JNGT+YolU#kNhoq&{>8HmI>uDYF{c7iE7}ZPUgzAc7=aA13aiz6gA@5${0Hj zA7+@Y@)89*$npv-r4x-JRJMhrtlm`@BUXW*>1(jENCsgwFb=W+em-eI@=W?G9>q!L zLHXYGUt70N0Q-HOY*kW_aETR%!zhx)l3Oi-{uZRCvJ$tQM*ew@Lqxo$hn|5LcCNN;tN(uMXGgnMiD%1zpn zl5!>~<#a!2cW~0~2c1qzIk(C_w5QFHu5jQhwM|*o-tl#JA6mYaXoY(&mFZ>`+E&Z1 z1DwYJh-^tcuUn$&!=KDZ#_?<1yNSL(_n4A;u&R|a9Ma5C)wpa)s)lZk)6lqVpX3J? z#VKZ7cBd&4mN_N9@m*>eRS`d=(R`hF*g~+b_#GRjJ^Xcj*{Bt?2nW|L_XmT=iHvaliC!RYvUux<8? z!9D_gjZnRw@L+0(P(6H4^x`0{VY~~{l*u9q(PXD-=W5hJ8&$`F5Cda8(A zAT_tRwndQq}aAD(yT^w0`cRfmE;=Yv#nWU!da-DE6R06S4x-_`wXYLOIXHIwDXk)d|5PSuf zxksoydJFoG-Q(Jdm74!xnrjAFeY{7IFl$>M`sK<+sAzH1%YI8+eaHolQZG1FJZE?qkdh7C0T<%N)LK6MQibEJu zTtT(2%N=%iOZ+GAu=t66NJKLe5^I=i1&cy}%ZNV99s=m}$kF}~20k#_oXP_}U2fi~ ze-GJ(z1B8ty71{{oNq0pH0rOFcISAtOj-Kfq49pQbj*3^2!UYHJU$r!#A}B{8@4M3 zVY2dWSt5s_mtmNT=b0Q5XjZmDGB5Fc9Rn&pP)CMsB|`#)Y~%E_jU4|cva-9S0FqLj z1E!Fjpa3$_0K@9tM3l9;r|eP&uOSmNL0UJi_16MOn|?GsAJ!zrSQKaT^Wig)l)>UC z2>D&2s`YA%jWAuFk+l^gu;U@MzO2gGfbNjWwm=&!JC8fP>B?5yfV@djPkxDK?#ezq?(S#p*d8ZGx~26<4?MQ0Sp z7HLiBDUo!pZ5oxbQKHK&q0!8{3r^1`PXua2a(r5(jNS{~PG` zC@&mf9M(3y;^y|qzxGAdbufUM7k%EW-l1oui3^~=Z&aC0y6B^vQMXkvqeUxu5{xQYq0^9|r zdo#+0R6^3wmwBU%1&aLX4QA39r;#VwcC%aXQo`++x5vChau+~+=o7f|B;v*-7OXyw()`Dwl$PqHjT8K*=$E5WrRL~JVS7**70vV?A%rd8C; zdBhlOXF_Le2NuODG9-btzZ!e?D8NL2Pn_P12IQWUgw91a+yF@#F!TW*#K1G zUVs-;0wyhl9SC8p89T^aqMllh(2K6aiI!BX>G?nhq*2qb0`h{qjPF@hd}%h9 zIg-h^Nl##I(}(r~^~e!4)#EMd^ka@~bd0}`L}miVGTVtd3zE33cBUn>nSckw?mmV8Mh-lAr=cqahxByQAx#1Ly{70}9l*EmA->%XEw8vZ^?Y zCJD%tgO(DkAfRQ#>UQEh=QSH-V%GzS(5OP`nOWoGfy8PQh_M*;#1#g-fR5kT27+t~ zUUP;)C|2Po6^O`-E4wAVk!f|TY9>aNo1*}TvJN$^9D~X~gXY(_XrV4D%<1MMcXs0u zyIT!NX+Z&4DwMemDjhX2tEK|4<*d@??MMIr(gX?h0d}yY$YmaAe9{Qfs29{j_pru& zP{l-9EB{<|>GEg=L#fA0k3t$%( zpqkEHz2){-U@5(GiHcn>SE)fAS_HcemN_Vp)$@$kydlBL3yq7(ldvnY*F>oprw`ak z2~Z*rhgoEdkHrx+$m-iA7dT_aO!P7HV>CtjBrsyewbY-4!P`$iFi2hxmsX(CW-s0B zj)j0Qhso1Ro^Qg~4>>6HKp$W15+qUtyl+k1e+gdfMoafIOJ0OQ3EMQ-fI!_{8M9vu z1bqge1rAOSay^*TEJmmvaS<*hy*&h=fK`G85Uql6cF_af8C4e} zng}`Ta>UOq4XwGHh$TN)<4V~fZYR5#_$p>&p!QrKuOh{GQkxjXZgI{XlIM$x%=jv( z6kZXpkrbO;1Nby~Zcb-^z~imGj;j9j_gEaXqS52;0las{=o-&It3CO;mn-n4K2I!{ zTU;eirG9-;UIuXj3$ekZ{OI!6U&rfi`@$dq8K1jyjoop({<3^UH@QB;#lyc;;2!zo z1y{(o7g#y1KKKVAMx@d89Smkv7KCIhBq5pA1BC`b0rc1`z9~!qO_9jAIp2(G8#}Az zRhiGaZtJauXNQ3VW9=LgT%EHSkNolH#XABvxY_`K4GvO3vhCA=F4K!L=(>Gaa|L`l zn_qYt+rW?h2oWpN)-mF0q0p&FE9r8H*SLI~IArjLWR-KlgQ0WIC&hLblf{Fk9uR1& zanlSHAc3tM*`0w>dI$R3@91i|C3cN1UtdpN1H74CVB5IqND$Y#a0uqdx%_mVkJ0Mv zgFVx;jHqR#eml%7VX2A=!xKgLYH{>AK!-6LgH*sq>`*7~YBK{ll5Xzb(rwf6mb+M= z`ONE+_Q8NPaIUh+hw|>M;uAmr*}ZYvbTOvI)t}>OaNK>raXDX**`=A8`yIPRSRzt3 zp`KY*XfbiqiPcwC(19#RI|kx-N^3I0AZQ^>O$(u4jRKk4R>I^j$ zP)V)w-qE+ayJK@VhqQ8N+e#B%R5@}}>*7j@3s?@dg{KPL7&k$nT8=fm6WyRpWj3g- zP=c7CibX@#3{E$c_@q3`(t}}_nL>n_J`)TGK`sZKK>kxe0FY1sOBW#*?gvHJi+U!K zlqWJGjE+gsshe%1-TWQdfFV8K-@Wz4GqtyL(*>q9<+i9Kb{qG)TLbWE374z5{=Fq3 zASIb7Z{EK0|C|qChHb4~bya!u{Zs8%&Olqr^XNR4;)2O@7OJEM_aJH{qEfq>|HjvAz%xlL&Y(?nTUJT=8v<_jbWdepb>Dlv(F>0*3H5NUF z%{Pv4SkudVeCP3eFGrxF0tmhU;Y&yhQP{jsd7wwsv(@NR`L;*Ew7T3>qC2d)!m#h0 zha8Sk3J)r5mu158E1sNF#!Lx*KyG)-%DdGd5-Vj6-I@nXhV`ds!G|gA7LR;l|9CP| zl4s0zF6W#E%)oN$y}bc4OyPtRt5hnu4g92m9Xd~^`9}&YgNvAOKG7%tgKeD41ti>^ zU27t@#M>eA)@xj$p3N@qb5Vs`!|}LVvWVp?;4m6rGlwD$epm(h7%aT_wqjPLtyYhb2?m=Qn)^hqFa;DM>laT?@YgUHbfpOjI% zaLAlj-Rzv`AR+8qMZhdN3?+g@<4ieKpn|#Jg((>w`AR>9;=lEgS;^>65%{Mc5}-*U zAbg%y%*%r|uOva8qsUX=!8TIm5+^7W;3*L$ioUX|N4fEmh$vg^wO^UCy55HUjH!{Z zY#I89gexz0ljs9@iI}E}trR9U6%(7XrNIokqZAuusRl4gq+y2~Fw0g0ho4T8TXqpH zNZIYfp~~BE7GQ($f3-YUdE#=pkyfp2fu0X^EqFr1?JROdMt=YE++26Nz<1esy#=p+ zRoMe(ki^fj%FU?lezypR3|)*c#laWK^W6CamF(KE5R>#84d%GK^gUihL**^D(YzkbW7XVYlP##ZM6d35ytc zw+~dQtCivtC^>HAET9GwX^GCGiJsm-h)n7#b*mHL(5FgT9$yJt{*H48fU@MDth z`ca`z=?GI4&CUn=oPlzCVGQQDIWf?5E7a6gY^FtEih5WgMw7F`Y^iNw^Y)Z~ICBD0 zG)DlK!)(>CrV6D+2C<;5#mPPm|%+R%xmF^vKhTP zKo2wdSI%Y_EqhGw*!7YrOT=7Ko@Jztk%9_FKzBy@45L;1be6nq)?%fOdb*wm`g%s^ z30jI8dZaG$hNvA7Rqs|LT_caVMg8qSlxIctZ{Y*crWJZl-PqbP08P*`&c8^DAr-~0$kEWC7e-i>y8h(! z?tCasSLDU6G4M9eR&VjNA&(~VCAR!{6q&NFS9 z`+G=I@R)o^Mv%qS#+7BzwxZS@9{Pzj5*0yO zFAmFB*5!ta8&p8*GD!2wNGPv7|%t2Xf=I^&^1&884bGyej5`t`UGp3@n@O; z=vL<mx0iRkR@6Z-h)gV`Df&MbMlei3vJD1 zsyaL0qfINR3-z>*kja*?WVjA6j3Hc)VaKj^30%wlvZ+-bSF}$Z7!@>(F5yf8(b)DR#LL=Y<=eHRU4jpyh3ri zRfLNuhRrPYfN}+1*g3ktA$%Y&#|=Ew9b-;${Qg?o=AQ5CyLHOx%o}tbnui5TX5!knTFN+ugGZp*uspnp?Bky=AeS+3@*dW?q0H(#32Y~Y|RKM&0 zQ>Av8>iLv-vMp+oXN5AfTLxtviK|2mYV7xBwh1I_mSq)JtKsOKt;DP1 z>8s<#V;MMA#V@Bl7k{u*Q;kD`iYEvv*a$8PV(PJt8nDk2UhPhYJH>49pYOiYef98I zEzjDeJ0Cwj`J7ABr7jcR=1M35$0>$atshMw-BpZFt1_i;&95j}wj$=7C*vrgk~k|1 zFvyrfGOQmS7NG?Oqq$H6g*zo7|NTzJz#;pu<@OHYFGkBKzZ}_uWw-n>)CSk#o>anSs`4`(0S@53S@Q9WvXubo8?TqxOjZE1J0NKnXrZA zb;W4szZ&|ZW1uu0TIJ?caSaT|x+dk5HbLDEfbbZ`#S=-3E+g2yMD+mb!=6xx$Iy#QRkypT}yCTv=MkQhsk;A(O)F^3qv!iD9;IRyGxh=+ry4PFujWn zn2mYE%TZ5R_t&b39>v-ovXng$uZFoNqF1^7p)I-Y!0Z6tk3@^i+-^LC^NEzQ+MkB2 zP|a#_aHwfbN_J$ZO&eadrTZhB{slaZlG2Wrd!wob|BQ>k%*~K#hgNeKrbzom5sA#5 z%6uiNha}`6d)UjmcV(&7tO%3}MsSoKgq>KP_%{Y=FS=uxV_kA9l&+g)80EEJ4Ys$c zL&K!?S2R~Ncf-kieJ^G?Iphsx@xn$eP_^t5`a~ZS5T8u40nz72C9@YB%DMfmXnE#S z!1+`m5C^mgY*kA2&aheE>l+Y+)Xi?w` z1$jf;kP*X(@TyLd%ye?aVE3SzAr$B;N{^e)Lx?a`fg6C{DJyPonvW?@F&SUa0#j2L z&XlT8T}d-fbb-=K>u+F<2f16N)9|4PY5sX(rZin|?z&^{s`r%C(OcVc(?*qASs!j= zos+J@r!wfq`Rz@^GE|k-%D?$^F^D-B$drTe0XQJWXt-K9k4c+1fF5x+64rr&Y|`|$ zX^$5Kk&-6Nk0QXUuMB`Kl(f~NjzS0G`{!B$4K_-{hEWae1&dySkQOcugiGCy(4X-1 zdZfJgHk^1?1>+@XpAz5#dS;abc!nUTLr1K>RUoQX>0MSZI4;Kz1D4p#OQw7K-4IcX zDse<&-xHnmZib0eWYO@DF*M+zbhwj6oFl4XyY|5t>DsrAY~Iy*VsbRSxn}Dk)JVQX zsBXi$rAdDvTPNYXp13yc3Ak+;dAv_`wXFY}CVM=yx2TBH%9fp4HolX&JV+x-aAt(T z!ciSqG;7G!6+~MA(4}ivN5)NHTj`0J)M#t6ScRd245{$5Y4~+R$0Ou9zk)R!6^uxm z@u|h3r%51PFV_SmX^;>?BCd&CTL(V7h)fBNXefeRTKljHmnUcVIYia0$1Pl12tXub zG#JjVlKFDeR#p`;N%J(`FJvlG50^^9T6kg=**t{mvdb7f1wEvg)D`rsu1!F|ckuH; z>tJAB)UGx;V7pr5|~SJ1(6|9XyBg8aEgTAeBMz*U$EnerY&boMPUtHb$J<9vIW@D43H z$<*j{85+U&xK^r9V=MbqhB160WTuz%3+gIj!}25!LItIqYxj}*Fhlk%#rB2*lM6oJ z?2yLzzH=~e^#mn`MrC_z@VHUpV|nQleew^1q3I{qd5inwjitan58UaT$3>*~8|?7{ zJ6MKSH=eAmqXuU6aPzZeovc7)oxNPF;8kCqpHx-$W$E93_;?6(7um0~GE!XT4Ue12 zhYggd_7~Gs2hZ1Yh-#G;l%k7Pt_8+%4*XrfdZv9Q*L75ieur?BR%TqqA&sMWL*~=m zYkJF&Lkmh{pg%K3GaF3Wx&V^Xc%PX6_!O~6xhf3LwZg^KAmnrq?`>oRHP9DXPRJ!C z9C_R6!4!uchLl_%oe>K-_R)X-A1ouSQ#}B2`jkgiKBIY@M^hoCF0h?wt1hviJ#&|{ zs_D>@jUuS*XgGfo3( zn8ueve{>OmnkLrvSF$^Dp03f!GD0Mq z`&Es4Caa<{UQ2OaU~^3uvQirTXcsjmS}!$qcfEA>!$Za{SA{EB0{CbYW_s5U8+eeV&EUh0`7b+W7d*G7UNfz;q; zF)@aQXa>>k zunA3ywkwuQfY^5bEJ!1;s$==8AQGJL?)6!kH^#R}e`N_7mjh`h!6XH@tiH;0*R3iN zFliea{q(k zs3&io7yaPE`jHS2X+&J#hvAX)s3Sk$ZOcbqCv68h(B$#8JpoJrI0 zEuL{VEJg450X@gMI@F6Ia24=@74a}G@6pxA&I>*mYZX?%DU1jWw@-{!m5fMD@5dRF zvp}IMTv*CP|vAuxA15SzfLEb(HJx~ zozI%%{~@_fC!6tnnu~uM1}w?!jl$FUo9#ZcJ%oPFq2aqO=$~F7ISfhfx=6*HAjr+@s1W)0n9N?zX(HI&|au-a`+$OC(k9jx8+CT{}hwEQ!Ez4hwd z$@9B9PmbdK#Iw?enb^SqN3UwshUTJUPFe>o&TDoqE4uMmfX5c)OO){4Mm}L)OLZP2 z+PQzJXb?rr%=T%PDD=Vwxu`X{z0TScmX!ATg7}qI&Bm}3sFasB(gAGnm%q_kc zbUD9wvF9y1-mozB;Wsxaw4fY5?t`}oBjTe``|SR5P>lc?pT}-LYHI!3hy)Wjd;IV< z6D~?B&E~&IbWufMGG5o^nDL^CQrJP8W*Gw$Y;j2xmSac}LnHEt)`-4pdg=|mUFRh~ zVImuej@&S)?0G;W>d{S5L)@_(3EBw+H9E4G9*JZeDMt!$<`Qs$`)gjH9Zcro{=6e% zUog~`ZZNw@NZ?{*xdZs7*cH3SIOIE({xcc;V`%;H-&MC#KLg!lYkC{i=56Ty0pycj z#p{1$LwE#^O?L7YuM2_Qw=7-8vOW3)#{f+=AH+`m8^pMsRyN|sjQ%Zt(P@Ryygrr7Ny&VM$c=Bl?Ml!5Suc_ z_*xJnN)%|PQNJO%x$~T^lM%X`jS-F|=p19yASDrc*YtCCrbv1`mp*JPG?Lv5B*I2} z3>C14(e7j0*XW=b)#daQ@SvbcK4l}~9tdzn=q_J|=g*6RqN>%NAzG{(te&wrr)V{6 zLHLcJ8qsI-$X9<~@DM@KUZ(y5WPTCj4bEIDYTha+A^6kwW+t0~yg+*u?}yf>klgvv zcOkUbnGV~EHLc4Vd}>qlIF!(Tyo%%%=yId%I@_FyHzlCRs?t!FQqZ>m`cmWk4{451Cw|x!GiLB9Z6l7L|Jo{az#Lcqgu}l!I>A zJ6V?v*^&w_Cqc~+=(Scv5kb>8SFR{A?GG==o8UJr@(8yli_6!#Qi0CiI|Tp zuT_2$N9J(z=jX&LXdhV645!)6nu$c7!2%8}N8Ec(*cgR*EiL4@&DA@pJ^kp;;>W5P z0-HOg^{4~AG8;z@H{JBv$?UaHXLmYDo<)!`(pjeiKRvYzBt~w-UQ52M-Qx6mSbtjO z_%!wgb2t=;I1d4KEzZ~B?upK;8j7!5*w#X06&ykl8hU23-(IbC6eWL0OgATXg(>8` z8G_~^}5Mjq-$DCrNk}U9UvT_(wh+6YHiExU22_R63M|B&uF2O(QxZdoDfolI; zQKD~pCqIK^=}V|xle<%E_PhR~+1{W~>1tquIH5rXrs*Q)Ux9(ga**j;@-krryRflQ zDG@FLJqgS1PHkd+(D%~v)4|1(^)ancw4xeEvpP$o3nS*txsB_X78U5cwEc9j+fTSj zVwAQ2NBaFJ?k+^tNZ}tMTD-+*TG;`a7zoKI3&v#&4JwNY+dF;|eqq}-r zy4-6!E=1)?hn+3dFUF%5ZW6Do!x+7E_Ga0Gcq{}S(rCbSr8iNw6ArxEFRr`pVXJHz z2Vjv`WaBMHyzq`y4J~mDoP?3xno;vP@f^6Rln8HN&lHZo@8Vs$SC<(;RGH5-a++EFL8Tzu!iL^uE7&P zHHu&z?cs~++F@Zc;u@mJJJ_Pk2(BG%^DD^hw!oydX&^FW{mzm&TI)}N{jVx zQdZjYT7v!0Tbo(5-1+`$YyFo!o4Kogk0+~0Zaa*@T**IKWv{~HU-PfqUBakn&ot_T z6!cuAI*He_6;vA@AF-bNxS}soyo=(8A=7=Qy{?aH-W+QZ?zWPiJ#ej(wTBx$x--V9 z9;>k;oS3rQtiA6o8!>__Q=iQ@LhLC}gs02;vLW`8CWojs-YqA=>GBhQYYR_Wzek9J@<=i|B zHB$+iGE2d9v4fPPR*7<=HVYy{(?k=CGUK6iod*_Rraf{aNIVA; zyQRLq1BoL*913CqBatc-v#%xi6JYu6#`l`;$pg!|@N7tpq6LiHx@@*rREr>=Lwzc- zCDSE>^iE28B2CXTIAQ)E`K@h_6X%f*B=B?7kF9i_Gv13ZYe8Pe+^!=v8O1lbXCOAh zRUJ*?QWz5SE2YxlLDx6^TRKln~pZh1iJPRYOO z^8(AAs=M5&DGF*d-wx)%=O_{Ej|<0e8~q{)L-J_<@GPEqGZ+siy{Od-F5F8f<8B_& zW)Ab8ea6V-9W;I~w-0c5&Ec;0N$#e0&ifbht`#qM+}0+|j;rI!vm37fMv)4LkVtd_ z_{|Diw9z+k#N{wh9uRN)jj4c~=&8O?+TWR%qNibx=znCgt*? z#7T#XRCxOPNIv~mWCP>ce6UJB`d8=zLv$Na+CUN7#bKiic8zMp&L& zq46Co*l@!1hW+!7tss*t1LTxLfi@5BUhkByL5G!mQ@=RxPAQCgzf%H3K`=3rq{!jYx-o2{r!Pb%F) zjp+MA^nXz%R<WrkdniLgo3wAA58 zaFxPxKnL8Z<$?lP7jcEMh>!T$Q1$ zOHTXLmM*-&xoGH_(9aRJb{4qKlm!@Y%K|gF!C#gStyEQ)m7~cfTYs_o>L`ICBzbJ4 zD)$Cun1&e>4oWYhu7PseE1Qn2TwUmX*j8$DG88%vU*{1@+wwi~aGdfy@=L6X?cfLTqP&GAfSFs%9hB*bVF|R7L zrcrEEaO@N?SPKrR^$7QwMphLCxMh^{KqywZ!?)|PaK#`7u(o8 za@Tcb_t3o1WuKU^+Iy6Q;&~xsAGxU}FfbryVc>O$?lw2XF2*0+@AkmFYS3gmi=1ox zRr?uttF6@fn3I1Oo&j=2#CFL_N02pDNfE~iQv@=*9_VDb`n+MGN(NO_Vf9bO0i|0P z#4`wygV?+#1xXz66+dJtu-mSfgkaf3xltO@0D@?t5dn&-9tqI@84joDNOG@o;k|3H zpt-#1gL_CLI*-}dqu6BSx>l2XnGM#+ZYq7?Jm)GHF%i|ec28l@&lHjYf+| zCYoGlOGqZ+7QNe=NSW+jPRPJ{N0OjYs5F5$|^5&4u%LuN62x7A}gL%MpK>NI}Qipco z&iPlU%1Yv{Ny=ve8h@>iD}X}`o+3II0fUHqcpnCf0R>U^a1*eZl^PznbBEJpqHqcw z8 zHV~c>?utRaBKWzOZwyupZ9$ZyN`*c(5Ls%$J=vftxU;+2 zbTnUbYzNZrWkf87;W-4j3dm~B;PejtI5?wlXC}qDBJHt8f$Y=-y=iANb^5_1&lG)j zl-dFK(XSFir*4Ju1)Fu=KW`L15C;Kuf*co4TzQ?xj#8XaoPc?pZtmPTBH#>!C7>D% zQm0dnM*w|cW=&LeTUY|8PB7i*vy5puyC#7OtD22EGy9iwMmBoDxq-IZ!6-B0U0<&7 zk}P)1{-84Tt*58a+l;{hIt)HxpdL7>MYk``@jidtnJPS*Km)knr0EUY=T}y3#xhIQ z?}1c!GLj?=y;hH&y4k{Pz%q9j)aQb*H?Kfg%Y}|f%DRr0_hGDnnG5W0NZz#LcEd=4 zoz5fU2t%uFee1sVOV<)+>QJ1~3prrfx$H zOQcUEK$5SODwe%zgM+dm`qcA>Q;bJe%KZ>fApuz6g_;sLHoPa{9EH3VtE>ORKTb68oq_hO4X8we4Q{>av{-D&>r= zF=wCpI4w4YndMDdymXxTJazy)A9e z_U*t9?Z}Rez%LI&g-UnJl)HCPUbx_Ek>_rlpd3(>!ZxazrIqUmcg8 zAB)X*p&b3jxdM#@rb8OQZrA*ipOgQK=Jo7IE8O05Ay$?q(~&76G4S<=YRiD z=0cbW2`OrZvuT0{HSd-U%lX1IhPO!`sXlg0Dfvz&DqlsR$+HnEj;WRZnWog!W509b zW!n^oOZJ?14=~%_{Tj4+FJO#xhKt$u6gvJPwA=kP9jg1t|L5#OnA+xW3(wv|U)}og P+oI`U?5kc}_!9sC1}jAH literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-regular.eot b/src/common/fonts/sourcesanspro-regular.eot new file mode 100755 index 0000000000000000000000000000000000000000..4afbd860bbf0f6946c921b42db28e2458623377b GIT binary patch literal 27090 zcmaf(Wl$W^)~;t@a2wnS?(Uil?(Q1g-5myZcXx;2?(XgoEI{xOB*8+yoUd-3KlfJM z?%LIFzw23ht^U-g8=`YC~&Z_AXpd}5D<_A1pM<9R1g3F@_+Kb zS1J%d{-2i>kRQQ+&HoBAfI7el-~n(2m;o&Qf$9JgfFr=|pHlhfIsN0%0c!suR{t3L ze=*m8P6$BjpX2(EviV0i{$n`+tN?ZZ&%Yt`FHilS^ZzE;|Cg}-m*xJi-hXmE|C`MU z;QQaG!@nwa|K|S>WBG4h`+rqT0i6F7&;JgAe-!(_E?ECRos<7xeFFeu>e4Fz{q+AM zU;*=;0BIb6G!a180B7zzZpzQzYTCxl!#%>A*6pH*JBVAwi7Dw81hei3%J=n>HZMWE zRExWqYLuBn04-x1$KPj#Nsfad9N(S4a7ukJVNGa>709nbPjiN|p^!)J)L6+OXYT!- zz(r=Tpu~n}RIEv`07jRy>r-t$jC+i$jeIS-R%j><8rm>A!c*F1dY7iq5e<@a;?<9R z6`P)tGtY<#HE%IKS}9vh!6EthW;pxjcfw@Q@|bxK6D8d?UUl+8!NyvLgo|?l@#bAa_vK+~JfNCZR6p;VSKKKb~I~O&*%5)m%qtAiK9U!o-CuN}Yn7y@U6*&AL`! z44d5yE9mSJJCe&?znKV5-QCgaB1AHd94+JF_+(;ulpNO(4R$BbEFvfQM6lZ24T#)_ zESR^(+r=>mV+4!7{~L`oNq+VMS+W8pazb;=okScA2aWzhd34=qj*h3 zK`AbNxjK(^OD&NJT8(RTjy5b(g`UU+dRH1!$$kXlN%TMI+tR0NPeds{J%`SWDVQh2rJj7WF3u5ZTXO<(56vKyqxvI^)hX{djVtg1DL~l3&u6z zY{yC=khKyN8u}o0Sc{IulNU};Jw1jit@uczcWDb5W_9_CH6WLu1e1e8em8q1OD%S1 zoDiqKkkE)1%k^E5oSEx%;X8(cbABl}JB0>1)JZ*-Jhl}ZB8`M&p{w$Iql*LE_$LEM zkGk$Wg$aN!W%h<%@lsQ`@6nKEQmqd6N~?>xoi)?2_-<*y%@ELC%UZzANAtZKl3-(j z(6h?iL;u3Iea{g!;L=&<&L&6`;yq#*JtIenQrkt?N^I)uL@(%9^l)Nxpmz)V)8NBuCzCwJ3x=c(8ilkzf7u~$`$4MXm&#E~YY z5@mMlwI59)>m$=l(pkMc_U+J}WA5UDBe_L?B%Bt#Qp0ILG4=wZzp^Tov2GeAT^S8NCBeO+7Du}6VO5Kkf$h_w-9a^z zrAG%k46{;;C3&I+-r{L|(bFL^aaJ~b0KU*E+LNPPs@Uo6HU|$eOLbNZzAB2T;&UhBmx4mp_BeDZy;0Y4Z13GES?IPxB#9maE+#)q=48 zkN)7PT%qg;71#RqQ&N+KDXRAnDK?g&Jn62FJMVH&l2DRpp4}k!hxC|GLr1CG^CtO8 zS5Y-7zwpYmSq16k7ps|jH|Bimq+mM`NcSP*Z^iZ!W#B<=f{?|nq&gq9e85LH0Z~*$f>vF8UF^Y0-@Y5iT?ZG4%_deB7*}P3+^lM$XU|C$@5@OFPY&<8 zqwoVnVV1;jPoHD`ej7x^p9DSkIE#lOzY?E%-@G8pYI81{R?>y%%c*Oon|7NO=T(S5 zwTyeC9|OzRNfpvHTM4g?MKQ1YH&1p~wp;ikwl2!7PY7>H(D}*kYMAI$CKb+oXna%N z_@?mz`+$WcQ=Z@#0-GH66ALr`wjf|wj7qP?W~-!!w>`yG-E=nl;#9I_I8LVQhFi{e zueT~HE|PO-HC?`JgBO6o6TjH`WkbIa@ouBE+=Kiv$R@qug^D<;Ud`_EG+FZ0B&;DP z2_9WVmb>Fh8}Dt_O|@5G$+<_;+LnUV!Ay^w1~q72^$@HN(qC~7%a)_p>Q`oOC!tH{ z)=@DptLf|~sd$l3DnZ9%r4c#l^vW_?NJksJ)CmAw%-0Amk{5e>$AfcVI6d5HTODI1 z)RQ|fEsRMb^&Z+bdZgo8{h=NSYxQ|!eWUeW=tMfQ7&zJ#W-e$Kr-UN>EbOu>HQt=; zj#W_(T?p9_+kJg6hfMBn6kYHX9ppHNgi$kfc0-u3-M5lnF@eUT=x8Nb9AdfGMs$JO zyDHD~K_!}J6@fYO6;~#fJ5iJ9V$M;nQt3d3c1&qdAmhqdT=~~gY~B7JkicOtSqIiL`-yB^jfr}Py~KE zTMAHj5;87Snft63BByZ}DTHCEgFXmR zqWoYI63U#u=Gp)65BEN7($r2@)cnh*lzsgBgT+h)6Rra@?xMDs)_{36f##OVz$1nQ z%nUJk`(LT07yz+5^IAus=e;R&2jGnbd3SFm<4cJ1k6=i*vdah5deE;II1tuap%H0g zVKHHdv|I?l8MUOdr)b82!@}T1cN1EsiVl;wM z5fnR^T`s$_1twVn0p$h8Ma*3<1NLg4$c?`veLS`P(-&Pv+UHz;B5Fl4N?5lOeOC51 z#6Nt3!SfMH@>F{ky*ei52}OY4QmTZ0Z*isp4Ur03BzXInun|~A>F1X!DZb#$7exC_Xhj%Qe=6@u{knP1-<6Vuj*q~cDBQ{Ceya^_axR<2O z(#pO{K@TR(8>!d*M7}fZj2YQrzwWj62{-J9476o@`Z#d(xi@na5^2Thp=VzzA3Zk5 zvJCDB4I|WJJ6PQoaAMX+Dx+lv$3`S6i%-v!&WrlN822qC69j=m8s^r^%mr+^``1mD zJ&u^J*|Q0<5WVe~>t`Wihc3w^xfG8S4z&|{L=(oE=(M}0XdG`}G4)ZQVy+s8sOPQ> zJg+((c6i;GwD5^c&SXwL(DKVhoTdBiu_ovckf?-fUS_P?tB6}-Njt~;1{yQ>QKRF4 zO4bBnwhH1K8$9N9ZaW@z%NGBuYp|^2`zLG&S%s75Gq)CWV>U5 zgZ_p%ufU4fwSfQF} zDGC6ZRW`>MGo|e(Fw`!kpzMqPiaOO<6{(}r+<1#uD=j$7EZ5#dY8VuawG$s6&W+w+ zXY5-+JtreK{uA>q_M+Z51q zGDBe;@zwHe1hrygc)NFyz`mZWqPom042GKLnwlL#Fxj++N=Jy7#4A(=W$8i^=@7ny z``G&0nG}0Pi*@vEI`kLF(zG%MsG@t6%cCm1rSNFXt>YU9V#tHn<=FGUeO;wj+C6U7L9 zeEbsL>(|UX(bu3I?G#V9quK^(>0c~IF6?tFe6d63qx5a#(F_d19VYBnJo*b>_wf@iMni)5B`^5)yrmvlv z>cvfe>J>!^@Es#(PZl(~dEsIbj^u4rqLVPK_ZdEBuao*UmOE}nH=oGxOCjMk>nQESQyCb8TR4XnY- zB{1d%L}|qIRdcQzqigu@E%VC3k^d4HwHzZ8wx^}g&KUakGHBo3?1gTUmNYC`MqR@5 zd^=3BIl~_|IHDXNgJP+=Ct8#eUj^s_aHloeZIuIR+N#}&$_1U7LBkFlU&&TA1DNFE z4;e5AAl&d$0|!>Q{bUSg=fk$i^s)5wE)eQr7NLzFa^i1DsuAyLS+tGGkV+{T`ExDo4>M;eh1Av!%b7!7!a64ZoLF2fj> zvotRarwct*u|^Xx#qr1eOHG@mC)I(X2%QXtayiFIz>&x4DQKEa7eP$Xm{fFcRl@M5 z+a~djKMg&hs?C&Xjwd`~77nq%?xpkEe6oA^|V&eR`fp*uCS zeb)6V^vk9f^tUDkKgo7gqYD~6SCNGhC`Q?v^vpw4ql7)`tYw}{K2Z^1DtVK51&tn! z59Z&7Gz)aZ&7Oz|kc{Rsr6>}0Ehls|TkMcx$7hq#-o?&j0!@Djqx zAPzkz)g_reT(vGS?(&1{NtX_OK&syr^*CgE8JiHjKYl-Jj}G91@o1g1%<|$rOp99wol&iq16%OnvHMzt0xZ%S|cMJKg}tPRR;qy$iKI6 zOd)}LZ~dNcGU5Z~rr}5aI5NsItH1nN6fP=BLE&^K3o>h5WtGRk>o0cqi?6H=Ka69Y z=|Mno^YA_KFi4vpHv~bl7~~GjX!|MB7%pfiN)0(`63qq~#>DyMqO8TL&f?_9A^}<< zZHxcqxLrr|@SC`K`1#P0m_W?BbdtD5xBtHY^BCGi*ix-ldwI_v5MK_AeC zws+bYOboKb9fmTJMY zz`^Gy9;@T;XKjk@dvD3lw`I0PDd^p|v=saVA+kid35_Switcz0c%Bslm}xQ@ z@9&}ypUzOja^uUSzb4>G#vC)?{h0~{paDa`%b>MLX27=!nbKWnSw5#t_{YnRkg z>1Y~%<<%s|tO9`Pw_;1qWE)M4&@dvCA(~+Ycne_xA&aXh-f3IP_6>f{ zOIV&+9vp^a4r(vk;W24b*4^8S*6MoAVd#x*d!%HrBJLnSDH;f`TENfRv0Q5rD#DKU(j4x*;`gw+gwTc*#T zkuV4S@+I7tU0EJz@YtB6UQNe#;*%lgyCv@SVc(!G{eCpZgjA|HZdsz{z`#VbOzXE6 ziX+d0yF{?q%ZbO4c%&umef&}@nE@jp%5%w*FoS%O2`FybYA;}~|vNw-|j?Qa4b8g1LYT&q`8( zA_tP>dE-BXY{Od6xN6L(C?Ow8b5|H2if&Z4#N^;YE7L*x>JobncHxY`&#a^?8*e@Q4n|u)bORQPxOZm@_!(0+7d!& zC+WvFYX$_}LAPm%rE`_e=kMAlR=@QGjGQ^^uPaC_3g#=vCHI?F^A}bWM3D)1l)6At zLzH_iqzOr5hFK@dkso`m>!$8F1`6B#6 ziP9);Lw4A#v?`YlzU&Nd|A>Oj%aS06otA~Q87{82AC4v?!%^qkt=om2&Y!)Xgn*Zq zWuRinmf@?tDsCMJlY_S)^(SflC2g`^*;s>X< zX%V26aPz*i@`NZzRh2~zINO7A{M#){xDoKIg*14P?SsixhBzgIM($?gZKWgG7y)-5 zPE~9tcTiiPQ_qZbA{NaG8Q_y^g85pD&1*`q!ecu5l@b2Z=o&It1T&RDy`Z2%gqfZ@ zZSQ>uNxT%y&Bhr{8Sog(Y_n3ALx@1}&yR32%5<;3HU0AF{)}W(3|3&g@%VwNQ?mHT zjKm=NwFT#11lS~AfEPe_S-?8rPiFjh;2kuQn*mZ94MWmSR2HjQh;xXHS8{cpu+kk4($Ue_6C1~}om`lxOPI26aPf)RWgGXgaY}y(9NrRtF$8Cg@`)HlIq^b0V z6Qv6aIR^aLzk-|Dl8?Y+;wiL;6wzMrD(#%ik8Gt zSk{Uh-@Rx4fR=2-W0qCvT|bUj4}~fu=->-`5Nha3NqmAnpJ)f0HRa!_;OMD{*BOD$ zIP>CSz3<#>4!$EaOWBoto>mf!cc04^IC?IY9xZtThJCTk=oKCwK1qdn`o@o{@R{l% z__~iATr5vNW0FKoMnv>R*LaEh_0#E(FTB;ueRTx%he)}D97Kq}M2N3i*{53kkdr?) zDvwhm+C<$kMqIA1D}O$Sw8nEx*MWy7M)z6ZkFB|b>XpH!;UArvU*TL@C|@`ycfyK7 zM&xmZ9{~-W7fl5;ls7|uYlFz171N#HNYU_SEYDr7jGHAZe%DEAhxJq$CQ1@dakDY3lM&X04pS10%$FoY^~ufuP4_s>u^R+zqYHs17%hXt??Z@6 zV66p?UNV3rK0lm1Scv!o8*BJwQW(a4j% z59>kJOdp8^Y2=z`lOETopLP|)SJ|GZe8#tHr4A6k`yqZ7dCH+Dfe9~SGjnWJg^Pa= zC%c=Y%9)kxnxEXHy$u9+N)O}2jyU^Om&rhe%p_Pph3yDKuRkP?=A^9X;mb_$$Hj&8I*PZCFb?|X8 zV)X@v-it}xb9-1PMW5($K1;e?7aA7E(N`WkrIvO4&+m>Q;ukJlEPrHUg()!Z>0RZd z3a)uhH>*i>cGn{2*%=u7L4+X9=5S9~VErTDQ~LC5axSM#Ex5kLo|@7$?v#)PId#(Ie+?b#m@%ahevVb{1R$y z8!GGkZ>2g?mPv`$NTmr^N5SZkXX23;mwj;}kZ)H&AU&({PgR6LFoeM;Nl{Fsd>e^V z4Yh8_a-#s($8!0@+SPp%UmfclAp(S{I7befE8>R4;Vt)Y3=c`uA+Un=-(ni;ga$ z9`l}nnAW>rl&d8AX9(Zp2U%p2Y4KqaW!CPpj60@VHxByoNzkbA?#b%Zn4Z~kd}Mxi z-8(NCAg_&$v(t&R(U)ai^Z_#j|)dfM2L)P3RWn%B>;#P^?Db9GlhSLBrA_mE!$Pc{p}p&{2olr9B&@ao0k53*>Wo{d2KEKnWxAy*!w>_aDMYI}q{3 zzlU64#TsoN{pPcXJN5VEhv3`YC9qAv+ee(KKfS82ZK)-5*oV^2^7D_pyl^FcEf}|G#cda1L9wY#nx)1(OQ1;+EMh)_IVyQ15Cf?eY`h}0mFbSD?$;d zrTQg(>4LNriQbR6QCl}=R5GBY)T0!6dcQYs77^0##@lz#|2|2!itM#8CI#l{DkEF}`Vj z-nuD*fC3bDy=++Q9xA`WBep-3>VqQDsvuMmGQzSJt7Cm;^KT&riSgATWHO3!($bmq zT6Iv1cirdNbJTZq3G-nvHvW%Nw{L6s>Vcu8un8p~@i>{`Om1^J3#UM^M`dXE%F&k= zPTcmOC(*d%DnP2p5J$;&;}^L~xC&j81AKmEG}re(@>>;LBYM)lN=O{`@*P@~6qZU= zxlpO9X0+_>Lo#GwTiCh+9r+-xBuc-_IvbsT+W^7|NW6w-jccQn2>GW4P8MZ|>QXBf z@mAS(-1||4z)F@ejd*9<{u~R^=97q?BPa2uk};+SjMVSwxt|HC!R4onu*CTOb2WuA z5Wb8nvhG~C-*%GGx8_`!2f{4f(@Pl_S8XGowb~G{f%!?FM`VMc@gUTXfz2j<+7ln9 zM`oR+)O~S~v5aJ2bfEM%68IqZII|94kV}r(%E>6|V3fm}4~Tnye|uSJ_yI~`f7(Jz zj)|7t%5FptZ*!GGI`l4@elx+6W^197Ww~C)VhLPs=Fdv0J6Z~j?OvmAxIcEKlR=Mm zQ7~OPvA#GcQrKtFvK3vFphWU46J^a@`rKSfNSleo{$q?i?>c1qmcq-J51HwK6XDki zp)^=*Z4M)5=chDMGOepYOt{EQA>z8|y#DCEOQ4tfZ8H`Oma(xVSLZ&1f$kSOsk#dC zZ@93E$r)y5We94oc44CwixCKZ09z-J+C}Wcyr~~jiDbmAaeXjg(*jy$30}XXU=;}c zt;`uKU^hpHY#NF>B&`Fud5yy3oHZU)hAV_gWLFG6Cj$z6VG{l|+YS9m#)yU1&6jQ` zI6sjIMV3?EpfS)FiQVX0xt>J)l{O-}^Xt;7^WJaZ+=68cU|!=jCLBE(y1B62c9b#z z$f9@i?ZZ~Ld{rbZHOUoSvXB(RX4g35Mdc^+%+m0pKpYAtH&xj3mQ4D<@^JXxys#=N ze$p*HZQY(v|zA>(4h8icdtcn(%wR@{++^KNbD0L>(4s9iA<+8OP z&E*L;!R8+6xF@~o_n=(1I_#Yfp;$E1bKD9OEu)+x*GWG0j!Usl8c}qr0Aokv_>YK9 z^4&e#{%SJwSQxN06Y3i(;U={wA z_yW5fTBXsi@}Vm#9SOw)6p-Vy>x%Mk2NC`|;?e5oDmTn3QV^wd@n`2PE0oRsT9__v zjQ4@=d&C6)U~`^k2gd<4{y9oxUW5tMODr~PnXhR8r*vuLEZc6ub*Y8NMRT0Zq7oG& zR%t{-#OJexa(=DgjDc89ly%=&R9=Os=20mXj;UnK?xyG_nOWx1uOEJ~OD4EhG;x*V zw77oOEidy=Pn%C7f$<^xBLr?t%g5zmDeGlQFeooKR1WB-&LhRBpy^fsYx;9d zf$qOBMwg{SJ~yJj^mSllxx4yRuNNf_!7az&Ono|Z+mW~B`Vj2Bz=ik&+y09wVsAe1 zpofzb5Q8>XW`zWgK-WcwM=%>Qcql|FU+IjjRWIK$y&@edfwP8iurhB}EB_&J z@J%HxmjM~^6mQt!7sg24fP3RQg~r4q~8uREW7XiBSu(oWgnIH=Ot#-VO~pBj4(a z(e{lfDth1*Lsc$d5VK?U(TSa7mH_b6le3f#2Z^cSoTIY4mWP&Fp3$XpdeF1a0)*h` zlHlXa=i9j(AmlN3%~1aZ2Yn`oKu#bm+uERPr60BD@RLOZs}$*!6Nu@EOEjS~E{VP;Z~_rNF1L;X5UOW<|E2TC(YNFn=B&pDl^yK!+a50W2X| zY{5x@T^bP=KRTV7)wT9p5Yjjrb6zsA73@UOG-=1H;c0%qi=xlGR*>Sb_Kry zfBiKRN4=>`pM~zTuBV6WN+oX9h8PVWQr3Tz;qGPoxG(Ya3ncFLmjGY)$Cz;ue-cRn z%#yO0{La4W;RoRms5o_2DEEjTn!bX#@qr6v|5~5sztcp0J?ZlzltSpx^~8N8JRv-rxk~%a?@F6XJd9XtUb;;<*Qv8;EIy*K)uLo2jIkyc}Y;eviqy z8>5eQ1?M#H4^Sr8+bjDcSr~`m;TaTTt`!Mf@g3;%K@w_G<@V4O)n2<%ZZ2w&V!hx; zt0kd_2SPd}>oo;=I_#&tUi(ucctqn2dU2(B@CJvh1ErDaPmxGBRIzQPUl>b;y0?p5&b?cz zA_a|C*kl>>WbxLqp8;sqQB7j`^HRi!-eL%KDDRGIgZr<)uh#M9mD`8$4ybLiG;vLC{TS~qR&qh8p;GxT|oTWUe8@KJ7(Oly(l60HczV%zFfhEt8k#-WIGU>|vySrZ6Wz0?oWbcx)uc4VLQ#|aJ~Mll_a`_mU?@taA` z6F53Dm%4EW|A(*wy=cUv+aFWRJwz9JMY7p!qu>%Le5CMsx}Xs0$SH>FP~O5^Evc1A z*rcEUkS+`3HK{szbrOn8luNC{^lSm8V-hcTPy6h+8gl0x_6`kov8jB2A}Z7D{9Hp=607j2qRaCP zu22o;qV1&VqRMg5=*7n0K4a&mU|56Wq*|0Ou!i^(f=~$6j?|;=bwtmvU|^XJ7O97YcaTLsQoS}sdK-itg|Fce4;lhqgAKe z`YnIthNXa)XI+&d-0{&Sv`%^7f{ya!_R^RF+lihX95(J};Qx*u$G!WZMHpA;r! zdMuD6;LPd)A|4*tJpS8C=r%2-K#-h#NtPb%^a>N8#Nyb}jvg(gF_27{jxhaD#et5B zh^o%$2!*%gY^tM_h1H1THG3qzTL|Ke**L{|7HcA;9&w8dYRnwqPrmx;zniR~WAu*N zvWTct_G>K0G3tO5;*=85xD~U%_b?`zndPltGo8ks9U_bJmc=5DB6`4`mw+`=RXnO} zGI@xN*?ub;O4{bnI5aSvj3iHkwaLlE4zaij@gwG)5y6JkZ-&gE3vAL57c5M%f_(4v~#zsiUb zKac}>6dERW+v|L={cyx7P!S3!?}jeKRI*%=e^SV6js=*F#N31!SX5Ieb`wsizn3GS---%(%U^jz?aYYi5@S#zt;q z_ohu74jNCU<%`*e5nLjN&?)CR&!LQBa6cfLkqm{=6q=aiRgPX$A$*AB&U%)O%1Y^a zh(!$ZsVMX&%?Qp4YyG`9dNrI~Uh8|&iDR4W?b!`r;C!-Tch(eO86OdP&AHG<4`Ydl zWE#*e!aB#fuZMt*6`@Pqj30dv3fLOTkbSremhkMRck1 z-t^As-mi~!l#puAeCDg<&ytKV@H0}rw9&;R;9-@Gp=QoAFxZF5-X7(RA4O-G&18HM zvE3aL%Ob&G!5U-#(3v^Pfagq!oSrmHb-+7_HI``s)iDMFwL@KozA3+&bI4jg89p(f z4^2$4JJ*F-va(e?zz$0CZ78CU$Jo>G1unI54#b6)~;C-($S7NaLNPL}vhDJdRg^=}RPjbka`5eB%h&=ezIT)!g ziWyvm-~74Q2BXE0T#6Hk107-`4=l4o@KMGeX2FM9$qMJdqwDzRvdMQ@{){Mmp9vYN zSX(YVUdvV#e(eSJ2F1GE7J9qxByE#+Bdn&L+!BPw&t1^qkh&9NO zCW+>ARKrx2<}y7eKBhCbI6wHh?=oaEhL0@XubGm>P`BMq?aJ2ZucEXK4GB?X^cq7p!Bm7E4+y|b7z7K1U5fG+ zPP`YYLsY;zd38!Z+G^WpW??nTa26FwS4^wlrx(_N0fF$nZwHuz;d0sU?ie+wq(o-1 zT;=G~a%ifX+e|_SGrKqbh9au$GS;tq5LqnS7nWFF5bP(6yX@-gcq1{DwRAF^_f|N; zZv>qMxNo!~u_$MKe11d)ncbtWKdXhI9URFxxFl{k{^<&wIJ-+2QEC$3;o1L=4>kYD zoGDR>kXvPNW8OrjRg$z#+P)l<*@cy{^W%MMG5gKj z?e<$2P+k!)J@c2##%d>a!x^kj7ry7ePvSWymH9j9RYSVT3hSQHNn!yLsVMb{ctXC! zG8Td3=-nE=f><|^KKy$xAgM^;i=5jMCrS|J&z!Z&1}d$q@M}Y7^nHP#u(E~qyGb{b zLK=ia2zhxD%HYsNF(K2A#ZC_if26Rd_{GAh?ThiW(I!kS%SgiY%mxkVv;bq|=TDQC zVthEC1QDc#-ODi$Cd2ZcbcYU+WP>cPh&n#AMD+3Up#?LKlf1{9!BT5a?Xx8{bv#iD zC%AHDYzGX60agVvQafWXO*{q(61?2a?H;Hp8%zXnFghUD;`s9O3yO7t!@};KW~loS0P4i2(rL;`NmmM!;ozKSD=yt66ILgJmBO}|HLLv|5;2>RL92VZd?8h)z? zSbFcjfe5}ZWlpSO`)l0Ekm9FP9D%h7K^!8-rG3FAq&{xV#i&{^#=)VVHVYvO)*onw z7!3VGBiml1hYpEcB6vC|=@2r;K*+g?PNP%(^OuZu+~}*;uyM)H67gW%u$m;WYp)@g zUGKy?n1- zDRLRx&)bWAgm?UwBW&EsN`;Qk={gRAZDBDBrf@`WoHZ~>C#IJd`713UGajrhlmtvi z$>Av`iH3*BlmRE)k)F>#n-4#Q`LW*`X(7K>dD90$zDt=Y^sUZ&v)!U6N(6^Rzyhy- zW`4rtP#*V57{TJUMw~;n^y4w4JLqQ&myOf=2=F}DljMvn2eU?T{R;96rd%zD2_E!! z?kmw=x#}i-68}MLJa&B8V=K4~Fl<@)yWna*oHw@O2J_pgPF^c*!QTIic|wT^3iFiW zmwCK=)l8>mg%wTnz9_6>k#R0_e4R7^8*~K0eh*a-Laz|%lon{azt*RVALU3ZjkGdU>_)<6H={L2IBVfwb;UFXpyAB5zAqVlVIfEuGD5sT zQhRji^h6RhEf=--y1=y^?vJ`P^jGa%H6KxF$iI+~)I@f4Xr)+W{yrASGsmz*AWU7O zh?n&!Y0gSb)8o;?s~$lxH-`eY4DYvIEafZ;_AQ=IcgynDIu)l6nO%M^YdsIaJ5wWA zga=b<#vz$3Ww?5cDQmf1W~@@A{XEB0w!loV78A`6)gv05lideL0YN8sX5u8<`SmmR zBrf8eO++fwlM#MZbE-lbxHjy0_wqejk}^25X+R#=oDrd=&MBE0m!Io;V(hZ%Jty)U zp|4Io(|nWQHEZ(<+wDxX6wIv;&ITF;WXP72A6U?Cy?Q;X-4RA&_y(9^n!e-fTGrGl z83VQ23GR!mCWWiK1LHfN&)dSSJARZ}9!p>mU2*I3c&}Mj*01VXxo&j~XWJ8!gsCp> zFvOaexklV8OtWQghkJunP10m5shLY+G0(;&1>V4LJl^vT`m*0R$Yz!Wr#AaR(aGPV z_AdWS(d-B&nr-iJilSTSE2*e#2?tH=idV5Y_fv)#kPbRSbVaLG>lsp7ndp92s#> ztDfEsiMPQ#C;e9WU54v4#N{s1lp&+ec&dvtbwlMG%n1D}~ivq1-ip`l0!@pUDghbS2OU3!Ae&?ilvRd)OmO-=^a6yP?#HBkfOe^9{3H+dp z5bLA%lVSS&>1b2y86hLmEhE>&t9hAqS_3_cH5{#5T6j$nSf`EFu#UDRBE^0niIS8( zT7h0QBbB|a{&tr>?H4TqZVYdyL>B2%z`&DwOW%3!;>pouD#vI}Voyi71D!rW^=y~5 zEy@$pIAi%}j1+v)J1y;Pl3U{`=Os#Mh;}?*xK8KlqEVevB?Ia=j(h0Olh?b&#!{#A zMcg%GB&{wY0#a}4P6-K=P7>@$EP2W_BFB15l2H&OMoLHq6&!3cYlU?yQ&Xrjc$5m; zVfmumquo+X0>xKxeX|4ZX>fjvGt$PZQS4)?9xDx#yX$9K5@GJAyjvlFOuNf7;+aRpvzuKpKp~}6%UeY;OqNFHVLNboZWezU@IHfxB>NP&SM)Z{+ zdzU-~WaHSJ#AlgoZny)&=7SYecvgQ+Y*NIxGf<*4p1th1vgv+{NOzhCtkbgosAXbN z&Z0ax4W<`j9eg<&iGDF2QOx@5e4fnnm_9s~?2$FI9Xlf4XnoUEg}q$2w_r{$1;inS zkEzSc>YZL%dVY6y%8V$06kpk*x3) z*;qVrp10f4>@|K@VQ;fPb|RMui}hVF?5VbMag~Ts2INp0#Uz&G+wbhUoID1b)W*C* z)=g|EWGyXZb&)OQ4i=>Xhk%3Bl-oQ@{}Tr(_}1`XFi+eOhJmexFMtaBGQRLFDE{C& z3j!n)^m#~AB+xoTO*7QTi!M!AUAS-)J52$4w-Q1mc%`Jaz&}K(mO^-hFku!hmQBfB zf{w@#xIrG10N`M{uNyf27)`{Ak;A79_h7ylLAa7G=^O4~Rg&fYqT4`yB>fo~#r>6r zg@4_xe(+cZ`eviFJ%a4fLU&_xUQ6@WA)w0BtST95vWDS#$dWn7e;HHV@dSK(nfI8-q3xDQW#- z`EnRwgbFP?Xhlt-p(wDi$K5tU93G8@G&0SloFLlkoYH&*3-NAt{%I@0i&r2Qf9gX% zI`dLbMKUteWqZ>NcEG9H0$`a|U6CeOHf@U}9rKYL0No4-FiA0hlr(k#wg_a|<9nwi z0fBJ2u=@fazzza|O?tvZcS~{c75N8UCicM5`He#%xNWKv&fvcK){4CGR208gTaW-v zGw1>Xf5KD}el%j`XYxY{yj-@P)konV{l)+kCa1{@+4PoKWUN35V8H!hB0e)!@ABoZ zBQF~OTw=0GS-|Weix5f|QyhXGrTU)EHIev4kg7I=6Dd=vh2H|4(~Szh7G3rCDxlzy zcmxeWDEIbr!A#P(LTWN9n0$LkU}ImdH_BivDqO1DgmBQEC2imo37&v5?<$I#lu987 z6WR~xwNr+&H0d0GmcxK$+?9tHE2-Np8-e6X0o%ta_QaNu zo4=$WFZ>0JZh(}tuN$tP!uTI3Jly75lLG61W;tPZmI+ zZHPOF8;^Km0Wil?3+^fn*h!8Yl#o9V>TbgQd~gGeDw~-E^I%cBcc)CYHqKlIUpzWs|rU)R&xn_IDPJCu6>5c zRxZBb2v7a=mRY~zq%4qo{71xV7sCN$==yghi%@uE3lQZBg_I?uXN5}3!Or<+yQP#S zp+bcQBmlS#skWoBL>+UkSdd$&6bso6@j#0X;ocg}q;oUHCw-}pD5rgRgoj3J1DoCl zlDTULzyRT!Wqp!NqRGS6+bPc^J8vZU1QdrEHATJ(Lpfm4xRqx=Kh&8zh44+^%n=8x zuOGcsd^cFCb+wfbu3C+-n1DW-Np9OISanPZQ8WE zAVx?77qkPk@)%7~9%DqN4`6_MUK~CHiJg&V=h(CQucSx4rFeD4%ws%sZV|BpiIpXz zEL`Q_LZN%7lX|Z4ul!fUJghEZux;faS`-b9ny+9WeDp=s{I@P>h&8($gGy0bfUbjg zciIfgNIZL3N1UC}f4g(vtzBI2m=vF!6(f^mO3T{yTRq;z`t0q6nQMs|Qs4hLA>3YJ zCI!8U5Vyl%Mwsq^_`w-;;AMx31(ityfd|dOmnv4UEs(ar_lg+gTeIcuFy>%@G=5u5 z+KLH+wJ7t;6hB;11 zVwkaUIyRI_Z^OOe1}(N&PGlTMUzTE%|CKf~pNa19#RI;wy+8p>**b%380fRjb}dOu zRf)=g)|_~gThV@cgf7MeA`8#p>Npp@VRs=C*vCNQtPv@IN6l&=zL!>$b*p{yDjC1f zl@Dd#=kCuUsb)#kTFeqs@S&_XNLp9M4(;GiZry?Vb*PJ}ml)+)<(8>}_W^l8xV2V!)a~XJS5l{;9jr?maWoOI)w9Z!j|T zGdAMqnMwl#w`9`WQc`invrp$t?W~g=D72x5M>0}(g^dN^3t#-vniYJwTi4{^on_4@ z29zDh(R|3V-ff)M`|IXF_f zcmmcSt6);LwNTay8-+V}C2I67@`1G|bDaolrck&vDzb#>@Et~oQ~eg?M+rwl-b4mq zr8H)6(;)R9W#>T(i2u+>5)Tr@1=4e;#^H~0a-?Y6U{90QCZIyG;1w#^;fN=|2r;$( zWs{p@Dbml0(n7d5V8_aOve9P=(h&wd8$tyLnh(a%gFY{!Gbjcf7vKq$AkK(5P^toF zMf|K$0K=joY)~{oqb)KyMx0M=N1eG2w~fDXx3}~KkZt>f$zV7#_gqA<|1RSOF&qNL z-}Hb-14(xZ5M*%JF6M_p3<9#RmhB&b+^dA+q4*I+T<5Sq1CduD7NcYS5xI{NfDu8W z60s}*009F5U;rf5tuyYM7L@}FyPK@wahU}|n9vbf`XV|qh$B@H;y^Bm*aR#aB64hG zq5FM-*;HoPSvPE^ZoH@h)xPLZTQ`mDU_?J)R9|LzqsZDy>p&hmYF$;<#gJ~#OL?v) zIt!#jNwN(WbJc-8Vlo~iN!lydUtKhF%;7f5)o(t1vn7((WPuh=nBwl*ka>(Dakb%$i5L1XfwuzbY1KTIF5sW76)Jl zpmtcrsoW-xXL3rJi{4>I0C0(ACbj%l zM4KY2ri_r1m#7MpGsFWSQI|Xx&`r}AgVIYj(7~;yMT6t2ijH-lfyvcPj}5_r^A;)) zx^O_H_v30)R3zaP;w6+(Bj!a>@I{cs_BuzfO1A?8BvV4O7WA-`+WNZJZ&KPx>a@Z= zh14fGPxMVTIH!|bv?=Q!F;ZMC?VKvM{=D#99lY#Dh#csO`Y1VB z-Ru0hE3VOj29b}j3=@{tCxL8xP`RDHZ>Zc%P#Z{j1o7*50m-&0+ z<=&y~6F+_L~XmT^~W(lam@_pwY4z>N|YN%f=4DH8Lwu&fInpnMLZL52Nd zn@((93n_=ET;OH4zyXj8siaQ{gH8Rg; zCDs*iulVzCe|(MKv^79CL+QLbl#&&0kNY08SZ*;oPgdN{3mFv$iN0=wOdWO%n}EIT z1Z5Z~gtJSqmb`Q-;*J9%8mWr2bUxtj3h~=zeb{wU;FD|`f;t$#+I1miAsTxdkTb#- zMXR<6r}jS4g)~$eWCt73bu^s>1IXHe$?!;%KnF58((qR_D;Hf?ml)y^OK+7eI zER|dmbpiUVuX4#Mq}j;V@o6In2*(hiD6~m(h-j*?z&gsQ z1mfu=30t8W2-PT8$!Q24%48ZIHRb9Mq{~EHa9IyURWUNarzA!IO7<`eydwsoHo>(o zp*BzIAh3rBf+UC$(>#?G#dFE`S}hWlt`P+@UyMga{5Sm1xCZW}ZqV`DpLuRH#)|s1$8eYCjr=A%K(4Gou7UOyQ`FAeBn4 z*@)R5q&7XR`v-NdK~9!459TqW5FcVx0kGJ=wSL!f)5bx3Ss!|*3}NBmlDFU`m{V7M z`1?pCEC2!lI~}lj^TBkVt1yb5vkEB?=U^|mPwJE+Vg1x7hXc|>+TWZZvreKX(10q) zXp_*fDYcG#tdUTgCLxP@T-Y#=Ct^9lLC6Jcxuv|ZtQG+>Espe!iShn^YU%G8=8@GQ z>wgpbRC9kFd&ux|&{KG_(P#Tlu@h2EnWOwwU z$=-~7NTYR~Hiue7o1?-3Jf365&KqfH?Lj$28<>R<9iwD;no4MSMhrZ zrb?=_I{-ZU*&-zdEx_z!5LQDIb(lpw09;T&IN&q&TwZpBS(6J}7B#hEOmmX3#DX6Ex?gXuik@byBY&Ue|$#n zZdfGQgDOoofKf)bHmq{!Cm7-;yXAXya7aR1$t#x^{6e=ABx1NFSb{4NVJ0cDAysy0KTt#yRhj{!*>`X0 z-G^zs1L#Vy{}L30=%NCmG}H(FmJG=an|FIcZCrbb_1FMV4a2IoDXd{#C|uMK!HDI% zN~>3p-`Cwl5Y3#^Y&VZ{c^$Ae;a>`c*MFIFtmw8-=s+bl+M!OCqo11xAteK(a=4HQ zK&GtxM?oTsdTa>)V!-IFnL5C%yKSc!t$dxQViCd9athj6%W=(Zy6G_h+58j1tXbE6 zwTx^t2=|)8AMNq3QUcz6Yzes$W4D3Wxx;eeI13@Q9t081t>gLrdzS^9R?GpIlsvKq z*8)37FXa0nm}kZ`arZ+Lo`eX|BniAqBQnY!DNbl5w20IUw6nf{PQH)w7%B%>f)1dO z>|6#f^8|syRcAiSQ&vUBPzk`bvSQXSLcDiS13^ny?+lcVy9KCKN1161#1_^OH8RtU zrvOg)uwXWWh5&N1AUXJ8DH}Cx5IfoPHQ)83AbgGrAW7F5P$0$Ia>|FW zyazIc%z_J&0}KXNhmuB%F6r@{BmN1a|Hh580V}BOqr?m`^cF0P;~WRG3S~Ny+g$3n zwAN{;B`VLYG8F}F213EGc+*;~O={_Qe2wq4qo`Wk-y3`=P`cFffcuAN$C*)& z0|yiZHscV8Q$G^e9-7nS7vRK19*hSwmOQf2>Nk;9Lo!dwa^ZsbhFaL6gJiKac8O1% zD994P@~|-_3HuLB^o@66o@NnwX(P0>nG&PZMIBJZm|%QXK&u%QB1c{ps!Uru#*y7n zp@BOg;>i)LX_%qIC@Pq1kX~EU7{Zncd8m!TQioIu1k{%cc|d%T0R~cEhALDv#43cd zi6ZDyzff2{EAos8ExsY1!C9s>B7gwEHVgESq;d-qCEXiwr=+ev9DMj`ZQv_H!QqvA zBS^?%SyZwDLtshRgZf{em!=~EHY|g~E+Ssh!H|J=tS;mgeWv~!tR=-i1cP{QU`OBF z^ASLkpt)jiW0ZNIfs(>EE115sk6UWQ6++U?Ocj(XbC4?hf8549(Xl#-Vs9#QsYx70 z<`Ia0E3fFUPR?ivw5u59L`JrgQYPl&bDE#9U-O*5)$dG}v&2s8-ZSA{x5z%7keZY-#+2 z^m_1DfGM_Lb#R?uYCHhclv(3ofOXBv=F11V{Ix>HA`v+!jL`;lfWSeuczmJZ=+G&!FiYGes84qj%T!V#R(ar1?IUl z^Zya*Bd@to8?#4D$iV=aLL>Y~WWuvYiER=TWC0Jy$4hb809N)?F}lc!1IfaqZ`kSd zO0Qoa*~lUez#`>@-9a4;n`#g3SRL&agC9u0`X}vZFlo9;kM9kljY{`L;;HLL}x z<^pkE03cj$0KG03zygq6l3H_0(eaMB04!48F$(>Vl}&S`d_j$Ya41y3daZ~<=##~P znt)gtq6EV*G#xLmFHnR@flR@)jt`LZyACi|F#5&T3ppO33bby9{!k=woPc%QsWs6F zK293mi}yeUI*hW(uxqbtJy9!wJ_DFeN3e}(8G>*0{V}_#NMQDhEir5`FU3=^=m8Ok zR~hs*61rBvG509!0%t}W?@$4@DRCnPO0i1e-?xv!sZ_(6Lyb5`;QFB)1IeUU$)_@} z08doRF8N};@k3JRC_?nAIFPt{ChkeFXeYrq)kWBmfxm6$V`Rk7%z&XTHc1fsffk9s z=9dx6Aq$!f$P@GcG@RTu#a=F)AQ11MHjxOA7L;gn#P<>{H6b${UlhErY<-X%9)<)D zJb8nnAaCKyIhBYC`}2Q5oNtCvsLn$qQO+)5jgWW(8xjS^3#eg$@D0Owm(y~P5D2(e zTInG8iyxC?wHD>scwR^VX?X&R4bJ;`&U#+974cKh)edIp-fr; zM8QG~5;sFT+oNuq;xVM2G>z5}49OXSm1;0RN!sTDApjEQhSv=x@|c`NNQ(1lkX)0+ z88Ko@)i4ZLg9WXqMrRyP%odWWC1j0njmE7E2+Sk3j;nQ<;vhetExm?7=gNAnv+yCaE^|=G3Fs4J<>@@3>RC(l87tAQ5hqxy{w*s_kJ{-C(#R+jRnN$ z;O(_R+CC^E%H(uLPuFKkR^Ci;@cjt|LBS+M0xr%$kN5BkWlchK!|_=pv_vQ-VhqXb zXVOeo;Q$<9D2xcV;salopL56jE{Lc0Nkev>P;E-v{VMf~u*)$_eIc79JSjl+51N#c zAOU6>6w*L{d5G#G*Qy6Nsk9#%Oy4$RBVYF;71aA^Tkh9Ei_Ih8llw*kp~7f-y(T7#LBwtVP68fnfM*ZA@1X z!@)6h027tWp>TRxT9!y6JE($y@{&3dbdVr$cx5b1*EeQ3WD*(tJad!6T_>1^F%YbD z(u430s~tPo7C&0(9VPz_KbWCiOoD}32*Jb$Sd<|kd3reHa7$noh(tf=etJ%JVuVyY(gTgc$lOU1|EIey6?I5C@kb=C%c=4Ix zKsRg1^Q_KW^Dv2q5V7f7?Wv+c&9@A#m1@x#6G1|!dB8{_Y<)u+L&^b`+%f_&LLhRD z0tOy*R33ana8)qNiYl2KO>Wvvf~r8Y;4SF?l2uFe=qPo-fOHWAwlU`>2DyB?*h^Vv z2AuB`3fQIEG2*3>Inu)*U9?{%nX9_Rn1x7)M?fM{BqHB9QDT5jfW_+xh+OyoLM8}+ zxKKNJmN%)Wt^8R4tUMP#kORRoq*fyb;0SQCjWT}jK0u+ED<8^Z6d@((73&Eu|FpjL zb2d$g{UJHcqrg{vke0Ds_5${EFq4vT9^pbP#o;=!sohy8w`J6?SjgH+KZi6DnA8!b zjh3KpFcFG1EdX+#uLT_n4MfLrGrl*gQa1`I66**c!hj57#$h#(MB1hRflafS7MoF} z%D^F{;4OU+(P8|d@It|eNyQWcC~=&a_yW!#&SXY>a!C1#a`d^0f!D%xPBH0?0X8NM zi3%cu%)Pcjq_oiUj}QX#pkX3tN~M`aoV*F6^d}-fV=7v6j|Z?31Mxy@G7XVRCo&;1 zYSUtwn4Jq0&c&IU|M3EunEx37fana9Uo;p%5}n3JuD_W&rRPmKoqP=6>4*H@HVG zQT0x}<|&;Z(nyjRmXm}&;wkLxgYiW-JU@kL0FW~Qg%hwzrf_>2D8aT#-5uJep4NN79~ zK2>D*oWzmS^pg|3Kw}Q@wofQpF*k_(GFoH#+AUyYWAWi*vr+w`S`3PPPb@Q;D1e(| zdmtKv*#WZ|#z~0`=O<8#Id%A+^MptS>V}Y+CkY)$yo8L}htY%xm;;cJveA!00a7_a zu4gmMpnC9-<)whxAovZiiGk_njx*rsFcCxUNqZhG674-9f9kB`s-ylb9bmAsHN1fPDVx)6dQ=*v%2^H(vLNlfwl zlfzt~C*%dQ31B*OV1_XAX$^tZQGjL9LTMowEP^D^$V%Dt8iNZ8a_G7-c>X?!38N4N zMN4!E&koR05Ga@+%^`#ELENvsj2NRq4D=A}u~ z&7Y{vK9mmu@QnlVEr~AMo6bXm9kau`Vd z%-B+5h5{} zTSXB}y1G{CMdZ%cm8*S^=({3+T8L)2PZ4qCQtV`+t!Xd|k;aHZMe#*g+<@3b!HnbX zw1)VSSY!Q|Ed7WoRM)s0J_^1+y-EyQ4r@bQZSz2mXJ#|hnI2eu>jN1E-&WzrGzS2OV3%SwZWUqD9q7La= zun@(oj9cdVYE7 z-zx&lw})=aTHDYy$E~&|3;$AXB3BM?7UNX@%JMMhlG(Ln>fl0M>}w`3lMuk3^y)CeB8OyD;^o5n zA(TNWfocvW2Urm;K5xYLkh1q+@L~50BMs8X(*(Ui0Pd}u4gUaR5U3Tz!%90|4JD{X ziKveZQVbIC8iAru13D0mx`ie26CG4+86<$Rsde)rRXN!fmxy7OV8;Or3rn(wm$uxa zBHy_{DJhtxgBkCyvV`*T78?Pk_v*yXk80Xqo$dh}$Q2yM%Q{A7_?!4l`SBo*w@HK@ zveq?GS&4Yz(w|}_VMkh$*!7VzkG_Saf)qNXgWxKKgG%~C$T~Lp6n>92%vneBZnse6 zi0*-umP`#4YH#Kc?Rp{DIs!ZotmMToB{Cc8T9suKmk;Mv! z4s;oF#XGKb$&3psKGMNW&=|0iu)?NAE7=7O1qhi@4opf?YEnGP#(5D4$)XCf24qA- zN4+$BoC_mQxA^3^&xjcjL6(Ptg^O!)g^Ox5vLgt-!^bCEWFL-)D*OnSiL}*402Aw7 z(Tsc14?4#H zaw`jla{j$}RyQM(1c@K_| zh*4g(IJ;&$X;^VF_#_*CxMzJaKr-&rfo29DZ;we-Kk+cADXtX|Xr`zHD&9v3!=|$^ z4FQk1DD-E%ghRnVBf?JSf<4A3pz=L7Bc3ZdzMCC<=C7m&8HXGjIV~}0bmw&$MG{M*_S+8)`NponT5jTVUCv~wF6ldo960Jvb zDM3dR;m&Z`v8bZ}EjXSzLz&!kz~hOfJ)FTtc2z+5l5vA8BLSUd6wOC7l1Yk`Jji=Y zArD9*B;9A91&3LKJ#1D&6P=KpwVUC-|fU zxKq`BksO;SZtS-}GK|hk#pJS9*_pekh?ES4mu9FE8f6NfK!7jQId>&DoLgwRVO*mL zlzSD3GAhOl`|B8iJF-;N39;=SLge+MHDKzYZ0{mZnk@9M-AnT(yF*-b1ag+(G~Tu9+leUF gks2a%?k{}c9hn=3@*{hc0E~T@I5$L2hYLfm(DB={-2eap literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-regular.svg b/src/common/fonts/sourcesanspro-regular.svg new file mode 100755 index 000000000..b7c457a08 --- /dev/null +++ b/src/common/fonts/sourcesanspro-regular.svg @@ -0,0 +1,980 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/common/fonts/sourcesanspro-regular.ttf b/src/common/fonts/sourcesanspro-regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..8984334dd0ab80a9df5257151159e3304bed6c8c GIT binary patch literal 68452 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 literal 0 HcmV?d00001 diff --git a/src/common/fonts/sourcesanspro-regular.woff2 b/src/common/fonts/sourcesanspro-regular.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..2795784bc82a340dfe312a797a0bbcfb7073eea6 GIT binary patch literal 23772 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 literal 0 HcmV?d00001 diff --git a/src/common/img/logo.icns b/src/common/img/logo.icns new file mode 100644 index 0000000000000000000000000000000000000000..8930a33c24cba73209c00dd0da04637ba1c3769a GIT binary patch literal 113543 zcmeEv1zc21)c7SuK{vp}K*jFDcy=dtA!!E&CcA*#-KD#`J0t|8ySqccLKH<|7qFB6 znY)1KL*3_le&6@|{XGio%$zyr%!!$~b7y8x9XWRi<4e##b!pyQ4C8xZj`2|`I2EJl zV@xVWVqzGD0iT4)1IZ*3nasd&DnErvW{~($0uyHdYIlOlpkUo4d{ip_B{hIbr9dqb zi9(WKV!~7kB*|nwObBIDsQU1MN+wgteSSa%lmWJwIVMEYpwl&Qz@pP>bht1iw9>%c#dWC|*$OkD zT7k3UR3-&{*9z08V&eK3zbJ*Qi$0T?m;jkVqA(zdQJ8=wh*2P|3uzXGLFFS+4B?|L zm5)L-CU6)K4t!*a5lWC56d^LWJcWdk45~1Ergo(UP^eUK5|nkNF$f%C2sH|cOknp% zMNk>=5n+CD3K^$>EM$rvS&)i?QWqLQ#mNGQ0*ed+m|#!|NRkm5CfN)VlYlZr1(6zL zfr)a92p(ihOc=2rL?+>6zClARu>mLv+>s1c*nmMjDGH_Gf7y~2F z=}a1?fzv_nbWGg}6QI**8caH$2IT0_1t8cp^)P|XmoHy{y6FfLQ)gfzot*X#6uWJ@ z7*6MhP5`I(qtP&SJG+g8w+V2F5`G$8Lx(OL#D)%`S2iEQ76mqjQ4avIcM%4x2Wa`E zW`A2iMq<%*BhoT*8osSV!!^Y8Vv^Id@*jRvgwqG=L?xwX<`gu3Q$mLBEF>W%JuCO` zMKqdQLUL+mZhpz*Z)#E1nbAq9>Dl>3B~9ESPCMSl$KmK=6q zt?1;8oSeea(#j{C_I8dLHqbmVJv%qQsI;O6ayrd1QJ>VTyn>?git5^@97{|zA}hbJ zxU{n7cHPsb;1KaS1;wT1Rkv&JG=d8x_N1yImC=(bgH%dSs_-ABl9DpAv+_%dOUp`- zLtq>|HpYQ~Y}H}&x3XJ-7N?cyLZKIJvw{v*0QILh^snF-_(5eQh%!{?IRg_otEjBN zR0L%}FAIGx;IW@!$CVVI>tsQ;7|P)OkCcZl7$b5KCxJVG7oa9LLzKfo^;?qct<`#E zqM8qaoNO)6^<-ioN56YMPWIO3Uou63^CLf3M_WtNvptxiz&O;^+0M$$SoKRLo0IP0 zVsC9>VtD3DX8RLwH%D7@QzP9|3Ob5{3QBUy%BV?c?vD0QT~Ftff}*05q9U>{+t0

p+G41~G%Chai9txPk3s0` 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%0AZY3$bl1 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 NQv#r66Z*UH{{d6>!>RxP literal 0 HcmV?d00001 diff --git a/src/common/img/logo.ico b/src/common/img/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..a7727f8c0e29442dfb097fe34ee884a26b287019 GIT binary patch literal 31076 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 literal 0 HcmV?d00001 diff --git a/src/common/img/logo.svg b/src/common/img/logo.svg new file mode 100644 index 000000000..6dcceb95e --- /dev/null +++ b/src/common/img/logo.svg @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/common/metrics.less b/src/common/metrics.less new file mode 100644 index 000000000..d900c71ac --- /dev/null +++ b/src/common/metrics.less @@ -0,0 +1,11 @@ +@len-hairline: 1px; +@len-tiny: 0.25rem; +@len-tiny-rel: 0.25em; +@len-small: 0.5rem; +@len-small-rel: 0.5em; +@len-medium: 1rem; +@len-medium-rel: 1em; +@len-large: 1.25rem; +@len-large-rel: 1.25em; +@len-extra-large: 1.5rem; +@len-extra-large-rel: 1.5em; diff --git a/src/common/rect.js b/src/common/rect.js new file mode 100644 index 000000000..c1f9005eb --- /dev/null +++ b/src/common/rect.js @@ -0,0 +1,168 @@ +// Utility functions for dealing with rectangles. These always expect +// rectangles to be specified as objects with { top, left, width, height } +// properties. + +const segseg = require('segseg'); + +module.exports = { + // Returns whether two rectangles intersect. + // http://stackoverflow.com/questions/2752349/fast-rectangle-to-rectangle-intersection + + intersects(r1, r2) { + return !(r2.left > r1.left + r1.width || + r2.left + r2.width < r1.left || + r2.top > r1.top + r1.height || + r2.top + r2.height < r1.top); + }, + + // Returns the intersection point between a rectangle and a line segment. + // If none exists, this returns null. + + intersectionWithLine(rect, segmentStart, segmentEnd) { + let result; + + // Left side. + + result = segseg( + rect.left, + rect.top, + rect.left, + rect.top + rect.height, + segmentStart.left, + segmentStart.top, + segmentEnd.left, + segmentEnd.top + ); + + if (result && result.length) { + return { + left: result[0], + top: result[1] + }; + } + + // Right side. + + result = segseg( + rect.left + rect.width, + rect.top, + rect.left + rect.width, + rect.top + rect.height, + segmentStart.left, + segmentStart.top, + segmentEnd.left, + segmentEnd.top + ); + + if (result && result.length) { + return { + left: result[0], + top: result[1] + }; + } + + // Top side. + + result = segseg( + rect.left, + rect.top, + rect.left + rect.width, + rect.top, + segmentStart.left, + segmentStart.top, + segmentEnd.left, + segmentEnd.top + ); + + if (result && result.length) { + return { + left: result[0], + top: result[1] + }; + } + + // Bottom side. + + result = segseg( + rect.left, + rect.top + rect.height, + rect.left + rect.width, + rect.top + rect.height, + segmentStart.left, + segmentStart.top, + segmentEnd.left, + segmentEnd.top + ); + + if (result && result.length) { + return { + left: result[0], + top: result[1] + }; + } + + return; + }, + + // Displaces a rectangle so that it does not intersect rectangle (with + // optional spacing), moving it the least amount of distance along one axis + // possible. + + displace(movable, stationary, spacing = 0) { + const sLeft = stationary.left - spacing; + const sRight = sLeft + stationary.width + spacing * 2; + const sTop = stationary.top - spacing; + const sBottom = sTop + stationary.height + spacing * 2; + const mLeft = movable.left - spacing; + const mRight = mLeft + movable.width + spacing * 2; + const mTop = movable.top - spacing; + const mBottom = mTop + movable.height + spacing * 2; + + // Calculate the amount of overlap along each axis. + // This is cribbed from + // http://frey.co.nz/old/2007/11/area-of-two-rectangles-algorithm/ + + const xOverlap = Math.min(sRight, mRight) - Math.max(sLeft, mLeft); + const yOverlap = Math.min(sBottom, mBottom) - Math.max(sTop, mTop); + + // Decide whether moving left or right would resolve the overlap with + // the least motion. + + let xChange, yChange; + + if (xOverlap !== 0) { + const leftMove = (mLeft - sLeft) + movable.width + spacing; + const rightMove = sRight - mLeft + spacing; + + if (leftMove < rightMove) { + xChange = -leftMove; + } + else { + xChange = rightMove; + } + } + + // Same as above, but with vertical overlap. + + if (yOverlap !== 0) { + const upMove = (mTop - sTop) + movable.height + spacing; + const downMove = sBottom - mTop + spacing; + + if (upMove < downMove) { + yChange = -upMove; + } + else { + yChange = downMove; + } + } + + // Choose the option that moves the rect the least. + + if (Math.abs(xChange) > Math.abs(yChange)) { + movable.top += yChange; + } + else { + movable.left += xChange; + } + } +}; diff --git a/src/common/router.js b/src/common/router.js new file mode 100644 index 000000000..4effd38d2 --- /dev/null +++ b/src/common/router.js @@ -0,0 +1,201 @@ +/* The router managing the app's views. */ + +let Vue = require('vue'); +const VueRouter = require('vue-router'); +const LocaleView = require('../locale/view'); +const StoryEditView = require('../story-edit-view'); +const StoryListView = require('../story-list-view'); +const WelcomeView = require('../welcome'); +const { loadFormat } = require('../data/actions/story-format'); +const { publishStoryWithFormat } = require('../data/publish'); +const replaceUI = require('../ui/replace'); +const store = require('../data/store'); + +Vue.use(VueRouter); + +let TwineRouter = new VueRouter(); + +TwineRouter.map({ + /* We connect routes with no params directly to a component. */ + + '/locale': { + component: LocaleView + }, + + '/welcome': { + component: WelcomeView + }, + + /* + For routes that take data objects, we create shim components which provide + appropriate props to the components that do the actual work. + */ + + '/stories': { + component: { + template: '

', + + components: { 'story-list': StoryListView }, + + data() { + return { + previouslyEditing: this.$route.params ? + this.$route.params.previouslyEditing : '' + }; + }, + } + }, + + '/stories/:id': { + component: { + template: '
', + + components: { 'story-edit': StoryEditView }, + + data() { + return { id: this.$route.params.id }; + } + }, + }, + + /* + These routes require special handling, because we tear down our UI when + they activate. + */ + + '/stories/:id/play': { + component: { + ready() { + const state = this.$store.state; + const story = state.story.stories.find( + story => story.id === this.$route.params.id + ); + + loadFormat( + this.$store, + story.storyFormat, + story.storyFormatVersion + ).then(format => { + replaceUI(publishStoryWithFormat( + state.appInfo, + story, + format + )); + }); + } + } + }, + + '/stories/:id/proof': { + component: { + ready() { + const state = this.$store.state; + const story = state.story.stories.find( + story => story.id === this.$route.params.id + ); + + loadFormat( + this.$store, + state.pref.proofingFormat.name, + state.pref.proofingFormat.version + ).then(format => { + replaceUI(publishStoryWithFormat( + state.appInfo, + story, + format + )); + }); + } + } + }, + + '/stories/:id/test': { + component: { + ready() { + const state = this.$store.state; + const story = state.story.stories.find( + story => story.id === this.$route.params.id + ); + + loadFormat( + this.$store, + story.storyFormat, + story.storyFormatVersion + ).then(format => { + replaceUI(publishStoryWithFormat( + state.appInfo, + story, + format, + ['debug'] + )); + }); + } + } + }, + + '/stories/:storyId/test/:passageId': { + component: { + ready() { + const state = this.$store.state; + const story = state.story.stories.find( + story => story.id === this.$route.params.storyId + ); + + loadFormat( + this.$store, + story.storyFormat, + story.storyFormatVersion + ).then(format => { + replaceUI(publishStoryWithFormat( + state.appInfo, + story, + format, + ['debug'], + this.$route.params.passageId + )); + }); + } + } + } +}); + +/* By default, show the story list. */ + +TwineRouter.redirect({ + '*': '/stories' +}); + +TwineRouter.beforeEach(transition => { + /* + If we are moving from an edit view to a list view, give the list view the + story that we were previously editing, so that it can display a zooming + transition back to the story. + */ + + if (transition.from.path && transition.to.path === '/stories') { + const editingId = + transition.from.path.match('^/stories/([^\/]+)$'); + + if (editingId) { + transition.to.params.previouslyEditing = editingId[1]; + } + } + + /* + If the user has never used the app before, point them to the welcome view + first. This has to come below any other logic, as calling transition.next() + or redirect() will stop any other logic in the function. + */ + + const welcomeSeen = store.state.pref.welcomeSeen; + + if (transition.to.path === '/welcome' || welcomeSeen) { + transition.next(); + } + else { + transition.redirect('/welcome'); + } +}); + +module.exports = TwineRouter; diff --git a/src/common/typography.less b/src/common/typography.less new file mode 100644 index 000000000..1f4d716da --- /dev/null +++ b/src/common/typography.less @@ -0,0 +1,120 @@ +// Web fonts + +@font-face { + font-family: 'Source Sans Pro'; + src: url('fonts/sourcesanspro-regular.eot'); + src: url('fonts/sourcesanspro-regular.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcesanspro-regular.woff2') format('woff2'), + url('fonts/sourcesanspro-regular.woff') format('woff'), + url('fonts/sourcesanspro-regular.ttf') format('truetype'), + url('fonts/sourcesanspro-regular.svg#source_sans_proregular') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('fonts/sourcesanspro-italic.eot'); + src: url('fonts/sourcesanspro-italic.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcesanspro-italic.woff2') format('woff2'), + url('fonts/sourcesanspro-italic.woff') format('woff'), + url('fonts/sourcesanspro-italic.ttf') format('truetype'), + url('fonts/sourcesanspro-italic.svg#source_sans_proitalic') format('svg'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('fonts/sourcesanspro-bold.eot'); + src: url('fonts/sourcesanspro-bold.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcesanspro-bold.woff2') format('woff2'), + url('fonts/sourcesanspro-bold.woff') format('woff'), + url('fonts/sourcesanspro-bold.ttf') format('truetype'), + url('fonts/sourcesanspro-bold.svg#source_sans_probold') format('svg'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('fonts/sourcesanspro-bolditalic.eot'); + src: url('fonts/sourcesanspro-bolditalic.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcesanspro-bolditalic.woff2') format('woff2'), + url('fonts/sourcesanspro-bolditalic.woff') format('woff'), + url('fonts/sourcesanspro-bolditalic.ttf') format('truetype'), + url('fonts/sourcesanspro-bolditalic.svg#source_sans_probold_italic') format('svg'); + font-weight: bold; + font-style: italic; + +} + +@font-face { + font-family: 'Source Code Pro'; + src: url('fonts/sourcecodepro.eot'); + src: url('fonts/sourcecodepro.eot?#iefix') format('embedded-opentype'), + url('fonts/sourcecodepro.woff2') format('woff2'), + url('fonts/sourcecodepro.woff') format('woff'), + url('fonts/sourcecodepro.ttf') format('truetype'), + url('fonts/sourcecodepro.svg#sourcecodepro') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Nunito Light'; + src: url('fonts/nunito-light.eot'); + src: url('fonts/nunito-light.eot?#iefix') format('embedded-opentype'), + url('fonts/nunito-light.woff') format('woff'), + url('fonts/nunito-light.ttf') format('truetype'), + url('fonts/nunito-light.svg#nunito_light') format('svg'); + font-weight: normal; + font-style: normal; +} + +h1, h2, h3, h4 { + color: black; + font-family: "Nunito Light", sans-serif; + font-weight: normal; + + .theme-dark & { + color: hsl(0, 0%, 80%); + } +} + +h1 { + font-size: 200%; +} + +h2 { + font-size: 125%; +} + +h3 { + font-size: 125%; +} + +h4 { + font-size: 125%; +} + +body { + font-size: 90%; +} + +p, li { + line-height: 130%; +} + +pre { + font: 90% "Source Code Pro", monospace; + white-space: pre-wrap; +} + +.larger { + font-size: 120%; +} + +.smaller { + font-size: 90%; +} diff --git a/src/data/actions/passage.js b/src/data/actions/passage.js new file mode 100644 index 000000000..a7605a27f --- /dev/null +++ b/src/data/actions/passage.js @@ -0,0 +1,242 @@ +const linkParser = require('../link-parser'); +const rect = require('../../common/rect'); + +const actions = module.exports = { + createPassage({ dispatch }, storyId, props) { + dispatch('CREATE_PASSAGE_IN_STORY', storyId, props); + }, + + updatePassage({ dispatch }, storyId, passageId, props) { + dispatch('UPDATE_PASSAGE_IN_STORY', storyId, passageId, props); + }, + + deletePassage({ dispatch }, storyId, passageId) { + dispatch('DELETE_PASSAGE_IN_STORY', storyId, passageId); + }, + + selectPassages(store, storyId, filter) { + const story = store.state.story.stories.find( + story => story.id == storyId + ); + + if (!story) { + throw new Error(`No story exists with id ${storyId}`); + } + + story.passages.forEach(p => { + const current = p.selected; + const wantSelect = filter(p); + + /* Only dispatch updates where there are changes. */ + + if (wantSelect !== current) { + store.dispatch( + 'UPDATE_PASSAGE_IN_STORY', + storyId, + p.id, + { selected: wantSelect }); + } + }); + }, + + /* + Moves a passage so it doesn't overlap any other in its story, and also + snaps to a grid. + */ + + positionPassage(store, storyId, passageId, gridSize, filter) { + if (gridSize && typeof gridSize !== 'number') { + throw new Error('Asked to snap to a non-numeric grid size: ' + gridSize); + } + + const story = store.state.story.stories.find( + story => story.id == storyId + ); + + if (!story) { + throw new Error(`No story exists with id ${storyId}`); + } + + const passage = story.passages.find( + passage => passage.id == passageId + ); + + if (!passage) { + throw new Error( + `No passage exists in this story with id ${passageId}` + ); + } + + /* Displace by other passages. */ + + let passageRect = { + top: passage.top, + left: passage.left, + width: passage.width, + height: passage.height + }; + + story.passages.forEach(other => { + if (other === passage || (filter && !filter(other))) { + return; + } + + const otherRect = { + top: other.top, + left: other.left, + width: other.width, + height: other.height + }; + + if (rect.intersects(otherRect, passageRect)) { + rect.displace(passageRect, otherRect, 10); + } + }); + + /* Snap to the grid. */ + + if (story.snapToGrid && gridSize && gridSize !== 0) { + passageRect.left = Math.round(passageRect.left / gridSize) * + gridSize; + passageRect.top = Math.round(passageRect.top / gridSize) * + gridSize; + } + + /* Save the change. */ + + actions.updatePassage( + store, + storyId, + passageId, + { + top: passageRect.top, + left: passageRect.left + } + ); + }, + + /* + Adds new passages to a story based on new links added in a passage's text. + */ + + createNewlyLinkedPassages(store, storyId, passageId, oldText, gridSize) { + const story = store.state.story.stories.find( + story => story.id === storyId + ); + const passage = story.passages.find( + passage => passage.id === passageId + ); + + /* Determine how many passages we'll need to create. */ + + const oldLinks = linkParser(oldText, true); + const newLinks = linkParser(passage.text, true).filter( + link => (oldLinks.indexOf(link) === -1) && + !(story.passages.some(passage => passage.name === link)) + ); + + /* We center the new passages underneath this one. */ + + const newTop = passage.top + 100 * 1.5; + + /* + We account for the total width of the new passages as both the width of + the passages themselves plus the spacing in between. + */ + + const totalWidth = newLinks.length * 100 + + ((newLinks.length - 1) * (100 / 2)); + let newLeft = passage.left + (100 - totalWidth) / 2; + + newLinks.forEach(link => { + store.dispatch( + 'CREATE_PASSAGE_IN_STORY', + storyId, + { + name: link, + left: newLeft, + top: newTop + } + ); + + const newPassage = story.passages.find(p => p.name === link); + + if (newPassage) { + actions.positionPassage( + store, + storyId, + newPassage.id, + gridSize + ); + } + else { + console.warn('Could not locate newly-created passage in order to position it'); + } + + newLeft += 100 * 1.5; + }); + }, + + /* Updates links to a passage in a story to a new name. */ + + changeLinksInStory(store, storyId, oldName, newName) { + // TODO: add hook for story formats to be more sophisticated + + const story = store.state.story.stories.find( + story => story.id === storyId + ); + + if (!story) { + throw new Error(`No story exists with id ${storyId}`); + } + + /* + Escape regular expression characters. + Taken from https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions + */ + + const oldNameEscaped = oldName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const newNameEscaped = newName.replace(/\$/g, '$$$$'); + + const simpleLinkRe = new RegExp( + '\\[\\[' + oldNameEscaped + '(\\]\\[.*?)?\\]\\]', + 'g' + ); + const compoundLinkRe = new RegExp( + '\\[\\[(.*?)(\\||->)' + oldNameEscaped + '(\\]\\[.*?)?\\]\\]', + 'g' + ); + const reverseLinkRe = new RegExp( + '\\[\\[' + oldNameEscaped + '(<-.*?)(\\]\\[.*?)?\\]\\]', + 'g' + ); + + story.passages.forEach(passage => { + if (simpleLinkRe.test(passage.text) || + compoundLinkRe.test(passage.text) || + reverseLinkRe.test(passage.text)) { + let newText = passage.text; + + newText = newText.replace( + simpleLinkRe, + '[[' + newNameEscaped + '$1]]' + ); + newText = newText.replace( + compoundLinkRe, + '[[$1$2' + newNameEscaped + '$3]]' + ); + newText = newText.replace( + reverseLinkRe, + '[[' + newNameEscaped + '$1$2]]' + ); + + store.dispatch( + 'UPDATE_PASSAGE_IN_STORY', + storyId, + passage.id, + { text: newText } + ); + } + }); + } +}; \ No newline at end of file diff --git a/src/data/actions/passage.spec.js b/src/data/actions/passage.spec.js new file mode 100644 index 000000000..fc749d453 --- /dev/null +++ b/src/data/actions/passage.spec.js @@ -0,0 +1,204 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +const actions = require('./passage'); + +describe('passage actions module', () => { + const props = { fake: true }; + const fakeId = 'not-a-real-id'; + let store; + + beforeEach(() => { + store = { dispatch: spy() }; + }); + + it('dispatches a CREATE_PASSAGE_IN_STORY mutation with createPassage()', () => { + actions.createPassage(store, fakeId, props); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('CREATE_PASSAGE_IN_STORY', fakeId, props)).to.be.true; + }); + + it('dispatches an UPDATE_PASSAGE_IN_STORY mutation with updatePassage()', () => { + actions.updatePassage(store, fakeId, fakeId, props); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('UPDATE_PASSAGE_IN_STORY', fakeId, fakeId, props)).to.be.true; + }); + + it('dispatches a DELETE_PASSAGE_IN_STORY mutation with deletePassage()', () => { + actions.deletePassage(store, fakeId, fakeId); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('DELETE_PASSAGE_IN_STORY', fakeId, fakeId)).to.be.true; + }); + + it('requires a numeric grid size, if passed, when positioning passages()', () => { + let storyStore = { + dispatch: spy(), + state: { + story: { + stories: [ + { + id: fakeId, + passages: [ + { + id: fakeId, + name: 'Test', + text: 'a', + left: 10, + top: 10 + } + ] + } + ] + } + } + }; + + /* Test non-numeric argument. */ + + expect(() => + actions.positionPassage(storyStore, fakeId, fakeId, 'a') + ).to.throw(); + + /* Test undefined argument. */ + + actions.positionPassage(storyStore, fakeId, fakeId); + expect(storyStore.state.story.stories[0].passages[0].left).to.equal(10); + expect(storyStore.state.story.stories[0].passages[0].top).to.equal(10); + + /* Test null argument. */ + + actions.positionPassage(storyStore, fakeId, fakeId, null); + expect(storyStore.state.story.stories[0].passages[0].left).to.equal(10); + expect(storyStore.state.story.stories[0].passages[0].top).to.equal(10); + }); + + it('creates new links with createNewlyLinkedPassages()', () => { + let storyStore = { + dispatch: spy(), + state: { + story: { + stories: [ + { + id: fakeId, + passages: [ + { + id: fakeId, + name: 'Test', + text: '[[Test 2]]' + } + ] + } + ] + } + } + }; + + actions.createNewlyLinkedPassages(storyStore, fakeId, fakeId, '', 10); + expect(storyStore.dispatch.calledOnce).to.be.true; + + const firstCall = storyStore.dispatch.getCall(0); + + expect(firstCall.args[0]).to.equal('CREATE_PASSAGE_IN_STORY'); + expect(firstCall.args[1]).to.equal(fakeId); + expect(firstCall.args[2].name).to.equal('Test 2'); + }); + + it('skips old links with createNewlyLinkedPassages()', () => { + let storyStore = { + dispatch: spy(), + state: { + story: { + stories: [ + { + id: fakeId, + passages: [ + { + id: fakeId, + name: 'Test', + text: '[[Test 2]]' + } + ] + } + ] + } + } + }; + + actions.createNewlyLinkedPassages(storyStore, fakeId, fakeId, '[[Test 2]]'); + expect(storyStore.dispatch.called).to.be.false; + }); + + it('updates links with changeLinksInStory()', () => { + let storyStore = { + dispatch: spy(), + state: { + story: { + stories: [ + { + id: fakeId, + passages: [ + { + id: fakeId, + name: 'Test', + text: '[[Test 2]]' + } + ] + } + ] + } + } + }; + + actions.changeLinksInStory(storyStore, fakeId, 'Test 2', 'Test 2 Changed'); + + const firstCall = storyStore.dispatch.getCall(0); + + expect(firstCall.args[0]).to.equal('UPDATE_PASSAGE_IN_STORY'); + expect(firstCall.args[1]).to.equal(fakeId); + expect(firstCall.args[2]).to.equal(fakeId); + expect(firstCall.args[3].text).to.equal('[[Test 2 Changed]]'); + }); + + it('handles regular expression characters with changeLinksInStory()', () => { + let storyStore = { + dispatch: spy(), + state: { + story: { + stories: [ + { + id: fakeId, + passages: [ + { + id: fakeId, + name: 'Test', + text: '[[.]]' + }, + { + id: fakeId + '2', + name: 'Test 2', + text: '[[2]]' + } + ] + } + ] + } + } + }; + + actions.changeLinksInStory(storyStore, fakeId, '.', 'Changed'); + actions.changeLinksInStory(storyStore, fakeId, '2', '$'); + + const firstCall = storyStore.dispatch.getCall(0); + + expect(firstCall.args[0]).to.equal('UPDATE_PASSAGE_IN_STORY'); + expect(firstCall.args[1]).to.equal(fakeId); + expect(firstCall.args[2]).to.equal(fakeId); + expect(firstCall.args[3].text).to.equal('[[Changed]]'); + + const secondCall = storyStore.dispatch.getCall(1); + + expect(secondCall.args[0]).to.equal('UPDATE_PASSAGE_IN_STORY'); + expect(secondCall.args[1]).to.equal(fakeId); + expect(secondCall.args[2]).to.equal(fakeId + '2'); + expect(secondCall.args[3].text).to.equal('[[$]]'); + }); +}); diff --git a/src/data/actions/pref.js b/src/data/actions/pref.js new file mode 100644 index 000000000..2edefcc9a --- /dev/null +++ b/src/data/actions/pref.js @@ -0,0 +1,9 @@ +/* +Preference-related actions. +*/ + +module.exports = { + setPref({ dispatch }, name, value) { + dispatch('UPDATE_PREF', name, value); + } +}; \ No newline at end of file diff --git a/src/data/actions/pref.spec.js b/src/data/actions/pref.spec.js new file mode 100644 index 000000000..e56e08e40 --- /dev/null +++ b/src/data/actions/pref.spec.js @@ -0,0 +1,17 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +const actions = require('./pref'); + +describe('pref actions module', () => { + let store; + + beforeEach(() => { + store = { dispatch: spy() }; + }); + + it('dispatches an UPDATE_PREF mutation with setPref()', () => { + actions.setPref(store, 'key', 42); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('UPDATE_PREF', 'key', 42)).to.be.true; + }); +}); \ No newline at end of file diff --git a/src/data/actions/story-format.js b/src/data/actions/story-format.js new file mode 100644 index 000000000..46fa6e38a --- /dev/null +++ b/src/data/actions/story-format.js @@ -0,0 +1,296 @@ +/* +Story format-related actions. +*/ + +const jsonp = require('jsonp'); +const semverUtils = require('semver-utils'); +const latestFormatVersions = require('../latest-format-versions'); +const locale = require('../../locale'); +const { setPref } = require('./pref'); + +const actions = module.exports = { + createFormat({ dispatch }, props) { + dispatch('CREATE_FORMAT', props); + }, + + updateFormat({ dispatch }, id, props) { + dispatch('UPDATE_FORMAT', id, props); + }, + + deleteFormat({ dispatch }, id) { + dispatch('DELETE_FORMAT', id); + }, + + createFormatFromUrl(store, url) { + return new Promise((resolve, reject) => { + jsonp( + url, + { name: 'storyFormat', timeout: 2000 }, + (err, data) => { + if (err) { + reject(err); + return; + } + + const pVer = semverUtils.parse(data.version); + const pMinor = parseInt(pVer.minor); + const pPatch = parseInt(pVer.patch); + + /* + Check for an identical version. + */ + + if (store.state.storyFormat.formats.some(current => { + return current.name === data.name && + current.version === data.version; + })) { + reject(new Error( + locale.say('this story format is already installed') + )); + return; + } + + /* + Check for a more recent version. + */ + + if (store.state.storyFormat.formats.some(current => { + const cVer = semverUtils.parse(current.version); + + return current.name === data.name && + cVer.major === pVer.major && + parseInt(cVer.minor) >= pMinor && + parseInt(cVer.patch) >= pPatch; + })) { + reject(new Error( + locale.say( + 'a more recent version of the story format “%s” is already installed', + data.name + ) + )); + return; + } + + const format = { + name: data.name, + version: data.version, + url, + userAdded: true, + properties: data + }; + + store.dispatch('CREATE_FORMAT', format); + resolve(format); + } + ); + }); + }, + + loadFormat(store, name, version) { + /* + We pick the highest version that matches the major version of the + string (e.g. if we ask for version 2.0.8, we may get 2.6.1). + */ + + const majorVersion = semverUtils.parse(version).major; + const formats = store.state.storyFormat.formats.filter( + format => format.name === name && + semverUtils.parse(format.version).major === majorVersion + ); + + if (formats.length === 0) { + throw new Error('No format is available named ' + name); + } + + const format = formats.reduce((prev, current) => { + const pVer = semverUtils.parse(prev.version); + const pMinor = parseInt(pVer.minor); + const pPatch = parseInt(pVer.patch); + const cVer = semverUtils.parse(current.version); + const cMinor = parseInt(cVer.minor); + const cPatch = parseInt(cVer.patch); + + if (cMinor <= pMinor && cPatch <= pPatch) { + return prev; + } + + return current; + }); + + if (!format) { + throw new Error('No format is available for version ' + version); + } + + return new Promise((resolve, reject) => { + if (format.loaded) { + resolve(format); + return; + } + + jsonp( + format.url, + { name: 'storyFormat', timeout: 2000 }, + (err, data) => { + if (err) { + reject(err); + return; + } + + store.dispatch('LOAD_FORMAT', format.id, data); + resolve(format); + } + ); + }); + }, + + /* + Create built-in formats, repair paths to use kebab case (in previous + versions we used camel case), and set version numbers. + */ + + repairFormats(store) { + /* + Delete unversioned formats. + */ + + store.state.storyFormat.formats.forEach(format => { + if (typeof format.version !== 'string' || format.version === '') { + console.warn( + `Deleting unversioned story format ${format.name}` + ); + actions.deleteFormat(store, format.id); + } + }); + + /* + Create built-in story formats if they don't already exist. + */ + + const builtinFormats = [ + { + name: 'Harlowe', + url: 'story-formats/harlowe-1.2.4/format.js', + version: '1.2.4', + userAdded: false + }, + { + name: 'Harlowe', + url: 'story-formats/harlowe-2.0.1/format.js', + version: '2.0.1', + userAdded: false + }, + { + name: 'Paperthin', + url: 'story-formats/paperthin-1.0.0/format.js', + version: '1.0.0', + userAdded: false + }, + { + name: 'Snowman', + url: 'story-formats/snowman-1.3.0/format.js', + version: '1.3.0', + userAdded: false + }, + { + name: 'SugarCube', + url: 'story-formats/sugarcube-1.0.35/format.js', + version: '1.0.35', + userAdded: false + }, + { + name: 'SugarCube', + url: 'story-formats/sugarcube-2.18.0/format.js', + version: '2.18.0', + userAdded: false + } + ]; + + builtinFormats.forEach(builtin => { + if (!store.state.storyFormat.formats.find( + format => format.name === builtin.name && + format.version === builtin.version + )) { + actions.createFormat(store, builtin); + } + }); + + /* + Set default formats if not already set, or if an unversioned preference + exists. + */ + + if (typeof store.state.pref.defaultFormat !== 'object') { + setPref( + store, + 'defaultFormat', + { name: 'Harlowe', version: '2.0.1' } + ); + } + + if (typeof store.state.pref.proofingFormat !== 'object') { + setPref( + store, + 'proofingFormat', + { name: 'Paperthin', version: '1.0.0' } + ); + } + + /* + Delete any outdated formats. + */ + + const latestVersions = latestFormatVersions(store); + + store.state.storyFormat.formats.forEach(format => { + if (!format.version) { + return; + } + + const v = semverUtils.parse(format.version); + + if (v.version !== latestVersions[format.name][v.major].version) { + console.warn( + `Deleting outdated story format ${format.name} ` + + v.version + ); + actions.deleteFormat(store, format.id); + } + }); + + /* + Bring format preferences in line with the latest of its major version + series. + */ + + const defaultFormat = store.state.pref.defaultFormat || + { name: null, version: null }; + const defaultFormatVersion = semverUtils.parse(defaultFormat.version); + const latestDefault = latestVersions[defaultFormat.name]; + const proofingFormat = store.state.pref.proofingFormat || + { name: null, version: null }; + const proofingFormatVersion = semverUtils.parse(proofingFormat.version); + const latestProofing = latestVersions[proofingFormat.name]; + + if (latestDefault && latestDefault[defaultFormatVersion.major]) { + setPref( + store, + 'defaultFormat', + { + name: defaultFormat.name, + version: latestDefault[defaultFormatVersion.major].version + } + ); + } + + if (latestProofing && latestProofing[proofingFormatVersion.major]) { + setPref( + store, + 'proofingFormat', + { + name: proofingFormat.name, + version: latestProofing[proofingFormatVersion.major].version + } + ); + } + } +}; \ No newline at end of file diff --git a/src/data/actions/story-format.spec.js b/src/data/actions/story-format.spec.js new file mode 100644 index 000000000..b99d2e069 --- /dev/null +++ b/src/data/actions/story-format.spec.js @@ -0,0 +1,228 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +const actions = require('./story-format'); + +describe('story format actions module', () => { + const fakeId = 'not-a-real-id'; + const props = { fake: true }; + let store; + + beforeEach(() => { + store = { dispatch: spy() }; + }); + + it('dispatches a CREATE_FORMAT mutation with createFormat()', () => { + actions.createFormat(store, props); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('CREATE_FORMAT', props)).to.be.true; + }); + + it('dispatches an UPDATE_FORMAT mutation with createFormat()', () => { + actions.updateFormat(store, fakeId, props); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('UPDATE_FORMAT', fakeId, props)).to.be.true; + }); + + it('dispatches a DELETE_FORMAT mutation with deleteFormat()', () => { + actions.deleteFormat(store, fakeId); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('DELETE_FORMAT', fakeId)).to.be.true; + }); + + it('creates built-in formats with repairFormats()', () => { + let formatsStore = { + dispatch: spy(), + state: { + pref: { + defaultFormat: { + name: 'Default Format', + version: '1.0.0' + }, + proofingFormat: { + name: 'Proofing Format', + version: '1.0.0' + } + }, + storyFormat: { + formats: [] + } + } + }; + + actions.repairFormats(formatsStore); + + let created = {}; + + for (let i = 0; i < formatsStore.dispatch.callCount; i++) { + let call = formatsStore.dispatch.getCall(i); + + if (call.args[0] === 'CREATE_FORMAT') { + created[call.args[1].name + '-' + call.args[1].version] = call.args[1]; + } + } + + expect(created['Harlowe-1.2.4']).to.exist; + expect(created['Harlowe-1.2.4'].url).to.equal('story-formats/harlowe-1.2.4/format.js'); + expect(created['Harlowe-1.2.4'].userAdded).to.be.false; + expect(created['Harlowe-2.0.1']).to.exist; + expect(created['Harlowe-2.0.1'].url).to.equal('story-formats/harlowe-2.0.1/format.js'); + expect(created['Harlowe-2.0.1'].userAdded).to.be.false; + expect(created['Paperthin-1.0.0']).to.exist; + expect(created['Paperthin-1.0.0'].url).to.equal('story-formats/paperthin-1.0.0/format.js'); + expect(created['Paperthin-1.0.0'].userAdded).to.be.false; + expect(created['Snowman-1.3.0']).to.exist; + expect(created['Snowman-1.3.0'].url).to.equal('story-formats/snowman-1.3.0/format.js'); + expect(created['Snowman-1.3.0'].userAdded).to.be.false; + expect(created['SugarCube-1.0.35']).to.exist; + expect(created['SugarCube-1.0.35'].url).to.equal('story-formats/sugarcube-1.0.35/format.js'); + expect(created['SugarCube-1.0.35'].userAdded).to.be.false; + expect(created['SugarCube-2.18.0']).to.exist; + expect(created['SugarCube-2.18.0'].url).to.equal('story-formats/sugarcube-2.18.0/format.js'); + expect(created['SugarCube-2.18.0'].userAdded).to.be.false; + }); + + it('sets default formats with repairFormats()', () => { + let formatsStore = { + dispatch: spy().withArgs('UPDATE_PREF'), + state: { + pref: {}, + storyFormat: { + formats: [] + } + } + }; + + actions.repairFormats(formatsStore); + + expect(formatsStore.dispatch.calledWith( + 'UPDATE_PREF', 'defaultFormat', { name: 'Harlowe', version: '2.0.1' } + )).to.be.true; + expect(formatsStore.dispatch.calledWith( + 'UPDATE_PREF', 'proofingFormat', { name: 'Paperthin', version: '1.0.0' } + )).to.be.true; + }); + + it('deletes unversioned formats with repairFormats()', () => { + let formatsStore = { + dispatch: spy(), + state: { + pref: {}, + storyFormat: { + formats: [ + { id: fakeId, name: 'Test' } + ] + } + } + }; + + actions.repairFormats(formatsStore); + expect(formatsStore.dispatch.calledWith('DELETE_FORMAT', fakeId)).to.be.true; + }); + + it('does not duplicate formats with repairFormats()', () => { + let formatsStore = { + dispatch: spy().withArgs('CREATE_FORMAT'), + state: { + pref: {}, + storyFormat: { + formats: [ + { name: 'Harlowe', version: '1.2.4' }, + { name: 'Harlowe', version: '2.0.1' }, + { name: 'Paperthin', version: '1.0.0' }, + { name: 'Snowman', version: '1.3.0' }, + { name: 'SugarCube', version: '1.0.35' }, + { name: 'SugarCube', version: '2.18.0' } + ] + } + } + }; + + actions.repairFormats(formatsStore); + expect(formatsStore.dispatch.calledOnce).to.be.false; + }); + + it('deletes outdated story format versions with repairFormats()', () => { + let formatsStore = { + dispatch: spy(), + state: { + pref: {}, + storyFormat: { + formats: [ + { name: 'Custom', version: '1.2.3' }, + { id: fakeId, name: 'Custom', version: '1.2.1' }, + { name: 'Custom', version: '2.0.0' } + ] + } + } + }; + + formatsStore.dispatch.withArgs('DELETE_FORMAT', fakeId); + actions.repairFormats(formatsStore); + expect(formatsStore.dispatch.withArgs('DELETE_FORMAT', fakeId).calledOnce).to.be.true; + }); + + it('updates the default format version with repairFormats()', () => { + let formatsStore = { + dispatch: spy(), + state: { + pref: { + defaultFormat: { + name: 'Default Format', + version: '1.0.0' + }, + proofingFormat: { + name: 'Proofing Format', + version: '1.0.0' + } + }, + storyFormat: { + formats: [ + { id: fakeId, name: 'Default Format', version: '1.0.1' }, + { id: fakeId, name: 'Default Format', version: '2.0.1' }, + { id: fakeId, name: 'Proofing Format', version: '1.0.0' } + ] + } + } + }; + + actions.repairFormats(formatsStore); + expect(formatsStore.dispatch.calledWith( + 'UPDATE_PREF', + 'defaultFormat', + { name: 'Default Format', version: '1.0.1' } + )).to.be.true; + }); + + it('updates the proofing version with repairFormats()', () => { + let formatsStore = { + dispatch: spy(), + state: { + pref: { + defaultFormat: { + name: 'Default Format', + version: '1.0.0' + }, + proofingFormat: { + name: 'Proofing Format', + version: '1.0.0' + } + }, + storyFormat: { + formats: [ + { id: fakeId, name: 'Default Format', version: '1.0.0' }, + { id: fakeId, name: 'Proofing Format', version: '1.0.0' }, + { id: fakeId, name: 'Proofing Format', version: '1.0.1' }, + { id: fakeId, name: 'Proofing Format', version: '2.0.1' } + ] + } + } + }; + + actions.repairFormats(formatsStore); + expect(formatsStore.dispatch.calledWith( + 'UPDATE_PREF', + 'proofingFormat', + { name: 'Proofing Format', version: '1.0.1' } + )).to.be.true; + }); +}); \ No newline at end of file diff --git a/src/data/actions/story.js b/src/data/actions/story.js new file mode 100644 index 000000000..6ac1dc790 --- /dev/null +++ b/src/data/actions/story.js @@ -0,0 +1,176 @@ +/* +Story-related actions. +*/ + +const semverUtils = require('semver-utils'); +const latestFormatVersions = require('../latest-format-versions'); + +const actions = module.exports = { + createStory(store, props) { + let normalizedProps = Object.assign({}, props); + + /* If a format isn't specified, use the default one. */ + + if (!normalizedProps.storyFormat) { + normalizedProps.storyFormat = store.state.pref.defaultFormat.name; + normalizedProps.storyFormatVersion = + store.state.pref.defaultFormat.version; + } + + store.dispatch('CREATE_STORY', normalizedProps); + }, + + updateStory({ dispatch }, id, props) { + dispatch('UPDATE_STORY', id, props); + }, + + deleteStory({ dispatch }, id) { + dispatch('DELETE_STORY', id); + }, + + duplicateStory({ dispatch }, id, newName) { + dispatch('DUPLICATE_STORY', id, newName); + }, + + importStory({ dispatch }, toImport) { + dispatch('IMPORT_STORY', toImport); + }, + + setTagColorInStory(store, storyId, tagName, tagColor) { + const story = store.state.story.stories.find( + story => story.id == storyId + ); + let toMerge = {}; + + toMerge[tagName] = tagColor; + + if (!story) { + throw new Error(`No story exists with id ${storyId}`); + } + + store.dispatch( + 'UPDATE_STORY', + storyId, + { tagColors: Object.assign({}, story.tagColors, toMerge) } + ); + }, + + /* + Removes any unused tag colors from a story. + */ + + cleanUpTagColorsInStory(store, storyId) { + let story = store.state.story.stories.find( + story => story.id == storyId + ); + let tagColors = Object.assign({}, story.tagColors); + + if (!story) { + throw new Error(`No story exists with id ${storyId}`); + } + + Object.keys(tagColors).forEach(tag => { + if (story.passages.some(p => p.tags.indexOf(tag) !== -1)) { + return; + } + + delete tagColors[tag]; + }); + + store.dispatch('UPDATE_STORY', storyId, { tagColors }); + }, + + /* + Repairs stories by ensuring that they always have a story format and + version set. + */ + + repairStories(store) { + const latestVersions = latestFormatVersions(store); + + store.state.story.stories.forEach(story => { + /* + Reset stories without any story format. + */ + + if (!story.storyFormat) { + actions.updateStory( + store, + story.id, + { storyFormat: store.state.pref.defaultFormat.name } + ); + } + + /* + Coerce old SugarCube formats, which had version numbers in their + name, to the correct built-in ones. + */ + + if (/^SugarCube 1/.test(story.storyFormat)) { + actions.updateStory( + store, + story.id, + { + storyFormat: 'SugarCube', + storyFormatVersion: latestVersions['SugarCube']['1'].version + } + ); + } + else if (/^SugarCube 2/.test(story.storyFormat)) { + actions.updateStory( + store, + story.id, + { + storyFormat: 'SugarCube', + storyFormatVersion: latestVersions['SugarCube']['2'].version + } + ); + } + + if (story.storyFormatVersion) { + /* + Update the story's story format to the latest available version. + */ + + const majorVersion = semverUtils.parse( + story.storyFormatVersion + ).major; + + if (latestVersions[story.storyFormat] && + latestVersions[story.storyFormat][majorVersion]) { + actions.updateStory( + store, + story.id, + { + /* eslint-disable max-len */ + storyFormatVersion: latestVersions[story.storyFormat][majorVersion].version + /* eslint-enable max-len */ + } + ); + } + } + else if (latestVersions[story.storyFormat]) { + /* + If a story has no format version, pick the lowest major version + number currently available. + */ + + const majorVersion = Object.keys( + latestVersions[story.storyFormat] + ).reduce( + (prev, current) => (current < prev) ? current : prev + ); + + actions.updateStory( + store, + story.id, + { + /* eslint-disable max-len */ + storyFormatVersion: latestVersions[story.storyFormat][majorVersion].version + /* eslint-enable max-len */ + } + ); + } + }); + } +}; diff --git a/src/data/actions/story.spec.js b/src/data/actions/story.spec.js new file mode 100644 index 000000000..4ef4dd147 --- /dev/null +++ b/src/data/actions/story.spec.js @@ -0,0 +1,227 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +const actions = require('./story'); + +describe('story actions module', () => { + const props = { fake: true }; + const fakeId = 'not-a-real-id'; + let store; + + beforeEach(() => { + store = { + dispatch: spy(), + state: { + pref: { + defaultFormat: { + name: 'My Default Format', + version: '1.2.3' + } + } + } + }; + }); + + it('dispatches a CREATE_STORY mutation with createStory()', () => { + const props = { + name: 'A New Story', + storyFormat: 'Test Format', + storyFormatVersion: '1.0.0' + }; + + actions.createStory(store, props); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('CREATE_STORY', props)).to.be.true; + }); + + it('ensures a story created with createStory() always has a story format set', () => { + actions.createStory(store, { name: 'A New Story' }); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith( + 'CREATE_STORY', + { name: 'A New Story', storyFormat: 'My Default Format', storyFormatVersion: '1.2.3' } + )).to.be.true; + }); + + it('dispatches a DELETE_STORY mutation with deleteStory()', () => { + actions.deleteStory(store, fakeId); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('DELETE_STORY', fakeId)).to.be.true; + }); + + it('dispatches a DUPLICATE_STORY mutation with deleteStory()', () => { + actions.duplicateStory(store, fakeId, 'Another Name'); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('DUPLICATE_STORY', fakeId, 'Another Name')).to.be.true; + }); + + it('dispatches an IMPORT_STORY mutation with importStory()', () => { + actions.importStory(store, props); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('IMPORT_STORY', props)).to.be.true; + }); + + it('dispatches an UPDATE_STORY mutation with updateStory()', () => { + actions.updateStory(store, fakeId, props); + expect(store.dispatch.calledOnce).to.be.true; + expect(store.dispatch.calledWith('UPDATE_STORY', fakeId, props)).to.be.true; + }); + + it('sets default formats on stories with repairStories()', () => { + let storiesStore = { + dispatch: spy(), + state: { + pref: { + defaultFormat: { name: 'Default Format', version: '1.2.3' } + }, + storyFormat: { + formats: [ + { name: 'Default Format', version: '1.2.3' } + ] + }, + story: { + stories: [ + { id: 'not-a-real-id' } + ] + } + } + }; + + actions.repairStories(storiesStore); + expect(storiesStore.dispatch.calledWith( + 'UPDATE_STORY', + 'not-a-real-id', + { storyFormat: 'Default Format' } + )).to.be.true; + }); + + it('coerces old SugarCube references to their correct versions with repairStories()', () => { + let storiesStore = { + dispatch: spy(), + state: { + story: { + stories: [ + { + id: 'not-a-real-id', + storyFormat: 'SugarCube 1 (local/offline)' + }, + { + id: 'also-not-a-real-id', + storyFormat: 'SugarCube 2 (local/offline)' + } + ] + }, + storyFormat: { + formats: [ + { name: 'SugarCube', version: '1.2.3' }, + { name: 'SugarCube', version: '2.3.4' } + ] + } + } + }; + + actions.repairStories(storiesStore); + expect(storiesStore.dispatch.calledWith( + 'UPDATE_STORY', + 'not-a-real-id', + { storyFormat: 'SugarCube', storyFormatVersion: '1.2.3' } + )).to.be.true; + expect(storiesStore.dispatch.calledWith( + 'UPDATE_STORY', + 'also-not-a-real-id', + { storyFormat: 'SugarCube', storyFormatVersion: '2.3.4' } + )).to.be.true; + }); + + it('sets format versions on stories with repairStories()', () => { + let storiesStore = { + dispatch: spy(), + state: { + storyFormat: { + formats: [ + { name: 'Default Format', version: '1.2.3' }, + { name: 'Default Format', version: '1.2.5' } + ] + }, + story: { + stories: [ + { + id: 'not-a-real-id', + storyFormat: 'Default Format' + }, + { + id: 'also-not-a-real-id', + storyFormat: 'Default Format', + storyFormatVersion: '' + } + ] + } + } + }; + + actions.repairStories(storiesStore); + expect(storiesStore.dispatch.calledWith( + 'UPDATE_STORY', + 'not-a-real-id', + { storyFormatVersion: '1.2.5' } + )).to.be.true; + expect(storiesStore.dispatch.calledWith( + 'UPDATE_STORY', + 'also-not-a-real-id', + { storyFormatVersion: '1.2.5' } + )).to.be.true; + }); + + it('updates story format versions with repairStories()', () => { + let storiesStore = { + dispatch: spy(), + state: { + storyFormat: { + formats: [ + { name: 'Default Format', version: '1.2.3' }, + { name: 'Default Format', version: '1.2.5' } + ] + }, + story: { + stories: [ + { + id: 'not-a-real-id', + storyFormat: 'Default Format', + storyFormatVersion: '1.0.0' + } + ] + } + } + }; + + actions.repairStories(storiesStore); + expect(storiesStore.dispatch.calledWith( + 'UPDATE_STORY', + 'not-a-real-id', + { storyFormatVersion: '1.2.5' } + )).to.be.true; + }); + + it('leaves stories alone if their story format does not exist', () => { + let storiesStore = { + dispatch: spy(), + state: { + storyFormat: { + formats: [ + { name: 'Default Format', version: '1.2.3' }, + ] + }, + story: { + stories: [ + { + id: 'not-a-real-id', + storyFormat: 'No Format', + storyFormatVersion: '1.0.0' + } + ] + } + } + }; + + expect(() => actions.repairStories(storiesStore)).to.not.throw(); + }); +}); diff --git a/src/data/import.js b/src/data/import.js new file mode 100644 index 000000000..81e387530 --- /dev/null +++ b/src/data/import.js @@ -0,0 +1,134 @@ +/* +Handles importing HTML source code into story objects ready to be saved to the +store. This works on both published story files and archives. + +The one difference between what's returned from this module and the usual +objects in the store is that passages have a `pid` property instead of an `id`. +Pids are sequential, not UUIDs. + +It's important that this code be as efficient as possible, as it directly +affects startup time in the Twine desktop app. This module moves data from the +filesystem into local storage, and the app can't begin until it's done. +*/ + +/* HTML selectors used to find data in HTML format. */ + +const selectors = { + passage: 'tw-passage', + story: 'tw-story', + script: '[role=script]', + stylesheet: '[role=stylesheet]', + storyData: 'tw-storydata', + tagColors: 'tw-tag', + passageData: 'tw-passagedata' +}; + +/* +Converts a DOM element to a story object matching the format in +the store. +*/ + +function domToObject(storyEl, forceLastUpdate) { + return { + /* + Important: this is the passage's pid (a one-off id created at publish + time), *not* a database id. + */ + + startPassagePid: + storyEl.attributes.startnode ? + storyEl.attributes.startnode.value : null, + name: + storyEl.attributes.name ? + storyEl.attributes.name.value : null, + ifid: + storyEl.attributes.ifid ? + storyEl.attributes.ifid.value : null, + lastUpdate: + forceLastUpdate || new Date(), + snapToGrid: + false, + storyFormat: + storyEl.attributes.format ? + storyEl.attributes.format.value : null, + storyFormatVersion: + storyEl.attributes['format-version'] ? + storyEl.attributes['format-version'].value : null, + script: + Array.from(storyEl.querySelectorAll(selectors.script)) + .reduce( + (src, el) => src + `${el.textContent}\n`, + '' + ), + stylesheet: + Array.from(storyEl.querySelectorAll(selectors.stylesheet)) + .reduce( + (src, el) => src + `${el.textContent}\n`, + '' + ), + zoom: + storyEl.attributes.zoom ? + parseFloat(storyEl.attributes.zoom.value) : 1, + tagColors: + Array.from(storyEl.querySelectorAll(selectors.tagColors)) + .reduce( + (src, el) => { + src[el.attributes.name.value] = + el.attributes.color.value; + return src; + }, + {} + ), + passages: + Array.from(storyEl.querySelectorAll(selectors.passageData)) + .map(passageEl => { + const pos = passageEl.attributes.position.value + .split(',') + .map(Math.floor); + + let size = [100, 100]; + + if (passageEl.attributes.size) { + size = passageEl.attributes.size.value + .split(',') + .map(Math.floor); + } + + return { + /* Again, a one-off id, not a database id. */ + + pid: + passageEl.attributes.pid.value, + left: + pos[0], + top: + pos[1], + width: + size[0], + height: + size[1], + selected: + false, + tags: + passageEl.attributes.tags.value === '' ? + [] + : passageEl.attributes.tags.value.split(/\s+/), + name: + passageEl.attributes.name.value, + text: + passageEl.textContent + }; + }) + }; +} + +module.exports = (html, lastUpdate) => { + let nodes = document.createElement('div'); + + nodes.innerHTML = html; + + return Array.from( + nodes.querySelectorAll(selectors.storyData) + ) + .map(storyEl => domToObject(storyEl, lastUpdate)); +}; diff --git a/src/data/import.spec.js b/src/data/import.spec.js new file mode 100644 index 000000000..82ae3efbb --- /dev/null +++ b/src/data/import.spec.js @@ -0,0 +1,93 @@ +const { expect } = require('chai'); +const importer = require('./import'); + +const testHtml = ` + +`; + +const bareTestHtml = ''; + +describe('import module', () => { + it('creates a JavaScript object representation of HTML data', () => { + const result = importer(testHtml); + + expect(result).to.be.an('array'); + expect(result.length).to.equal(1); + expect(result[0].startPassagePid).to.equal('1'); + expect(result[0].name).to.equal('Test'); + expect(result[0].ifid).to.equal('3AE380EE-4B34-4D0D-A8E2-BE624EB271C9'); + expect(result[0].zoom).to.equal(1.5); + expect(result[0].lastUpdate).to.be.a('date'); + expect(result[0].script).to.equal('alert(\'hi\');\n'); + expect(result[0].stylesheet).to.equal('* { color: red }\n* { color: blue }\n'); + expect(result[0].tagColors['my-tag']).to.equal('purple'); + expect(result[0].passages).to.be.an('array'); + expect(result[0].passages.length).to.equal(3); + expect(result[0].passages[0].pid).to.equal('1'); + expect(result[0].passages[0].left).to.equal(450); + expect(result[0].passages[0].top).to.equal(250); + expect(result[0].passages[0].width).to.equal(100); + expect(result[0].passages[0].height).to.equal(100); + expect(result[0].passages[0].selected).to.equal(false); + expect(result[0].passages[0].tags).to.be.an('array'); + expect(result[0].passages[0].tags.length).to.equal(2); + expect(result[0].passages[0].tags[0]).to.equal('foo'); + expect(result[0].passages[0].tags[1]).to.equal('bar'); + expect(result[0].passages[0].name).to.equal('Untitled Passage'); + expect(result[0].passages[0].text).to.equal('This is some text.\n\n[[1]]'); + expect(result[0].passages[1].pid).to.equal('2'); + expect(result[0].passages[1].left).to.equal(600); + expect(result[0].passages[1].top).to.equal(200); + expect(result[0].passages[1].width).to.equal(200); + expect(result[0].passages[1].height).to.equal(200); + expect(result[0].passages[1].selected).to.equal(false); + expect(result[0].passages[1].tags).to.be.an('array'); + expect(result[0].passages[1].tags.length).to.equal(0); + expect(result[0].passages[1].name).to.equal('1'); + expect(result[0].passages[1].text).to.equal('This is another <>.'); + expect(result[0].passages[2].left).to.equal(700); + expect(result[0].passages[2].top).to.equal(300); + expect(result[0].passages[2].width).to.equal(100); + expect(result[0].passages[2].height).to.equal(100); + expect(result[0].passages[2].tags).to.be.an('array'); + expect(result[0].passages[2].tags.length).to.equal(0); + expect(result[0].passages[2].name).to.equal(''); + expect(result[0].passages[2].text).to.equal('Another passage.'); + }); + + it('handles malformed HTML data', () => { + let result = importer(''); + + expect(result.length).to.equal(0); + + result = importer(''); + }); + + it('handles HTML data without expected attributes', () => { + let result = importer(bareTestHtml); + + expect(result.length).to.equal(1); + expect(result[0].name).to.equal('Test'); + expect(result[0].ifid).to.equal(null); + expect(result[0].zoom).to.equal(1); + expect(result[0].lastUpdate).to.be.a('date'); + expect(result[0].script).to.equal(''); + expect(result[0].stylesheet).to.equal(''); + expect(result[0].tagColors).to.be.a('object'); + expect(result[0].passages).to.be.an('array'); + expect(result[0].passages.length).to.equal(0); + }); + + it('allows setting the story\'s creation date manually', () => { + const forceDate = new Date(Date.parse('January 1, 1987')); + const result = importer(testHtml, forceDate); + + expect(result[0].lastUpdate).to.equal(forceDate); + }); +}); diff --git a/src/data/latest-format-versions.js b/src/data/latest-format-versions.js new file mode 100644 index 000000000..0ef0a3978 --- /dev/null +++ b/src/data/latest-format-versions.js @@ -0,0 +1,34 @@ +/* +Returns the latest story format version available, indexed by format name and +major version (as a string, not a number). +*/ + +const semverUtils = require('semver-utils'); + +module.exports = store => { + const latestVersions = {}; + + store.state.storyFormat.formats.forEach(format => { + if (!format.version) { + return; + } + + const v = semverUtils.parse(format.version); + + if (latestVersions[format.name]) { + const existing = latestVersions[format.name][v.major]; + + if (!existing || + v.minor > existing.minor || + v.minor === existing.minor && v.patch > existing.patch) { + latestVersions[format.name][v.major] = v; + } + } + else { + latestVersions[format.name] = {}; + latestVersions[format.name][v.major] = v; + } + }); + + return latestVersions; +}; \ No newline at end of file diff --git a/src/data/link-parser.js b/src/data/link-parser.js new file mode 100644 index 000000000..9b10831d5 --- /dev/null +++ b/src/data/link-parser.js @@ -0,0 +1,82 @@ +/* +Parses passage text for links. Optionally, it returns internal links only -- +e.g. those pointing to other passages in a story, not to an external web site. +*/ + +'use strict'; + +/* The top level regular expression to catch links -- i.e. [[link]]. */ +const extractLinkTags = (text) => text.match(/\[\[.*?\]\]/g) || []; + +/* Links _not_ starting with a protocol, e.g. abcd://. */ +const internalLinks = link => !/^\w+:\/\/\/?\w/i.test(link); + +const nonEmptyLinks = link => link !== ''; + +/* Identifies values that appear only once in the array. */ +const uniques = (v, i, a) => a.indexOf(v) === i; + +/* Setter is the second [] block if exists. */ +const removeSetters = link => { + const noSetter = getField(link, '][', 0); + + return typeof (noSetter) !== 'undefined' ? noSetter : link; +}; + +const removeEnclosingBrackets = link => link.substr(2, link.length - 4); + +/* +Split the link by the separator and return the field in the +given index. Negative indices start from the end of the array. +*/ +const getField = (link, separator, index) => { + const fields = link.split(separator); + + if (fields.length === 1) { + /* Separator not present. */ + return undefined; + } + + return (index < 0) ? fields[fields.length + index] : fields[index]; +}; + +const extractLink = (tagContent) => { + /* + Arrow links: + [[display text->link]] format + [[link<-display text]] format + + Interpret the rightmost '->' and the leftmost '<-' as the divider. + */ + + return getField(tagContent, '->', -1) || + getField(tagContent, '<-', 0) || + + /* + TiddlyWiki links: + [[display text|link]] format + */ + getField(tagContent, '|', -1) || + + /* [[link]] format */ + tagContent; +}; + +module.exports = (text, internalOnly) => { + /* + Link matching regexps ignore setter components, should they exist. + */ + + let result = extractLinkTags(text) + .map(removeEnclosingBrackets) + .map(removeSetters) + .map(extractLink) + .filter(nonEmptyLinks) + .filter(uniques); + + if (internalOnly) { + result = result.filter(internalLinks); + } + + return result; +}; \ No newline at end of file diff --git a/src/data/link-parser.spec.js b/src/data/link-parser.spec.js new file mode 100644 index 000000000..866f351be --- /dev/null +++ b/src/data/link-parser.spec.js @@ -0,0 +1,142 @@ +const { expect } = require('chai'); +const linkParser = require('./link-parser'); + +describe('link-parser', () => { + it('parses [[simple links]]', () => { + const links = linkParser('[[link]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[pipe|links]]', () => { + const links = linkParser('[[display|link]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[arrow->links]]', () => { + const links = linkParser('[[display->link]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[backarrow<-links]]', () => { + const links = linkParser('[[link<-display]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[simple links][setter]] while ignoring setter component', () => { + const links = linkParser('[[link][setter]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[pipe|links][setter]] while ignoring setter component', () => { + const links = linkParser('[[link][setter]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[arrow->links][setter]] while ignoring setter component', () => { + const links = linkParser('[[display->link][setter]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[backarrow<-links][setter]] while ignoring setter component', () => { + const links = linkParser('[[link<-display][setter]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[simple links][]] while ignoring empty setter component', () => { + const links = linkParser('[[link][]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[pipe|links][]] while ignoring empty setter component', () => { + const links = linkParser('[[display|link][]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[arrow->links][]] while ignoring empty setter component', () => { + const links = linkParser('[[display->link][]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[backarrow<-links][]] while ignoring empty setter component', () => { + const links = linkParser('[[link<-display][]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('ignores [[]]', () => { + const links = linkParser('[[]]'); + + expect(links).to.have.lengthOf(0); + }); + + it('ignores [[][]]', () => { + const links = linkParser('[[][]]'); + + expect(links).to.have.lengthOf(0); + }); + + it('ignores [[][setter]]', () => { + const links = linkParser('[[][setter]]'); + + expect(links).to.have.lengthOf(0); + }); + + it('parses [[ /regex with [ | ]/ ->link]]', () => { + const links = linkParser('[[/regex with [ | ]/ ->link]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[ /regex with [ | ]/ ->link][setter]]', () => { + const links = linkParser('[[/regex with [ | ]/ ->link][setter]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('link'); + }); + + it('parses [[simple link1]][[simple link 2]]', () => { + const links = linkParser('[[link1]][[link2]]'); + + expect(links).to.have.lengthOf(2); + expect(links[0]).to.equal('link1'); + expect(links[1]).to.equal('link2'); + }); + + it('handles duplicate links', () => { + const links = linkParser('[[a]] [[a]]'); + + expect(links).to.have.lengthOf(1); + expect(links[0]).to.equal('a'); + }); + + it('ignores external links when requested', () => { + const links = linkParser('[[http://twinery.org]]', true); + + expect(links).to.have.lengthOf(0); + }); + } +); diff --git a/src/data/local-storage/comma-list.js b/src/data/local-storage/comma-list.js new file mode 100644 index 000000000..864e15a58 --- /dev/null +++ b/src/data/local-storage/comma-list.js @@ -0,0 +1,39 @@ +// Lightweight functions for dealing with comma-delimited strings (e.g. that +// don't deal with all the intracacies of dealing with the actual CSV format, +// e.g. quotation marks). + +const commaList = module.exports = { + // Returns whether a list contains a value. + + contains(list, value) { + return (new RegExp('\\b' + value + '\\b')).test(list); + }, + + // Adds a value to a list if it's not already in there. + + addUnique(list, value) { + if (list === '') { + return value; + } + + if (commaList.contains(list, value)) { + return list; + } + + return list + ',' + value; + }, + + // Removes a value from a list. + + remove(list, value) { + list = list.replace(new RegExp(',?' + value), ''); + + // We end up with a leading comma if we just removed the first value. + + if (list[0] === ',') { + return list.substring(1); + } + + return list; + } +}; diff --git a/src/data/local-storage/comma-list.spec.js b/src/data/local-storage/comma-list.spec.js new file mode 100644 index 000000000..1f6b4a2f4 --- /dev/null +++ b/src/data/local-storage/comma-list.spec.js @@ -0,0 +1,29 @@ +const { expect } = require('chai'); +const commaList = require('./comma-list'); + +describe('comma-list module', () => { + it('checks for the presence of an entry with contains()', () => { + expect(commaList.contains('foo,bar,baz', 'foo')).to.be.true; + expect(commaList.contains('foo,bar,baz', 'bar')).to.be.true; + expect(commaList.contains('foo,bar,baz', 'baz')).to.be.true; + }); + + it('adds an item with addUnique()', () => { + expect(commaList.addUnique('foo', 'bar')).to.equal('foo,bar'); + expect(commaList.addUnique('foo,bar', 'bar')).to.equal('foo,bar'); + expect(commaList.addUnique('', 'bar')).to.equal('bar'); + expect(commaList.addUnique('foo,baz', 'bar')).to.equal('foo,baz,bar'); + }); + + it('removes an item with remove()', () => { + expect(commaList.remove('foo', 'foo')).to.equal(''); + expect(commaList.remove('foo,bar', 'foo')).to.equal('bar'); + expect(commaList.remove('foo,bar', 'bar')).to.equal('foo'); + expect(commaList.remove('foo,bar,baz', 'bar')).to.equal('foo,baz'); + expect(commaList.remove('foo,bar,baz', 'baz')).to.equal('foo,bar'); + }); + + it('does not do anything if remove() is called with an entry not in the list', () => { + expect(commaList.remove('foo,bar', 'baz')).to.equal('foo,bar'); + }); +}); diff --git a/src/data/local-storage/index.js b/src/data/local-storage/index.js new file mode 100644 index 000000000..027feec78 --- /dev/null +++ b/src/data/local-storage/index.js @@ -0,0 +1,190 @@ +/* +This emulates the persistence strategy used by Backbone's local storage adapter +as a Vuex middleware. This uses this basic pattern: + +twine-[datakey]: a comma separated list of IDs +twine-[datakey]-[uuid]: JSON formatted data for that object + +This pattern is emulated, even with structures (like prefs) that don't need +this, for compatibility. +*/ + +const pref = require('./pref'); +const story = require('./story'); +const storyFormat = require('./story-format'); + +let enabled = true; +let previousStories; + +module.exports = store => { + enabled = false; + pref.load(store); + story.load(store); + storyFormat.load(store); + previousStories = store.state.story.stories; + enabled = true; + + store.subscribe((mutation, state) => { + if (!enabled) { + return; + } + + switch (mutation.type) { + case 'CREATE_STORY': + story.update(transaction => { + story.saveStory( + transaction, + state.story.stories.find( + s => s.name === mutation.payload[0].name + ) + ); + }); + break; + + case 'UPDATE_STORY': + story.update(transaction => { + story.saveStory( + transaction, + state.story.stories.find( + s => s.id === mutation.payload[0] + ) + ); + }); + break; + + case 'DUPLICATE_STORY': + story.update(transaction => { + const dupe = state.story.stories.find( + s => s.name === mutation.payload[1] + ); + + story.saveStory(transaction, dupe); + + dupe.passages.forEach( + passage => story.savePassage(transaction, passage) + ); + }); + break; + + case 'IMPORT_STORY': + story.update(transaction => { + const imported = state.story.stories.find( + s => s.name === mutation.payload[0].name + ); + + story.saveStory(transaction, imported); + + imported.passages.forEach( + passage => story.savePassage(transaction, passage) + ); + }); + break; + + case 'DELETE_STORY': { + /* + We have to use our last copy of the stories array, because + by now the deleted story is gone from the state. + */ + + const toDelete = previousStories.find( + s => s.id === mutation.payload[0] + ); + + story.update(transaction => { + /* + It's our responsibility to delete child passages first. + */ + + toDelete.passages.forEach( + passage => story.deletePassage(transaction, passage) + ); + + story.deleteStory(transaction, toDelete); + }); + break; + } + + /* + When saving a passage, we have to make sure to save its parent + story too, since its lastUpdate property has changed. + */ + + case 'CREATE_PASSAGE_IN_STORY': { + const parentStory = state.story.stories.find( + s => s.id === mutation.payload[0] + ); + const passage = parentStory.passages.find( + p => p.name === mutation.payload[1].name + ); + + story.update(transaction => { + story.saveStory(transaction, parentStory); + story.savePassage(transaction, passage); + }); + break; + } + + case 'UPDATE_PASSAGE_IN_STORY': { + /* Is this a significant update? */ + + if (Object.keys(mutation.payload[2]).some(key => key !== 'selected')) { + const parentStory = state.story.stories.find( + s => s.id === mutation.payload[0] + ); + const passage = parentStory.passages.find( + p => p.id === mutation.payload[1] + ); + + story.update(transaction => { + story.saveStory(transaction, parentStory); + story.savePassage(transaction, passage); + }); + } + break; + } + + case 'DELETE_PASSAGE_IN_STORY': { + const parentStory = state.story.stories.find( + s => s.id === mutation.payload[0] + ); + + /* + We can't dig up the passage in question right now, because + previousStories is only a shallow copy, and it's gone there at + this point in time. + */ + + story.update(transaction => { + story.saveStory(transaction, parentStory); + story.deletePassageById(transaction, mutation.payload[1]); + }); + break; + } + + case 'UPDATE_PREF': + pref.save(store); + break; + + case 'CREATE_FORMAT': + case 'UPDATE_FORMAT': + case 'DELETE_FORMAT': + storyFormat.save(store); + break; + + case 'LOAD_FORMAT': + /* This change doesn't need to be persisted. */ + break; + + default: + throw new Error( + `Don't know how to handle mutation ${mutation.type}` + ); + } + + /* + We save a copy of the stories structure in aid of deleting, as above. + */ + + previousStories = state.story.stories; + }); +}; diff --git a/src/data/local-storage/index.spec.js b/src/data/local-storage/index.spec.js new file mode 100644 index 000000000..9fb243476 --- /dev/null +++ b/src/data/local-storage/index.spec.js @@ -0,0 +1,222 @@ +describe('local-storage persistence', () => { + const { expect } = require('chai'); + const { spy, stub } = require('sinon'); + const localStorage = require('./index'); + let pref = require('./pref'); + let mutationObserver; + let story = require('./story'); + let storyFormat = require('./story-format'); + let store; + + /* Mimic the Vuex subscribe() flow. */ + + function dispatchMutation(mutation) { + mutationObserver(mutation, store.state); + } + + beforeEach(() => { + store = { + dispatch: spy(), + subscribe: function(callback) { + mutationObserver = callback; + }, + state: { + pref: {}, + story: { stories: [] }, + storyFormat: { formats: [] } + } + }; + + stub(pref, 'load'); + stub(pref, 'save'); + stub(story, 'load'); + stub(story, 'deletePassage'); + stub(story, 'deletePassageById'); + stub(story, 'deleteStory'); + stub(story, 'savePassage'); + stub(story, 'saveStory'); + stub(storyFormat, 'load'); + stub(storyFormat, 'save'); + }); + + afterEach(() => { + pref.load.restore(); + pref.save.restore(); + story.load.restore(); + story.deletePassage.restore(); + story.deletePassageById.restore(); + story.deleteStory.restore(); + story.savePassage.restore(); + story.saveStory.restore(); + storyFormat.load.restore(); + storyFormat.save.restore(); + }); + + it('loads the pref, story, and story-format modules when starting', () => { + localStorage(store); + expect(pref.load.calledOnce).to.be.true; + expect(story.load.calledOnce).to.be.true; + expect(storyFormat.load.calledOnce).to.be.true; + }); + + it('calls story.saveStory() when a CREATE_STORY mutation occurs', () => { + dispatchMutation({ + type: 'CREATE_STORY', + payload: [{ name: 'A Story' }] + }); + expect(story.saveStory.calledOnce).to.be.true; + }); + + it('calls story.saveStory() when an UPDATE_STORY mutation occurs', () => { + dispatchMutation({ + type: 'UPDATE_STORY', + payload: ['not-an-id'] + }); + expect(story.saveStory.calledOnce).to.be.true; + }); + + it('calls story.saveStory() when a DUPLICATE_STORY mutation occurs', () => { + store.state.story.stories.push({ + id: 'not-an-id', + name: 'Original Story', + passages: [] + }); + + store.state.story.stories.push({ + id: 'not-an-id-either', + name: 'Copied Story', + passages: [] + }); + + dispatchMutation({ + type: 'DUPLICATE_STORY', + payload: ['not-an-id', 'Copied Story'] + }); + expect(story.saveStory.calledOnce).to.be.true; + }); + + it('calls story.saveStory() when an IMPORT_STORY mutation occurs', () => { + store.state.story.stories.push({ + id: 'not-an-id', + name: 'Imported Story', + passages: [] + }); + + dispatchMutation({ + type: 'IMPORT_STORY', + payload: [{ name: 'Imported Story' }] + }); + expect(story.saveStory.calledOnce).to.be.true; + }); + + it('calls story.deleteStory() when an DELETE_STORY mutation occurs', () => { + store.state.story.stories.push({ + id: 'not-an-id', + name: 'Imported Story', + passages: [] + }); + + dispatchMutation({ + type: 'DELETE_STORY', + payload: ['not-an-id'] + }); + expect(story.deleteStory.calledOnce).to.be.true; + }); + + it('calls story.saveStory() and story.savePassage() when a CREATE_PASSAGE_IN_STORY mutation occurs', () => { + store.state.story.stories.push({ + id: 'not-an-id', + name: 'Imported Story', + passages: [ + { + id: 'not-an-id-either', + name: 'A Passage' + } + ] + }); + + dispatchMutation({ + type: 'CREATE_PASSAGE_IN_STORY', + payload: ['not-an-id', { name: 'A Passage' }] + }); + + expect(story.saveStory.calledOnce).to.be.true; + expect(story.savePassage.calledOnce).to.be.true; + }); + + it('calls story.saveStory() and story.savePassage() when an UPDATE_PASSAGE_IN_STORY mutation occurs', () => { + store.state.story.stories.push({ + id: 'not-an-id', + name: 'Imported Story', + passages: [ + { + id: 'not-an-id-either', + name: 'A Passage' + } + ] + }); + + dispatchMutation({ + type: 'CREATE_PASSAGE_IN_STORY', + payload: ['not-an-id', { name: 'A Passage' }] + }); + + expect(story.saveStory.calledOnce).to.be.true; + expect(story.savePassage.calledOnce).to.be.true; + }); + + it('calls story.saveStory() and story.deletePassage()/deletePassageById() when an DELETE_PASSAGE_IN_STORY mutation occurs', () => { + store.state.story.stories.push({ + id: 'not-an-id', + name: 'Imported Story', + passages: [ + { + id: 'not-an-id-either', + name: 'A Passage' + } + ] + }); + + dispatchMutation({ + type: 'DELETE_PASSAGE_IN_STORY', + payload: ['not-an-id', { name: 'A Passage' }] + }); + + expect(story.saveStory.calledOnce).to.be.true; + + const deleteByObject = story.deletePassage.calledOnce; + const deleteById = story.deletePassageById.calledOnce; + + expect((deleteByObject && !deleteById) || + (!deleteByObject && deleteById)).to.be.true; + }); + + it('calls pref.save() when an UPDATE_PREF mutation occurs', () => { + dispatchMutation({ type: 'UPDATE_PREF' }); + expect(pref.save.calledOnce).to.be.true; + }); + + it('calls storyFormat.save() when a CREATE_FORMAT mutation occurs', () => { + dispatchMutation({ type: 'CREATE_FORMAT' }); + expect(storyFormat.save.calledOnce).to.be.true; + }); + + it('calls storyFormat.save() when an UPDATE_FORMAT mutation occurs', () => { + dispatchMutation({ type: 'UPDATE_FORMAT' }); + expect(storyFormat.save.calledOnce).to.be.true; + }); + + it('calls storyFormat.save() when a DELETE_FORMAT mutation occurs', () => { + dispatchMutation({ type: 'DELETE_FORMAT' }); + expect(storyFormat.save.calledOnce).to.be.true; + }); + + it('ignores LOAD_FORMAT mutations', () => { + dispatchMutation({ type: 'LOAD_FORMAT' }); + expect(storyFormat.save.calledOnce).to.be.false; + }); + + it('throws an error when given a mutation it does not know how to handle', () => { + expect(() => { dispatchMutation({ type: '???' }); }).to.throw; + }); +}); diff --git a/src/data/local-storage/pref.js b/src/data/local-storage/pref.js new file mode 100644 index 000000000..f087d4c39 --- /dev/null +++ b/src/data/local-storage/pref.js @@ -0,0 +1,63 @@ +// Functions for moving prefs in and out of local storage. + +const uuid = require('tiny-uuid'); +const { setPref } = require('../actions/pref'); + +module.exports = { + save(store) { + // Delete existing prefs in local storage, since we aren't bothering to + // preserve ids. + + const previouslySerialized = window.localStorage.getItem('twine-prefs'); + + if (previouslySerialized) { + previouslySerialized.split(',').forEach(id => { + window.localStorage.removeItem('twine-prefs-' + id); + }); + } + + // Save new ones. + + let ids = []; + + Object.keys(store.state.pref).forEach(name => { + const id = uuid(); + + ids.push(id); + window.localStorage.setItem( + 'twine-prefs-' + id, + JSON.stringify({ + id, + name, + value: store.state.pref[name] + }) + ); + }); + + window.localStorage.setItem('twine-prefs', ids.join(',')); + }, + + load(store) { + const serialized = window.localStorage.getItem('twine-prefs'); + + if (!serialized) { + return; + } + + serialized.split(',').forEach(id => { + try { + const item = JSON.parse( + window.localStorage.getItem('twine-prefs-' + id) + ); + + setPref(store, item.name, item.value); + } + catch (e) { + console.warn( + `Preference ${id} had corrupt serialized value, skipping`, + window.localStorage.getItem('twine-prefs-' + id) + ); + } + }); + } +}; diff --git a/src/data/local-storage/pref.spec.js b/src/data/local-storage/pref.spec.js new file mode 100644 index 000000000..146580fb8 --- /dev/null +++ b/src/data/local-storage/pref.spec.js @@ -0,0 +1,71 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +const pref = require('./pref'); + +describe('pref local storage persistence', () => { + beforeEach(() => { + window.localStorage.clear(); + }); + + it('persists preferences', () => { + const store = { + state: { + pref: { + foo: true, + bar: 1, + baz: 'a string' + } + } + }; + + pref.save(store); + + const ids = window.localStorage.getItem('twine-prefs').split(','); + + expect(ids.length).to.equal(3); + + let saved = {}; + + ids.forEach(id => { + let savedPref = window.localStorage.getItem(`twine-prefs-${id}`); + + expect(savedPref).to.be.a('string'); + const restored = JSON.parse(savedPref); + + saved[restored.name] = restored.value; + }); + + expect(saved.foo).to.equal(true); + expect(saved.bar).to.equal(1); + expect(saved.baz).to.equal('a string'); + }); + + it('restores preferences', () => { + window.localStorage.setItem('twine-prefs', 'a-fake-id,another-fake-id'); + window.localStorage.setItem( + 'twine-prefs-a-fake-id', + JSON.stringify({ + name: 'foo', + id: 'a-fake-id', + value: true + }) + ); + window.localStorage.setItem( + 'twine-prefs-another-fake-id', + JSON.stringify({ + name: 'bar', + id: 'another-fake-id', + value: 1 + }) + ); + + let store = { + dispatch: spy() + }; + + pref.load(store); + expect(store.dispatch.calledTwice).to.be.true; + expect(store.dispatch.calledWith('UPDATE_PREF', 'foo', true)).to.be.true; + expect(store.dispatch.calledWith('UPDATE_PREF', 'bar', 1)).to.be.true; + }); +}); \ No newline at end of file diff --git a/src/data/local-storage/story-format.js b/src/data/local-storage/story-format.js new file mode 100644 index 000000000..b0d63e9b7 --- /dev/null +++ b/src/data/local-storage/story-format.js @@ -0,0 +1,69 @@ +/* Functions for moving story formats in and out of local storage. */ + +const uuid = require('tiny-uuid'); +const { createFormat } = require('../actions/story-format'); + +module.exports = { + save(store) { + /* + Delete existing formats in local storage, since we aren't bothering to + preserve ids. + */ + + const previouslySerialized = + window.localStorage.getItem('twine-storyformats'); + + if (previouslySerialized) { + previouslySerialized.split(',').forEach(id => { + window.localStorage.removeItem('twine-storyformats-' + id); + }); + } + + /* Save new ones. */ + + let ids = []; + + store.state.storyFormat.formats.forEach(format => { + const id = uuid(); + + /* + We have to remove the `properties` property if it exists, as that + is dynamically added when loading. + */ + + ids.push(id); + window.localStorage.setItem( + 'twine-storyformats-' + id, + JSON.stringify( + Object.assign({}, format, { properties: undefined }) + ) + ); + }); + + window.localStorage.setItem('twine-storyformats', ids.join(',')); + }, + + load(store) { + const serialized = window.localStorage.getItem('twine-storyformats'); + + if (!serialized) { + return; + } + + serialized.split(',').forEach(id => { + try { + const item = JSON.parse( + window.localStorage.getItem('twine-storyformats-' + id) + ); + + createFormat(store, item); + } + catch (e) { + console.warn( + `Story format ${id} had corrupt serialized value, skipping`, + window.localStorage.getItem('twine-storyformats-' + id) + ); + } + }); + } +}; diff --git a/src/data/local-storage/story-format.spec.js b/src/data/local-storage/story-format.spec.js new file mode 100644 index 000000000..d40c8a224 --- /dev/null +++ b/src/data/local-storage/story-format.spec.js @@ -0,0 +1,83 @@ +const { expect } = require('chai'); +const { match, spy } = require('sinon'); +const storyFormat = require('./story-format'); + +describe('story format local storage persistence', () => { + beforeEach(() => { + window.localStorage.clear(); + }); + + it('persists formats', () => { + const store = { + state: { + storyFormat: { + formats: [ + { + name: 'Format One', + url: 'https://twinery.org' + }, + { + name: 'Format Two', + url: 'https://twinery.org/wiki' + } + ] + } + } + }; + + storyFormat.save(store); + + const ids = window.localStorage.getItem('twine-storyformats').split(','); + + expect(ids.length).to.equal(2); + + let saved = {}; + + ids.forEach(id => { + let savedFormat = window.localStorage.getItem(`twine-storyformats-${id}`); + + expect(savedFormat).to.be.a('string'); + const restored = JSON.parse(savedFormat); + + saved[restored.name] = restored; + }); + + expect(saved['Format One']).to.exist; + expect(saved['Format One'].url).to.equal('https://twinery.org'); + expect(saved['Format Two']).to.exist; + expect(saved['Format Two'].url).to.equal('https://twinery.org/wiki'); + }); + + it('restores story formats', () => { + window.localStorage.setItem('twine-storyformats', 'a-fake-id,another-fake-id'); + window.localStorage.setItem( + 'twine-storyformats-a-fake-id', + JSON.stringify({ + name: 'Format 1', + url: 'gopher://gopher.floodgap.com:70/1/' + }) + ); + window.localStorage.setItem( + 'twine-storyformats-another-fake-id', + JSON.stringify({ + name: 'Format 2', + url: 'gopher://gopher.floodgap.com:70/0/gopher/wbgopher' + }) + ); + + let store = { + dispatch: spy() + }; + + storyFormat.load(store); + expect(store.dispatch.calledTwice).to.be.true; + expect(store.dispatch.calledWith( + 'CREATE_FORMAT', + match({ name: 'Format 1', url: 'gopher://gopher.floodgap.com:70/1/' })) + ).to.be.true; + expect(store.dispatch.calledWith( + 'CREATE_FORMAT', + match({ name: 'Format 2', url: 'gopher://gopher.floodgap.com:70/0/gopher/wbgopher' })) + ).to.be.true; + }); +}); \ No newline at end of file diff --git a/src/data/local-storage/story.js b/src/data/local-storage/story.js new file mode 100644 index 000000000..86706b66c --- /dev/null +++ b/src/data/local-storage/story.js @@ -0,0 +1,216 @@ +/* +Functions for moving stories in and out of local storage. This module in +particular needs to remain well-optimized, as it has a direct effect on load +time. As a result, saving requires that you start and end a transaction +manually. This minimizes the number of writes to local storage. +*/ + +let { createStory } = require('../actions/story'); +let { passageDefaults, storyDefaults } = require('../store/story'); +let commaList = require('./comma-list'); + +const story = module.exports = { + /* + A wrapper for a series of save/delete operations. This takes a function as + argument that will receive an object keeping track of the transaction. This + function should then make save and delete calls as necessary, passing the + provided transaction object as their first argument. + */ + + update(func) { + let transaction = { + storyIds: window.localStorage.getItem('twine-stories') || '', + passageIds: window.localStorage.getItem('twine-passages') || '' + }; + + func(transaction); + + window.localStorage.setItem('twine-stories', transaction.storyIds); + window.localStorage.setItem('twine-passages', transaction.passageIds); + }, + + /* + Saves a story to local storage. This does *not* affect any child passages. + */ + + saveStory(transaction, story) { + if (!story.id) { + throw new Error('Story has no id'); + } + + transaction.storyIds = commaList.addUnique( + transaction.storyIds, + story.id + ); + + /* + We have to remove the passages property before serializing the story, + as those are serialized under separate keys. + */ + + window.localStorage.setItem( + 'twine-stories-' + story.id, + JSON.stringify( + Object.assign({}, story, { passages: undefined }) + ) + ); + }, + + /* + Deletes a story from local storage. This does *not* affect any child + passages. You *must* delete child passages manually. + */ + + deleteStory(transaction, story) { + if (!story.id) { + throw new Error('Story has no id'); + } + + transaction.storyIds = commaList.remove(transaction.storyIds, story.id); + window.localStorage.removeItem('twine-stories-' + story.id); + }, + + /* Saves a passage to local storage. */ + + savePassage(transaction, passage) { + if (!passage.id) { + throw new Error('Passage has no id'); + } + + transaction.passageIds = commaList.addUnique( + transaction.passageIds, + passage.id + ); + + window.localStorage.setItem( + 'twine-passages-' + passage.id, + JSON.stringify(passage) + ); + }, + + /* Deletes a passage from local storage. */ + + deletePassage(transaction, passage) { + if (!passage.id) { + throw new Error('Passage has no id'); + } + + story.deletePassageById(transaction, passage.id); + }, + + /* Deletes a passage from local storage. */ + + deletePassageById(transaction, id) { + transaction.passageIds = commaList.remove( + transaction.passageIds, + id + ); + window.localStorage.removeItem('twine-passages-' + id); + }, + + load(store) { + let stories = {}; + const serializedStories = window.localStorage.getItem('twine-stories'); + + if (!serializedStories) { + return; + } + + /* + First, deserialize stories. We index them by id so that we can quickly + add passages to them as they are deserialized. + */ + + serializedStories.split(',').forEach(id => { + let newStory = JSON.parse( + window.localStorage.getItem('twine-stories-' + id) + ); + + if (newStory) { + /* Set defaults if any are missing. */ + + Object.keys(storyDefaults).forEach(key => { + if (newStory[key] === undefined) { + newStory[key] = storyDefaults[key]; + } + }); + + /* Coerce the lastUpdate property to a date. */ + + if (newStory.lastUpdate) { + newStory.lastUpdate = new Date( + Date.parse(newStory.lastUpdate) + ); + } + else { + newStory.lastUpdate = new Date(); + } + + /* + Force the passages property to be an empty array -- we'll + populate it when we load passages below. + */ + + newStory.passages = []; + + stories[newStory.id] = newStory; + } + else { + console.warn( + `Could not parse story ${id}, skipping`, + window.localStorage.getItem('twine-stories-' + id) + ); + } + }); + + /* Then create passages, adding them to their parent story. */ + + const serializedPassages = window.localStorage.getItem('twine-passages'); + + if (serializedPassages) { + serializedPassages.split(',').forEach(id => { + let newPassage = JSON.parse( + window.localStorage.getItem('twine-passages-' + id) + ); + + if (!newPassage || !newPassage.story) { + console.warn( + `Passage ${id} did not have parent story id, skipping`, + newPassage + ); + return; + } + + if (!stories[newPassage.story]) { + console.warn( + `Passage ${id} is orphaned (looking for ` + + `${newPassage.story}), skipping` + ); + return; + } + + /* Set defaults if any are missing. */ + + Object.keys(passageDefaults).forEach(key => { + if (newPassage[key] === undefined) { + newPassage[key] = passageDefaults[key]; + } + }); + + /* Remove empty tags. */ + + newPassage.tags = newPassage.tags.filter( + tag => tag.length && tag.length > 0 + ); + + stories[newPassage.story].passages.push(newPassage); + }); + } + + /* Finally, we dispatch actions to add the stories to the store. */ + + Object.keys(stories).forEach(id => { + createStory(store, stories[id]); + }); + } +}; diff --git a/src/data/local-storage/story.spec.js b/src/data/local-storage/story.spec.js new file mode 100644 index 000000000..196477096 --- /dev/null +++ b/src/data/local-storage/story.spec.js @@ -0,0 +1,154 @@ +const { expect } = require('chai'); +const { match, spy } = require('sinon'); +const story = require('./story'); + +describe('story local storage persistence', () => { + const testStory = { + id: 'not-a-real-id', + name: 'Test Story', + startPassage: 100, + zoom: 1.5, + snapToGrid: true, + stylesheet: '* { color: red }', + script: 'console.log("hi")', + storyFormat: 'Harlowe' + }; + + const testPassage = { + id: 'also-not-a-real-id', + story: 'not-a-real-id', + top: 20, + left: 30, + width: 120, + height: 90, + tags: ['foo', 'bar'], + name: 'Test Passage', + text: 'Hello world.' + }; + + beforeEach(() => { + window.localStorage.clear(); + }); + + it('saves a story with saveStory()', () => { + story.update(transaction => { + story.saveStory(transaction, testStory); + }); + + const saved = window.localStorage.getItem(`twine-stories-${testStory.id}`); + + expect(saved).to.be.a('string'); + const savedStory = JSON.parse(saved); + + Object.keys(testStory).forEach(key => { + expect(savedStory[key]).to.equal(testStory[key]); + }); + }); + + it('deletes a story *only* with deleteStory()', () => { + story.update(transaction => { + story.saveStory(transaction, testStory); + }); + + expect(window.localStorage.getItem('twine-stories')).to.equal(testStory.id); + + story.update(transaction => { + story.deleteStory(transaction, testStory); + }); + + expect(window.localStorage.getItem('twine-stories')).to.equal(''); + }); + + it('saves a passage with savePassage()', () => { + story.update(transaction => { + story.savePassage(transaction, testPassage); + }); + + const saved = window.localStorage.getItem(`twine-passages-${testPassage.id}`); + + expect(saved).to.be.a('string'); + + const savedPassage = JSON.parse(saved); + + Object.keys(testPassage).forEach(key => { + if (key === 'tags') { + testPassage.tags.forEach(i => { + expect(savedPassage.tags[i]).to.equal(testPassage.tags[i]); + }); + } + else { + expect(savedPassage[key]).to.equal(testPassage[key]); + } + }); + }); + + it('deletes a passage with deletePassage()', () => { + story.update(transaction => { + story.savePassage(transaction, testPassage); + }); + + expect(window.localStorage.getItem('twine-passages')).to.equal(testPassage.id); + + story.update(transaction => { + story.deletePassage(transaction, testPassage); + }); + + expect(window.localStorage.getItem('twine-passages')).to.equal(''); + }); + + it('deletes a passage with deletePassageById()', () => { + story.update(transaction => { + story.savePassage(transaction, testPassage); + }); + + expect(window.localStorage.getItem('twine-passages')).to.equal(testPassage.id); + + story.update(transaction => { + story.deletePassageById(transaction, testPassage.id); + }); + + expect(window.localStorage.getItem('twine-passages')).to.equal(''); + }); + + it('restores stories with load()', () => { + window.localStorage.setItem('twine-stories', testStory.id); + window.localStorage.setItem( + `twine-stories-${testStory.id}`, + JSON.stringify(testStory) + ); + window.localStorage.setItem('twine-passages', testPassage.id); + window.localStorage.setItem( + `twine-passages-${testPassage.id}`, + JSON.stringify(testPassage) + ); + + let store = { dispatch: spy() }; + + story.load(store); + expect(store.dispatch.calledOnce).to.be.true; + + const firstArgs = store.dispatch.getCall(0).args; + + expect(firstArgs[0]).to.equal('CREATE_STORY'); + + Object.keys(testStory).forEach(key => { + if (key === 'passages') { + expect(firstArgs[1].passages.length).to.equal(1); + + Object.keys(testPassage).forEach(key => { + if (key === 'tags') { + testPassage.tags.forEach(i => { + expect(firstArgs[1].tags[i]).to.equal(testPassage.tags[i]); + }); + } + else { + expect(firstArgs[1].passages[0][key]).to.equal(testPassage[key]); + } + }); + } + else { + expect(firstArgs[1][key]).to.equal(testStory[key]); + } + }); + }); +}); \ No newline at end of file diff --git a/src/data/publish.js b/src/data/publish.js new file mode 100644 index 000000000..bf6ee892d --- /dev/null +++ b/src/data/publish.js @@ -0,0 +1,136 @@ +/* +Publishes stories to HTML. +*/ + +const escape = require('lodash.escape'); +const locale = require('../locale'); + +const publish = module.exports = { + /* + Publishes a story with a story format. The format *must* be loaded before + this function is called. + */ + + publishStoryWithFormat(appInfo, story, format, formatOptions, startId) { + if (!format.properties || !format.properties.source) { + throw new Error('Story format has no source property'); + } + + let output = format.properties.source; + + /* + We use function replacements to protect the data from accidental + interactions with the special string replacement patterns. + + First, built-in placeholders. + */ + + output = output.replace(/{{STORY_NAME}}/g, () => escape(story.name)); + output = output.replace(/{{STORY_DATA}}/g, () => { + return publish.publishStory(appInfo, story, formatOptions, startId); + }); + + /* Then, format-defined placeholders. */ + + if (format.properties.placeholders) { + format.properties.placeholders.forEach(p => { + const value = story[p.name]; + + if (value !== undefined) { + output = output.replace(p.name, () => value); + } + }); + } + + return output; + }, + + /* Publishes an archive of stories. */ + + publishArchive(stories, appInfo) { + return stories.reduce( + (output, story) => { + /* Force publishing even if there is no start point set. */ + + return output + publish.publishStory( + appInfo, story, null, null, true + ) + '\n\n'; + }, + + '' + ); + }, + + /* + Does a "naked" publish of a story -- creating an HTML representation of it, + but without any story format binding. + */ + + publishStory(appInfo, story, formatOptions, startId, startOptional) { + startId = startId || story.startPassage; + + /* Verify that the start passage exists. */ + + if (!startOptional) { + if (!startId) { + throw new Error(locale.say( + 'There is no starting point set for this story.' + )); + } + + if (!story.passages.find(p => p.id === startId)) { + throw new Error(locale.say( + 'The passage set as starting point for this story does ' + + 'not exist.' + )); + } + }; + + /* The id of the start passage as it is published (*not* a UUID). */ + + let startLocalId; + let passageData = ''; + + story.passages.forEach((p, index) => { + passageData += publish.publishPassage(p, index + 1); + + if (p.id === startId) { + startLocalId = index + 1; + } + }); + + const tagData = Object.keys(story.tagColors).map(tag => + `` + ); + + return ``; + }, + + /* + Publishes a passage to an HTML fragment. This takes a id argument because + passages are numbered sequentially in published stories, not with a UUID. + */ + + publishPassage(passage, localId) { + return `` + + `${escape(passage.text)}`; + } +}; diff --git a/src/data/publish.spec.js b/src/data/publish.spec.js new file mode 100644 index 000000000..790e85df3 --- /dev/null +++ b/src/data/publish.spec.js @@ -0,0 +1,145 @@ +const $ = require('cheerio'); +const escape = require('lodash.escape'); +const { expect } = require('chai'); +const publish = require('./publish'); + +describe('publish module', () => { + let passage1, passage2, story, appInfo; + + beforeEach(() => { + passage1 = { + id: 'not-an-id', + name: 'A Name Which Needs ', + tags: ['tags', 'that are '], + top: 10, + left: 20, + width: 150, + height: 150, + text: 'Body text which is ' + }; + + passage2 = { + id: 'not-an-id-either', + name: 'Another Passage', + tags: [], + top: 30, + left: 45, + width: 100, + height: 100, + text: 'More body text.\n\nAnother paragraph.' + }; + + story = { + name: 'A Story Name Which Needs ', + storyFormat: 'Harlowe', + ifid: 'not-an-ifid', + stylesheet: '* { color: red }', + script: 'alert("hi");', + passages: [passage1, passage2], + startPassage: 'not-an-id', + tagColors: { 'test-tag': 'red' }, + zoom: 1.5 + }; + + appInfo = { + name: 'Twine Unit Tests', + version: '29.0.1', + buildNumber: '20500101120100' + }; + }); + + const checkStoryElAgainstData = ($el, story, appInfo) => { + expect($el.attr('name')).to.equal(story.name); + expect($el.attr('creator')).to.equal(appInfo.name); + expect($el.attr('creator-version')).to.equal(appInfo.version); + expect($el.attr('ifid')).to.equal(story.ifid); + expect($el.attr('format')).to.equal(story.storyFormat); + expect($el.attr('zoom')).to.equal(story.zoom.toString()); + + const $style = $el.find('style[type="text/twine-css"]'); + + expect($style.length).to.equal(1); + expect($style.html()).to.equal(story.stylesheet); + + const $script = $el.find('script[type="text/twine-javascript"]'); + + expect($script.length).to.equal(1); + expect($script.html()).to.equal(story.script); + + const $tags = $el.find('tw-tag'); + + expect($tags.length).to.equal(1); + expect($($tags[0]).attr('name')).to.equal('test-tag'); + expect($($tags[0]).attr('color')).to.equal('red'); + }; + + it('publishes a passage to HTML with publishPassage()', () => { + ([passage1, passage2]).forEach(passage => { + let result = publish.publishPassage(passage, 100); + + expect(result).to.be.a('string'); + + let $result = $(result); + + expect($result.attr('pid')).to.equal('100'); + expect($result.attr('name')).to.equal(passage.name); + expect($result.attr('tags')).to.equal(passage.tags.join(' ')); + expect($result.attr('position')).to.equal(`${passage.left},${passage.top}`); + expect($result.attr('size')).to.equal(`${passage.width},${passage.height}`); + expect($result.text()).to.equal(passage.text); + }); + }); + + it('publishes a story with publishStory()', () => { + const result = publish.publishStory(appInfo, story); + + expect(result).to.be.a('string'); + console.info(result); + checkStoryElAgainstData($(result), story, appInfo); + }); + + it('binds a story to a format with publishStoryWithFormat()', () => { + let result = publish.publishStoryWithFormat( + appInfo, + story, + { + properties: { + source: '{{STORY_NAME}}' + } + } + ); + + expect(result).to.equal(escape(story.name)); + + result = publish.publishStoryWithFormat( + appInfo, + story, + { + properties: { + source: '{{STORY_DATA}}' + } + } + ); + + expect(result).to.be.a('string'); + + const storyEls = $(`
${result}
`).find('tw-storydata'); + + expect(storyEls.length).to.equal(1); + checkStoryElAgainstData($(storyEls[0]), story, appInfo); + }); + + it('publishes an archive of all stories with publishArchive()', () => { + const result = publish.publishArchive([story, story], appInfo); + + expect(result).to.be.a('string'); + + const storyEls = $(`
${result}
`).find('tw-storydata'); + + expect(storyEls.length).to.equal(2); + + storyEls.toArray().forEach(el => { + checkStoryElAgainstData($(el), story, appInfo); + }); + }); +}); diff --git a/src/data/store/app-info.js b/src/data/store/app-info.js new file mode 100644 index 000000000..36d129621 --- /dev/null +++ b/src/data/store/app-info.js @@ -0,0 +1,14 @@ +/* +Information about the app, e.g. version and name. This is read-only and is based +on metadata embedded in the HTML during the compilation process. +*/ + +const htmlEl = document.querySelector('html'); + +module.exports = { + state: { + name: htmlEl.getAttribute('data-app-name'), + version: htmlEl.getAttribute('data-version'), + buildNumber: parseInt(htmlEl.getAttribute('data-build-number')) + } +}; diff --git a/src/data/store/app-info.spec.js b/src/data/store/app-info.spec.js new file mode 100644 index 000000000..96ce298f5 --- /dev/null +++ b/src/data/store/app-info.spec.js @@ -0,0 +1,36 @@ +const { expect } = require('chai'); + +describe('app-info data module', () => { + let appInfo; + + beforeEach(() => { + let htmlEl = document.querySelector('html'); + + htmlEl.setAttribute('data-app-name', 'Testing Twine'); + htmlEl.setAttribute('data-version', '-1.5'); + htmlEl.setAttribute('data-build-number', '12345'); + + appInfo = require('./app-info'); + }); + + afterEach(() => { + let htmlEl = document.querySelector('html'); + + htmlEl.removeAttribute('data-app-name'); + htmlEl.removeAttribute('data-app-version'); + htmlEl.removeAttribute('data-app-build-number'); + }); + + it('sets a name property based on the element', () => { + expect(appInfo.state.name).to.equal('Testing Twine'); + }); + + it('sets an version property based on the element', () => { + expect(appInfo.state.version).to.equal('-1.5'); + }); + + it('sets a buildNumber property based on the element', () => { + expect(appInfo.state.buildNumber).to.equal(12345); + }); +}); + diff --git a/src/data/store/index.js b/src/data/store/index.js new file mode 100644 index 000000000..029fb9bfa --- /dev/null +++ b/src/data/store/index.js @@ -0,0 +1,19 @@ +// The main module managing the application's Vuex state and mutations. + +let Vue = require('vue'); +let Vuex = require('vuex'); + +Vue.use(Vuex); + +module.exports = new Vuex.Store({ + modules: { + appInfo: require('./app-info'), + pref: require('./pref'), + story: require('./story'), + storyFormat: require('./story-format') + }, + + plugins: [ + require('../local-storage') + ] +}); diff --git a/src/data/store/pref.js b/src/data/store/pref.js new file mode 100644 index 000000000..932da2ee6 --- /dev/null +++ b/src/data/store/pref.js @@ -0,0 +1,28 @@ +// A Vuex module for working with application preferences. This is a bit +// over-engieneered, as it is designed to be compatible with Twine 2.0 data +// structures, where each preference had to have its own ID. + +module.exports = { + state: { + appTheme: 'light', + defaultFormat: 'Harlowe', + donateShown: false, + firstRunTime: new Date().getTime(), + lastUpdateSeen: '', + lastUpdateCheckTime: new Date().getTime(), + locale: + window.navigator.userLanguage || + window.navigator.language || + window.navigator.browserLanguage || + window.navigator.systemLanguage || + 'en-us', + proofingFormat: 'Paperthin', + welcomeSeen: false, + }, + + mutations: { + UPDATE_PREF(state, name, value) { + state[name] = value; + } + } +}; diff --git a/src/data/store/pref.spec.js b/src/data/store/pref.spec.js new file mode 100644 index 000000000..30c75893e --- /dev/null +++ b/src/data/store/pref.spec.js @@ -0,0 +1,23 @@ +const { expect } = require('chai'); +const pref = require('./pref'); + +describe('pref data module', () => { + it('provides default settings', () => { + expect(pref.state.appTheme).to.equal('light'); + expect(pref.state.defaultFormat).to.equal('Harlowe'); + expect(pref.state.donateShown).to.be.false; + expect(pref.state.firstRunTime).to.be.a('number'); + expect(pref.state.lastUpdateSeen).to.equal(''); + expect(pref.state.lastUpdateCheckTime).to.be.a('number'); + expect(pref.state.locale).to.be.a('string'); + expect(pref.state.proofingFormat).to.equal('Paperthin'); + expect(pref.state.welcomeSeen).to.be.false; + }); + + it('changes settings via a UPDATE_PREF mutation', () => { + let state = {}; + + pref.mutations.UPDATE_PREF(state, 'testing123', true); + expect(state['testing123']).to.be.true; + }); +}); diff --git a/src/data/store/story-format.js b/src/data/store/story-format.js new file mode 100644 index 000000000..cae87c74a --- /dev/null +++ b/src/data/store/story-format.js @@ -0,0 +1,49 @@ +// A Vuex module for working with story formats. + +const uuid = require('tiny-uuid'); +const locale = require('../../locale'); + +const formatDefaults = { + name: locale.say('Untitled Story Format'), + version: '', + url: '', + userAdded: true, + properties: {} +}; + +module.exports = { + state: { + formats: [] + }, + + mutations: { + CREATE_FORMAT(state, props) { + let newFormat = Object.assign({}, formatDefaults, props); + + newFormat.id = uuid(); + newFormat.loaded = false; + state.formats.push(newFormat); + }, + + UPDATE_FORMAT(state, id, props) { + let format = state.formats.find(format => format.id === id); + + Object.assign(format, props); + }, + + DELETE_FORMAT(state, id) { + state.formats = state.formats.filter(format => format.id !== id); + }, + + LOAD_FORMAT(state, id, props) { + let format = state.formats.find(format => format.id === id); + + format.properties = props; + format.loaded = true; + + if (format.properties.setup) { + format.properties.setup.call(format); + } + } + } +}; diff --git a/src/data/store/story-format.spec.js b/src/data/store/story-format.spec.js new file mode 100644 index 000000000..1d5947bb1 --- /dev/null +++ b/src/data/store/story-format.spec.js @@ -0,0 +1,103 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +const storyFormat = require('./story-format'); + +describe('story-format data module', () => { + const props = { name: 'Test Format', version: '1.0.0' }; + let state; + + beforeEach(() => { + state = Object.assign({}, storyFormat.state); + state.formats = []; + }); + + it('tracks an array of formats', () => { + expect(storyFormat.state.formats).to.have.lengthOf(0); + }); + + it('adds a format with the CREATE_FORMAT mutation', () => { + expect(state.formats).to.have.lengthOf(0); + storyFormat.mutations.CREATE_FORMAT(state, props); + expect(state.formats).to.have.lengthOf(1); + expect(state.formats[0].name).to.equal('Test Format'); + expect(state.formats[0].version).to.equal('1.0.0'); + }); + + it('assigns a uuid to formats with the CREATE_FORMAT mutation', () => { + storyFormat.mutations.CREATE_FORMAT(state, props); + expect(state.formats[0].id).to.be.a('string'); + }); + + it('sets a loaded property on formats with the CREATE_FORMAT mutation', () => { + storyFormat.mutations.CREATE_FORMAT(state, props); + expect(state.formats[0].loaded).to.be.false; + }); + + it('adds properties to a format with the LOAD_FORMAT mutation', () => { + storyFormat.mutations.CREATE_FORMAT(state, props); + storyFormat.mutations.LOAD_FORMAT( + state, + state.formats[0].id, + { source: 'Hello!' } + ); + + expect(state.formats[0].properties.source).to.equal('Hello!'); + }); + + it('sets a format\'s loaded property with the LOAD_FORMAT mutation', () => { + storyFormat.mutations.CREATE_FORMAT(state, props); + storyFormat.mutations.LOAD_FORMAT( + state, + state.formats[0].id, + {} + ); + + expect(state.formats[0].loaded).to.be.true; + }); + + it('sets a format\'s loaded property with the LOAD_FORMAT mutation', () => { + storyFormat.mutations.CREATE_FORMAT(state, props); + storyFormat.mutations.LOAD_FORMAT( + state, + state.formats[0].id, + {} + ); + + expect(state.formats[0].loaded).to.be.true; + }); + + it('calls a format\'s setup method bound to the format during the LOAD_FORMAT mutation', () => { + let setup = spy(); + + storyFormat.mutations.CREATE_FORMAT(state, props); + storyFormat.mutations.LOAD_FORMAT( + state, + state.formats[0].id, + { setup } + ); + + expect(setup.called).to.be.true; + expect(setup.calledOn(state.formats[0])).to.be.true; + }); + + it('updates a format with the UPDATE_FORMAT mutation', () => { + storyFormat.mutations.CREATE_FORMAT(state, props); + storyFormat.mutations.UPDATE_FORMAT( + state, + state.formats[0].id, + { name: 'New Name' } + ); + + expect(state.formats[0].name).to.equal('New Name'); + }); + + it('deletes a format with the DELETE_FORMAT mutation', () => { + storyFormat.mutations.CREATE_FORMAT(state, props); + storyFormat.mutations.DELETE_FORMAT( + state, + state.formats[0].id + ); + + expect(state.formats.length).to.equal(0); + }); +}); diff --git a/src/data/store/story.js b/src/data/store/story.js new file mode 100644 index 000000000..8e557bc25 --- /dev/null +++ b/src/data/store/story.js @@ -0,0 +1,215 @@ +// A Vuex module for working with stories. This is meant to be incorporated by +// index.js. + +const uuid = require('tiny-uuid'); +const locale = require('../../locale'); +const ui = require('../../ui'); + +// A shorthand function for finding a particular story in the state, or a +// particular passage in a story. + +function getStoryById(state, id) { + let story = state.stories.find(story => story.id === id); + + if (!story) { + throw new Error(`No story exists with id ${id}`); + } + + return story; +} + +function getPassageInStory(story, id) { + let passage = story.passages.find(passage => passage.id === id); + + if (!passage) { + throw new Error(`No passage exists in this story with id ${id}`); + } + + return passage; +} + +const storyStore = module.exports = { + state: { + stories: [] + }, + + mutations: { + CREATE_STORY(state, props) { + let story = Object.assign( + { + id: uuid(), + lastUpdate: new Date(), + ifid: uuid().toUpperCase(), + tagColors: {}, + passages: [] + }, + storyStore.storyDefaults, + props + ); + + if (story.passages) { + story.passages.forEach(passage => passage.story = story.id); + } + + state.stories.push(story); + }, + + UPDATE_STORY(state, id, props) { + let story = getStoryById(state, id); + + Object.assign(story, props); + story.lastUpdate = new Date(); + }, + + DUPLICATE_STORY(state, id, newName) { + const original = getStoryById(state, id); + + let story = Object.assign( + {}, + original, + { + id: uuid(), + ifid: uuid().toUpperCase(), + name: newName + } + ); + + /* We need to do a deep copy of the passages. */ + + story.passages = []; + + original.passages.forEach(passage => { + story.passages.push(Object.assign( + {}, + passage, + { + id: uuid(), + story: story.id + } + )); + + if (passage.tags) { + passage.tags = passage.tags.slice(0); + } + }); + + state.stories.push(story); + }, + + IMPORT_STORY(state, toImport) { + // See data/import.js for how the object that we receive is + // structured. + + // Assign IDs to to everything, link passages to their story, + // and set the story's startPassage property appropriately. + + toImport.id = uuid(); + toImport.passages.forEach(p => { + p.id = uuid(); + p.story = toImport.id; + + if (p.pid === toImport.startPassagePid) { + toImport.startPassage = p.id; + } + + delete p.pid; + }); + + delete toImport.startPassagePid; + state.stories.push(toImport); + }, + + DELETE_STORY(state, id) { + state.stories = state.stories.filter(story => story.id !== id); + }, + + CREATE_PASSAGE_IN_STORY(state, storyId, props) { + let story = getStoryById(state, storyId); + let newPassage = Object.assign( + { + id: uuid() + }, + storyStore.passageDefaults, + props + ); + + /* + Force the top and left properties to be at least zero, to keep + passages onscreen. + */ + + if (newPassage.left < 0) { + newPassage.left = 0; + } + + if (newPassage.top < 0) { + newPassage.top = 0; + } + + newPassage.story = story.id; + story.passages.push(newPassage); + + if (story.passages.length === 1) { + story.startPassage = newPassage.id; + } + + story.lastUpdate = new Date(); + }, + + UPDATE_PASSAGE_IN_STORY(state, storyId, passageId, props) { + let story = getStoryById(state, storyId); + + /* + Force the top and left properties to be at least zero, to keep + passages onscreen. + */ + + if (props.left && props.left < 0) { + props.left = 0; + } + + if (props.top && props.top < 0) { + props.top = 0; + } + + Object.assign(getPassageInStory(story, passageId), props); + story.lastUpdate = new Date(); + }, + + DELETE_PASSAGE_IN_STORY(state, storyId, passageId) { + let story = getStoryById(state, storyId); + + story.passages = + story.passages.filter(passage => passage.id !== passageId); + story.lastUpdate = new Date(); + } + }, + + // Defaults for newly-created objects. + + storyDefaults: { + name: locale.say('Untitled Story'), + startPassage: -1, + zoom: 1, + snapToGrid: false, + stylesheet: '', + script: '', + storyFormat: '', + storyFormatVersion: '' + }, + + passageDefaults: { + story: -1, + top: 0, + left: 0, + width: 100, + height: 100, + tags: [], + name: locale.say('Untitled Passage'), + selected: false, + + text: ui.hasPrimaryTouchUI() ? + locale.say('Tap this passage, then the pencil icon to edit it.') + : locale.say('Double-click this passage to edit it.') + } +}; diff --git a/src/data/store/story.spec.js b/src/data/store/story.spec.js new file mode 100644 index 000000000..418842fb3 --- /dev/null +++ b/src/data/store/story.spec.js @@ -0,0 +1,262 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +const story = require('./story'); + +describe('story data module', () => { + const tinyStory = { name: 'Hello Story' }; + const bigStory = { + id: 'not-a-real-id', + name: 'Big Story', + lastUpdate: new Date(Date.parse('January 1, 2001')), + ifid: 'not-a-real-ifid', + passages: [ + { + name: 'A Passage', + top: 10, + left: 10, + text: 'This is a passage.' + } + ] + }; + + let state; + + beforeEach(() => { + state = Object.assign({}, story.state); + state.stories = []; + }); + + it('tracks an array of stories', () => { + expect(story.state.stories).to.have.lengthOf(0); + }); + + it('adds a story with the CREATE_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + expect(state.stories).to.have.lengthOf(1); + expect(state.stories[0].name).to.equal('Hello Story'); + }); + + it('assigns defaults to stories with the CREATE_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + expect(state.stories[0].id).to.be.a('string'); + expect(state.stories[0].lastUpdate).to.be.a('date'); + expect(state.stories[0].ifid).to.be.a('string'); + expect(state.stories[0].passages).to.be.an('array'); + expect(state.stories[0].passages).to.have.lengthOf(0); + }); + + it('does not overwrite properties passed with the CREATE_STORY mutation', () => { + story.mutations.CREATE_STORY(state, bigStory); + expect(state.stories[0].id).to.equal(bigStory.id); + expect(state.stories[0].lastUpdate).to.equal(bigStory.lastUpdate); + expect(state.stories[0].ifid).to.equal(bigStory.ifid); + expect(state.stories[0].passages).to.have.lengthOf(1); + }); + + it('assigns a Treaty of Babel-compliant IFID with the CREATE_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + expect(state.stories[0].ifid).to.match(/^[A-Z0-9-]+$/); + }); + + it('updates a story with the UPDATE_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + story.mutations.UPDATE_STORY(state, state.stories[0].id, { color: 'red' }); + expect(state.stories[0].color).to.equal('red'); + }); + + it('duplicates a story with the DUPLICATE_STORY mutation', () => { + story.mutations.CREATE_STORY(state, bigStory); + story.mutations.DUPLICATE_STORY(state, state.stories[0].id, 'Another Story'); + expect(state.stories).to.have.lengthOf(2); + expect(state.stories[1].name).to.equal('Another Story'); + expect(state.stories[0].passages.length).to.equal(state.stories[1].passages.length); + expect(state.stories[0].id).to.not.equal(state.stories[1].id); + expect(state.stories[0].ifid).to.not.equal(state.stories[1].ifid); + expect(state.stories[0].passages[0].id).to.not.equal(state.stories[1].passages[0].id); + expect(state.stories[0].passages[0].story).to.equal(state.stories[0].id); + expect(state.stories[1].passages[0].story).to.equal(state.stories[1].id); + }); + + it('throws an error if asked to DUPLICATE_STORY a nonexistent id', () => { + story.mutations.CREATE_STORY(state, bigStory); + expect(() => { + story.mutations.DUPLICATE_STORY(state, 'nonexistent', 'Another Story') + }).to.throw; + expect(state.stories).to.have.lengthOf(1); + }); + + it('deletes a story with the DELETE_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + expect(state.stories).to.have.lengthOf(1); + story.mutations.DELETE_STORY(state, state.stories[0].id); + expect(state.stories).to.have.lengthOf(0); + }); + + it('throws an error if asked to DELETE_STORY a nonexistent id', () => { + story.mutations.CREATE_STORY(state, bigStory); + expect(() => { + story.mutations.DELETE_STORY(state, 'nonexistent') + }).to.throw; + expect(state.stories).to.have.lengthOf(1); + }); + + it('imports stories with the IMPORT_STORY mutation', () => { + const toImport = { + startPassagePid: 100, + name: 'An Imported Story', + ifid: 'not-a-real-ifid', + lastUpdate: new Date(), + script: 'doSomeJavaScript()', + stylesheet: 'body { color: red }', + zoom: 1, + passages: [ + { + pid: 100, + left: 10, + top: 0, + width: 50, + height: 75, + tags: ['red', 'green'], + name: 'A Passage', + text: 'Body text' + } + ] + }; + + story.mutations.IMPORT_STORY(state, toImport); + expect(state.stories).to.have.lengthOf(1); + expect(state.stories[0].startPassageId).to.not.exist; + expect(state.stories[0].id).to.be.a('string'); + expect(state.stories[0].name).to.equal('An Imported Story'); + expect(state.stories[0].ifid).to.be.a('string'); + expect(state.stories[0].lastUpdate).to.be.a('date'); + expect(state.stories[0].script).to.equal('doSomeJavaScript()'); + expect(state.stories[0].stylesheet).to.equal('body { color: red }'); + expect(state.stories[0].zoom).to.equal(1); + expect(state.stories[0].passages).to.have.lengthOf(1); + expect(state.stories[0].passages[0].id).to.be.a('string'); + expect(state.stories[0].passages[0].pid).to.not.exist; + expect(state.stories[0].passages[0].left).to.equal(10); + expect(state.stories[0].passages[0].top).to.equal(0); + expect(state.stories[0].passages[0].width).to.equal(50); + expect(state.stories[0].passages[0].height).to.equal(75); + expect(state.stories[0].passages[0].name).to.equal('A Passage'); + expect(state.stories[0].passages[0].text).to.equal('Body text'); + expect(state.stories[0].passages[0].tags).to.have.lengthOf(2); + expect(state.stories[0].passages[0].tags[0]).to.equal('red'); + expect(state.stories[0].passages[0].tags[1]).to.equal('green'); + }); + + it('creates a passage with the CREATE_PASSAGE_IN_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + story.mutations.CREATE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + { + name: 'A New Passage', + text: 'Hello passage.' + } + ); + expect(state.stories[0].passages).to.have.lengthOf(1); + expect(state.stories[0].passages[0].id).to.be.a('string'); + expect(state.stories[0].passages[0].name).to.equal('A New Passage'); + expect(state.stories[0].passages[0].text).to.equal('Hello passage.'); + expect(state.stories[0].passages[0].story).to.equal(state.stories[0].id); + }); + + it('creates unique IDs for passages with the CREATE_PASSAGE_IN_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + story.mutations.CREATE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + { + name: 'A New Passage', + } + ); + story.mutations.CREATE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + { + name: 'Another Passage', + } + ); + expect(state.stories[0].passages).to.have.lengthOf(2); + expect(state.stories[0].passages[0].id).to.not.equal(state.stories[0].passages[1].id); + }); + + it('updates passages with the UPDATE_PASSAGE_IN_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + story.mutations.CREATE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + { + name: 'A New Passage', + } + ); + expect(state.stories[0].passages[0].name).to.equal('A New Passage'); + story.mutations.UPDATE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + state.stories[0].passages[0].id, + { + name: 'A Different Name' + } + + ); + expect(state.stories[0].passages[0].name).to.equal('A Different Name'); + }); + + it('throws an error if UPDATE_PASSAGE_IN_STORY is passed a nonexistent story id', () => { + story.mutations.CREATE_STORY(state, tinyStory); + expect(() => { + story.mutations.UPDATE_PASSAGE_IN_STORY(state, 'nonexistent'); + }).to.throw; + }); + + it('throws an error if UPDATE_PASSAGE_IN_STORY is passed a nonexistent passage id', () => { + story.mutations.CREATE_STORY(state, tinyStory); + expect(() => { + story.mutations.UPDATE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + 'nonexistent' + ); + }).to.throw; + }); + + it('deletes passages with the DELETE_PASSAGE_IN_STORY mutation', () => { + story.mutations.CREATE_STORY(state, tinyStory); + story.mutations.CREATE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + { + name: 'A New Passage', + } + ); + expect(state.stories[0].passages).to.have.lengthOf(1); + story.mutations.DELETE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + state.stories[0].passages[0].id + ); + expect(state.stories[0].passages).to.have.lengthOf(0); + }); + + it('throws an error if DELETE_PASSAGE_IN_STORY is passed a nonexistent story id', () => { + story.mutations.CREATE_STORY(state, tinyStory); + expect(() => { + story.mutations.DELETE_PASSAGE_IN_STORY(state, 'nonexistent'); + }).to.throw; + }); + + it('throws an error if UPDATE_PASSAGE_IN_STORY is passed a nonexistent passage id', () => { + story.mutations.CREATE_STORY(state, tinyStory); + expect(() => { + story.mutations.DELETE_PASSAGE_IN_STORY( + state, + state.stories[0].id, + 'nonexistent' + ); + }).to.throw; + }); +}); diff --git a/src/dialogs/about/index.html b/src/dialogs/about/index.html new file mode 100644 index 000000000..4154df633 --- /dev/null +++ b/src/dialogs/about/index.html @@ -0,0 +1,114 @@ + + {{ 'About Twine' | say }} {{ appInfo.version }} + +

+ {{ 'Twine is an open-source tool for telling interactive, nonlinear stories.'| say }} +

+ +

+ {{{ 'This application is released under the \x3ca href="http:\/\/www.gnu.org/licenses/gpl-3.0.html">GPL v3\x3c/a> license, but any work created with it may be released under any terms, including commercial ones.'| say }}} +

+ +

+ {{ + /* L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' */ + 'Build' + | say }} + + {{ appInfo.buildNumber }} +

+ +
+ +

+ + + {{ 'Source Code Repository' | say }} + +

+ +

+ {{ + /* L10n: This is the noun form, as program code. */ + 'Code' |say + }} +

+ +

+ Chris Klimas
+ Leon Arnott
+ Ingrid Cheung
+ Daithi O Crualaoich
+ Thomas Michael Edwards
+ Micah Fitch
+ Juhana Leinonen
+ Michael Savich
+ Ross Smith +

+ +

{{ 'Translations' | say }}

+ +

+ David Marchand (Castellano)
+ Svatopluk Vít (Čeština)
+ Kristian Torgard (Dansk)
+ Moritz Rebbert (Deutsch)
+ Valentin Rocher (Français)
+ Marco Secchi (Italiano)
+ Stefan Peeters (Nederlands)
+ José Dias (Português)
+ Alliah (Português Brasileiro)
+ Anton Zhuchkov (Русский)
+ Mika Letonsaari (Suomi)
+ Désirée Nordlund (Svenska) +

+ +

+ {{ 'Libraries'| say }} +

+ +

+ Blob.js
+ CodeMirror
+ FastClick
+ FileSaver.js
+ Jed
+ JSZip
+ Lodash
+ mkdirp
+ MomentJS
+ osenv
+ scroll
+ segseg
+ semver-utils
+ Tether Drop
+ tiny-uuid
+ Vue
+ Vuex
+ Vue-router
+

+ +

+ {{ 'Fonts'| say }} +

+ +

+ {{{ 'Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the guidance of Robert Slimbach for \x3ca href="http:\/\/adobe.com/">Adobe\x3c/a>\x3cbr> Nunito was designed by \x3ca href="http:\/\/code.newtypography.co.uk/">Vernon Adams\x3c/a>'| say }}} +

+ +

+ {{ 'Icons'| say }} +

+ +

+ Font Awesome
+ {{ 'Document designed by Rob Gill from the Noun Project'| say }}
+ {{ 'Question designed by Henry Ryder from the Noun Project'| say }}
+ {{ 'Smile designed by jelio dimitrov from the Noun Project'| say }}
+

+ diff --git a/src/dialogs/about/index.js b/src/dialogs/about/index.js new file mode 100644 index 000000000..6161b8e42 --- /dev/null +++ b/src/dialogs/about/index.js @@ -0,0 +1,21 @@ +const Vue = require('vue'); + +require('./index.less'); + +module.exports = Vue.extend({ + data: () => ({ + origin: null + }), + + template: require('./index.html'), + + components: { + 'modal-dialog': require('../../ui/modal-dialog'), + }, + + vuex: { + getters: { + appInfo: state => state.appInfo + } + } +}); diff --git a/src/dialogs/about/index.less b/src/dialogs/about/index.less new file mode 100644 index 000000000..484a72007 --- /dev/null +++ b/src/dialogs/about/index.less @@ -0,0 +1,11 @@ +#aboutDialog .content { + text-align: center; + + h4 { + margin-bottom: 0; + + & + p { + margin-top: 0; + } + } +} diff --git a/src/dialogs/app-donation/index.html b/src/dialogs/app-donation/index.html new file mode 100644 index 000000000..ecb916e98 --- /dev/null +++ b/src/dialogs/app-donation/index.html @@ -0,0 +1,24 @@ + + + +

+ {{{ "If you love Twine as much as I do, please consider helping it grow with a donation. Twine is an open source project that will always be free to use — and with your help, Twine will continue to thrive." | say }}} +

+ +

+ {{ 'Chris Klimas, Twine creator' | say }} +

+ +

+ + +

+ +

+ {{{ "This message will only be shown to you once.<br>If you'd like to donate to Twine development in the future, you can do so at <a href=\"http:\/\/twinery.org/donate\" target=\"_blank\">http://twinery.org/donate</a>." | say }}} +

+
diff --git a/src/dialogs/app-donation/index.js b/src/dialogs/app-donation/index.js new file mode 100644 index 000000000..8d27ff965 --- /dev/null +++ b/src/dialogs/app-donation/index.js @@ -0,0 +1,43 @@ +// Shows a dialog asking the user to make a donation. + +const Vue = require('vue'); +const { setPref } = require('../../data/actions/pref'); + +require('./index.less'); + +// How long we wait after the user first starts using Twine to show a message +// asking for a donation, in milliseconds. This is currently 14 days. + +const DONATION_DELAY = 1000 * 60 * 60 * 24 * 14; + +const donation = module.exports = { + check(store) { + const now = new Date().getTime(); + + if (!store.state.pref.donateShown && + now > store.state.pref.firstRunTime + DONATION_DELAY) { + setPref(store, 'donateShown', true); + new donation.component().$mountTo(document.body); + } + }, + + component: Vue.extend({ + template: require('./index.html'), + + methods: { + donate() { + window.open('https://twinery.org/donate'); + this.$refs.modal.close(); + }, + + close() { + this.$refs.modal.close(); + } + }, + + components: { + 'modal-dialog': require('../../ui/modal-dialog') + } + }) +}; + diff --git a/src/dialogs/app-donation/index.less b/src/dialogs/app-donation/index.less new file mode 100644 index 000000000..f6e61245b --- /dev/null +++ b/src/dialogs/app-donation/index.less @@ -0,0 +1,19 @@ +#appDonation { + .coda { + font-size: 90%; + } + + .portrait { + float: left; + margin-right: 1em; + } + + .buttons { + clear: both; + text-align: center; + } + + .coda { + text-align: center; + } +} diff --git a/src/dialogs/app-donation/klimas.png b/src/dialogs/app-donation/klimas.png new file mode 100644 index 0000000000000000000000000000000000000000..44bbf4bf9d463338e32d22cb75bc3736b7bf2cde GIT binary patch literal 26080 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 checkTime) { + checkForUpdate( + store.state.pref.lastUpdateSeen, + ({ buildNumber, version, url }) => { + setPref(store, 'lastUpdateSeen', buildNumber); + + confirm({ + message: + /* + L10n: The will have a version number, i.e. + 2.0.6, interpolated into it. + */ + locale.say('A new version of Twine, , has been released.').replace('><', '>' + version + '<'), + + buttonLabel: + '' + + locale.say('Download'), + + cancelLabel: + /* + L10n: A polite rejection of a request, in the sense + that the answer may change in the future. + */ + locale.say('Not Right Now'), + + buttonClass: + 'download primary', + + modalClass: + 'info', + }) + .then(() => { window.open(url); }); + } + ); + } + } +}; diff --git a/src/dialogs/confirm/index.html b/src/dialogs/confirm/index.html new file mode 100644 index 000000000..ebedc9140 --- /dev/null +++ b/src/dialogs/confirm/index.html @@ -0,0 +1,8 @@ + +
{{{message}}}
+

+ + +

+

{{{coda}}}

+
diff --git a/src/dialogs/confirm/index.js b/src/dialogs/confirm/index.js new file mode 100644 index 000000000..dc85ade8d --- /dev/null +++ b/src/dialogs/confirm/index.js @@ -0,0 +1,82 @@ +/** + Manages modals with a single text input, a la window.prompt. + + @module ui/confirm +**/ + +'use strict'; +const locale = require('../../locale'); +const Vue = require('vue'); +const { thenable } = require('../../vue/mixins/thenable'); + +require('./index.less'); + +/** + Shows a modal confirmation dialog, with one button (to continue the action) + and a Cancel button. + + @param {Object} options Object with optional parameters: + message (HTML source of the message) + [modalClass] (CSS class to apply to the modal), + [buttonClass] (CSS class to apply to the action button) + buttonLabel (HTML label for the button) +**/ + +const confirmation = module.exports = { + component: Vue.extend({ + template: require('./index.html'), + + data: () => ({ + message: '', + coda: '', + cancelLabel: (' ' + locale.say('Cancel')), + buttonLabel: '', + modalClass: '', + buttonClass: 'primary' + }), + + methods: { + accept() { + this.$broadcast('close', true); + }, + + cancel() { + this.$broadcast('close', false); + }, + }, + + components: { + 'modal-dialog': require('../../ui/modal-dialog'), + }, + + mixins: [thenable] + }), + + /** + Creates a dialog using the given data, and returns + its promise, which rejects if the 'cancel' button was selected. + + @return {Promise} the modal's promise. + */ + + confirm(data) { + return new confirmation.component( + { data } + ).$mountTo(document.body).then( + result => { + // False results are produced by the close button and the + // cancel button. If the result is false, convert it into a + // rejection. + // + // Note: this may change in the future, as using rejections for + // negative results is somewhat unidiomatic. + + if (!result) { + throw result; + } + + return result; + } + ); + } +}; diff --git a/src/dialogs/confirm/index.less b/src/dialogs/confirm/index.less new file mode 100644 index 000000000..0194e2283 --- /dev/null +++ b/src/dialogs/confirm/index.less @@ -0,0 +1,27 @@ +.modal-dialog.confirm { + .message { + padding-left: 3.5em; + + &:before { + content: '\f071'; // Caution symbol + font: 250% FontAwesome; + float: left; + margin-left: -1.5em; + position: relative; + top: 0.1em; + color: hsl(0, 0%, 80%); + } + } + + &.info .message:before { + content: '\f05a'; // Info symbol + } + + &.no-icon .message { + padding-left: 0; + + &:before { + content: ''; + } + } +} diff --git a/src/dialogs/formats/index.html b/src/dialogs/formats/index.html new file mode 100644 index 000000000..42b26f5fa --- /dev/null +++ b/src/dialogs/formats/index.html @@ -0,0 +1,72 @@ + + + + + +

+ {{'Story formats control the appearance and behavior of stories during play.' | say}} +

+ + + + + + + + + + + + +
{{ 'Use as Default' | say }}
+
+ + +

+ {{'Proofing formats create a versions of stories tailored for editing and proofreading.' | say}} +

+ + + + + + + + + + + + +
{{ 'Use' | say }}
+
+ + +

+ {{ + /* L10n: Address in the sense of a URL. */ + 'To add a story format, enter its address below.' | say }} +

+ +
+ +

+ + +

+ +
+
+
+ +

+ {{ 'Loading...' | say}} +

+ +

+{{{ error }}} +

+ +
diff --git a/src/dialogs/formats/index.js b/src/dialogs/formats/index.js new file mode 100644 index 000000000..cda54808c --- /dev/null +++ b/src/dialogs/formats/index.js @@ -0,0 +1,211 @@ +const Vue = require('vue'); +const semverUtils = require('semver-utils'); +const { createFormatFromUrl, loadFormat, repairFormats } = require('../../data/actions/story-format'); +const locale = require('../../locale'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + /* Detail about each format. */ + loadedFormats: [], + + /* Determines whether to show the error , and with what text. */ + error: '', + + /* Determines whether to show the loading spinner. */ + working: true, + + /* The index number of the next format to load. */ + loadIndex: 0, + + /* Bound to the text in the "new format" input. */ + newFormatUrl: '', + + /* The origin element to show the dialog coming from. */ + origin: null + }), + + /* + These are linked to the Vuex formatNames, so that when a format is deleted + it will disappear from these properties. + */ + + computed: { + proofingFormats() { + return this.loadedFormats.filter( + format => format.properties.proofing + ); + }, + + storyFormats() { + return this.loadedFormats.filter( + format => !format.properties.proofing + ); + } + }, + + methods: { + // Loads the next pending format. + + loadNext() { + if (this.loadIndex < this.allFormats.length) { + this.loadFormat( + this.allFormats[this.loadIndex].name, + this.allFormats[this.loadIndex].version + ).then(format => { + this.loadedFormats.push(format); + this.loadIndex++; + this.loadNext(); + }).catch(e => { + const brokenFormat = this.allFormats[this.loadIndex]; + + this.loadedFormats.push(Object.assign( + {}, + brokenFormat, + { + broken: true, + /* Force allow the format to be deleted. */ + userAdded: true, + properties: { + version: brokenFormat.version, + description: + locale.say( + 'This story format could not be loaded (%1$s).', + e.message + ) + } + } + )); + + this.loadIndex++; + this.loadNext(); + }); + } + else { + this.working = false; + } + }, + + /** + Tries to add a story format and update the list in the modal. If this + succeeds, the tab where the format now belongs to is shown and the + format description is animated in. If this fails, an error message is + shown to the user. This call is asynchronous. + + @method addFormat + @param {String} url URL of the new story format + **/ + + addFormat() { + this.working = true; + + this.createFormatFromUrl(this.newFormatUrl) + .then(format => { + this.repairFormats(); + this.error = ''; + this.working = false; + this.loadedFormats.push(format); + + if (format.properties.proofing) { + this.$refs.tabs.active = 1; + } + else { + this.$refs.tabs.active = 0; + } + }) + .catch(e => { + this.error = locale.say( + 'The story format at %1$s could not be added (%2$s).', + this.newFormatUrl, + e.message + ); + this.working = false; + }); + } + }, + + ready() { + // Move tabs into the dialog header. + + const dialogTitle = this.$el.parentNode.querySelector( + '.modal-dialog > header .title' + ); + const tabs = this.$el.parentNode.querySelectorAll( + 'p.tabs-panel button' + ); + + for (let i = 0; i < tabs.length; i++) { + dialogTitle.appendChild(tabs[i]); + } + + this.loadNext(); + }, + + vuex: { + actions: { + createFormatFromUrl, + loadFormat, + repairFormats + }, + + getters: { + allFormats: state => { + let result = state.storyFormat.formats.map( + format => ({ name: format.name, version: format.version }) + ); + + result.sort((a, b) => { + if (a.name < b.name) { + return -1; + } + + if (a.name > b.name) { + return 1; + } + + const aVersion = semverUtils.parse(a.version); + const bVersion = semverUtils.parse(b.version); + + if (aVersion.major > bVersion.major) { + return -1; + } + else if (aVersion.major < bVersion.major) { + return 1; + } + else { + if (aVersion.minor > bVersion.minor) { + return -1; + } + else if (aVersion.minor < bVersion.minor) { + return 1; + } + else { + if (aVersion.patch > bVersion.patch) { + return -1; + } + else if (aVersion.patch < bVersion.patch) { + return 1; + } + else { + return 0; + } + } + } + }); + + return result; + }, + + defaultFormatPref: state => state.pref.defaultFormat, + proofingFormatPref: state => state.pref.proofingFormat + } + }, + + components: { + 'format-item': require('./item'), + 'tab-item': require('../../ui/tab-panel/item'), + 'tabs-panel': require('../../ui/tab-panel'), + 'modal-dialog': require('../../ui/modal-dialog') + } +}); diff --git a/src/dialogs/formats/item.html b/src/dialogs/formats/item.html new file mode 100644 index 000000000..719024af0 --- /dev/null +++ b/src/dialogs/formats/item.html @@ -0,0 +1,40 @@ + + + + + + +

+ +

+
+
+ + {{ format.name.slice(0,2) }} +
+ +
+

+ {{{ format.properties.description }}} +

+ +

+ License: {{{ format.properties.license }}} +

+
+
+ +

+ {{ 'The default story format can\'t be removed.' | say }} +

+ + + + + diff --git a/src/dialogs/formats/item.js b/src/dialogs/formats/item.js new file mode 100644 index 000000000..665a9835d --- /dev/null +++ b/src/dialogs/formats/item.js @@ -0,0 +1,101 @@ +'use strict'; +const Vue = require('vue'); +const locale = require('../../locale'); +const { confirm } = require('../confirm'); +const { deleteFormat } = require('../../data/actions/story-format'); +const { setPref } = require('../../data/actions/pref'); + +require('./item.less'); + +module.exports = Vue.extend({ + template: require('./item.html'), + + props: { + // A format that this component represents. + format: Object + }, + + computed: { + isDefault() { + if (this.format.properties.proofing) { + return this.proofingFormatPref.name === this.format.name && + this.proofingFormatPref.version === this.format.version; + } + + return this.defaultFormatPref.name === this.format.name && + this.defaultFormatPref.version === this.format.version; + }, + + author() { + if (this.format.properties.author) { + /* L10n: %s is the name of an author. */ + return locale.say('by %s', this.format.properties.author); + } + + return ''; + }, + + /* + Calculates the image source relative to the format's path. + */ + + imageSrc() { + const path = this.format.url.replace(/\/[^\/]*?$/, ''); + + return path + '/' + this.format.properties.image; + } + }, + + methods: { + removeFormat() { + if (this.isDefault) { + confirm({ + message: + locale.say('You may not remove the default story format. Please choose another one first.'), + buttonLabel: + ' ' + locale.say('OK') + }); + + return; + } + + confirm({ + message: + locale.say('Are you sure?'), + buttonLabel: + ' ' + locale.say('Remove'), + buttonClass: + 'danger', + }).then(() => { + this.deleteFormat(this.format.id); + }); + }, + + setDefaultFormat() { + if (this.format.properties.proofing) { + this.setPref( + 'proofingFormat', + { name: this.format.name, version: this.format.version } + ); + } + else { + this.setPref( + 'defaultFormat', + { name: this.format.name, version: this.format.version } + ); + } + }, + }, + + vuex: { + actions: { + deleteFormat, + setPref + }, + + getters: { + defaultFormatPref: state => state.pref.defaultFormat, + proofingFormatPref: state => state.pref.proofingFormat + } + } +}); diff --git a/src/dialogs/formats/item.less b/src/dialogs/formats/item.less new file mode 100644 index 000000000..7ae0043c7 --- /dev/null +++ b/src/dialogs/formats/item.less @@ -0,0 +1,26 @@ +@import '../../common/metrics.less'; + +tr.format-item { + img { + width: 3rem; + height: auto; + } + + .detail { + display: flex; + align-items: center; + } + + .icon { + margin-right: @len-small; + } + + .selector { + vertical-align: top; + text-align: center; + } + + .cantRemove { + font-style: italic; + } +} diff --git a/src/dialogs/prompt/index.html b/src/dialogs/prompt/index.html new file mode 100644 index 000000000..517e22a3e --- /dev/null +++ b/src/dialogs/prompt/index.html @@ -0,0 +1,18 @@ + +
+
{{{message}}}
+ +

+ {{ validationError }} +

+ +

+ +

+ +

+ + +

+
+
diff --git a/src/dialogs/prompt/index.js b/src/dialogs/prompt/index.js new file mode 100644 index 000000000..74e515f80 --- /dev/null +++ b/src/dialogs/prompt/index.js @@ -0,0 +1,82 @@ +/* Shows a modal dialog asking for a text response from the user. */ + +const Vue = require('vue'); +const locale = require('../../locale'); +const { thenable } = require('../../vue/mixins/thenable'); + +require('./index.less'); + +const prompter = module.exports = { + component: Vue.extend({ + template: require('./index.html'), + + data: () => ({ + message: '', + response: '', + cancelLabel: (' ' + locale.say('Cancel')), + buttonLabel: '', + buttonClass: 'primary', + modalClass: '', + isValid: true, + validationError: '', + validator: function() {}, + + origin: null + }), + + ready() { + this.$els.response.focus(); + this.$els.response.select(); + }, + + methods: { + accept() { + const validResponse = this.validator(this.response); + + if (typeof validResponse === 'string') { + this.isValid = false; + this.validationError = validResponse; + } + else { + this.isValid = true; + this.$broadcast('close', this.response); + } + }, + + cancel() { + this.$broadcast('close', false); + } + }, + + components: { + 'modal-dialog': require('../../ui/modal-dialog') + }, + + mixins: [thenable] + }), + + /** + Creates a prompt modal dialog using the given data, and returns its + promise, which rejects if the 'cancel' button was selected. + */ + + prompt(data) { + return new prompter.component({ data }).$mountTo(document.body).then( + result => { + /* + False results are produced by the close button and the cancel + button. If the result is false, convert it into a rejection. + + Note: this may change in the future, as using rejections for + negative results is somewhat unidiomatic. + */ + + if (!result) { + throw result; + } + + return result; + } + ); + } +}; diff --git a/src/dialogs/prompt/index.less b/src/dialogs/prompt/index.less new file mode 100644 index 000000000..8acbbc488 --- /dev/null +++ b/src/dialogs/prompt/index.less @@ -0,0 +1,25 @@ +.modal-dialog.prompt { + .message { + padding-left: 3.5em; + position: relative; + + &:before { + content: '\f059'; + font: 250% FontAwesome; + position: absolute; + top: 0; + left: 0; + width: 1em; + text-align: center; + color: #ccc; + } + } + + .prompt { + margin-left: 4em; + + input[type="text"] { + width: 100%; + } + } +} diff --git a/src/dialogs/story-format/index.html b/src/dialogs/story-format/index.html new file mode 100644 index 000000000..7b9066192 --- /dev/null +++ b/src/dialogs/story-format/index.html @@ -0,0 +1,17 @@ + + {{ 'Story Format' | say }} + +

+ {{ 'A story format controls the appearance and behavior of your story during play.' | say }} +

+ +

+ {{ 'Loading...' | say }} +

+ + + + + +
+
diff --git a/src/dialogs/story-format/index.js b/src/dialogs/story-format/index.js new file mode 100644 index 000000000..b6f376aa7 --- /dev/null +++ b/src/dialogs/story-format/index.js @@ -0,0 +1,132 @@ +const Vue = require('vue'); +const { loadFormat } = require('../../data/actions/story-format'); +const locale = require('../../locale'); +const notify = require('../../ui/notify'); +const semverUtils = require('semver-utils'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + loadIndex: 0, + loadedFormats: [], + storyId: '', + }), + + computed: { + story() { + return this.allStories.find(story => story.id === this.storyId); + }, + + selectedFormat() { + return this.loadedFormats.find( + format => format.name === this.story.storyFormat && + format.version === this.story.storyFormatVersion + ); + }, + + working() { + return this.loadIndex < this.allFormats.length; + } + }, + + methods: { + loadNext() { + if (!this.working) { + return; + } + + const nextFormat = this.allFormats[this.loadIndex]; + + this.loadFormat(nextFormat.name, nextFormat.version) + .then(format => { + if (!format.properties.proofing) { + this.loadedFormats.push(format); + } + + this.loadIndex++; + this.loadNext(); + }) + .catch(e => { + notify( + locale.say( + 'The story format “%1$s” could not ' + + 'be loaded (%2$s).', + nextFormat.name + ' ' + nextFormat.version, + e.message + ), + 'danger' + ); + this.loadIndex++; + this.loadNext(); + }); + } + }, + + ready() { + this.loadNext(); + }, + + vuex: { + actions: { + loadFormat, + }, + + getters: { + allStories: state => state.story.stories, + allFormats: state => { + var result = state.storyFormat.formats.map( + format => ({ name: format.name, version: format.version }) + ); + + result.sort((a, b) => { + if (a.name < b.name) { + return -1; + } + + if (a.name > b.name) { + return 1; + } + + const aVersion = semverUtils.parse(a.version); + const bVersion = semverUtils.parse(b.version); + + if (aVersion.major > bVersion.major) { + return -1; + } + else if (aVersion.major < bVersion.major) { + return 1; + } + else { + if (aVersion.minor > bVersion.minor) { + return -1; + } + else if (aVersion.minor < bVersion.minor) { + return 1; + } + else { + if (aVersion.patch > bVersion.patch) { + return -1; + } + else if (aVersion.patch < bVersion.patch) { + return 1; + } + else { + return 0; + } + } + } + }); + + return result; + } + } + }, + + components: { + 'format-item': require('./item'), + 'modal-dialog': require('../../ui/modal-dialog') + } +}); diff --git a/src/dialogs/story-format/index.less b/src/dialogs/story-format/index.less new file mode 100644 index 000000000..54c834665 --- /dev/null +++ b/src/dialogs/story-format/index.less @@ -0,0 +1,12 @@ +@import '../../common/metrics.less'; + +#storyFormatModal { + .formats { + display: flex; + align-items: stretch; + + .items { + flex-grow: 1; + } + } +} diff --git a/src/dialogs/story-format/item.html b/src/dialogs/story-format/item.html new file mode 100644 index 000000000..5fd6ff589 --- /dev/null +++ b/src/dialogs/story-format/item.html @@ -0,0 +1,30 @@ + + + + + + +

+ + + {{{ author }}} + +

+
+
+ + {{ format.name.slice(0,2) }} +
+ +
+

+ {{{ format.properties.description }}} +

+ +

+ License: {{{ format.properties.license }}} +

+
+
+ + diff --git a/src/dialogs/story-format/item.js b/src/dialogs/story-format/item.js new file mode 100644 index 000000000..a8e6f7e9e --- /dev/null +++ b/src/dialogs/story-format/item.js @@ -0,0 +1,58 @@ +// Shows a single story format, with a radio button to allow the user to +// choose it. + +const Vue = require('vue'); +const { updateStory } = require('../../data/actions/story'); + +require('./item.less'); + +module.exports = Vue.extend({ + template: require('./item.html'), + + props: { + story: { + type: Object, + required: true + }, + + format: { + type: Object, + required: true + } + }, + + computed: { + selected() { + return this.story.storyFormat === this.format.name && + this.story.storyFormatVersion === this.format.version; + }, + + /* + Calculates the image source relative to the format's path. + */ + + imageSrc() { + const path = this.format.url.replace(/\/[^\/]*?$/, ''); + + return path + '/' + this.format.properties.image; + } + }, + + methods: { + select() { + this.updateStory( + this.story.id, + { + storyFormat: this.format.name, + storyFormatVersion: this.format.version + } + ); + } + }, + + vuex: { + actions: { + updateStory + } + } +}); diff --git a/src/dialogs/story-format/item.less b/src/dialogs/story-format/item.less new file mode 100644 index 000000000..b50deeba7 --- /dev/null +++ b/src/dialogs/story-format/item.less @@ -0,0 +1,3 @@ +#storyFormatModal .format-item { + //white-space: nowrap; +} diff --git a/src/dialogs/story-import/index.html b/src/dialogs/story-import/index.html new file mode 100644 index 000000000..22f8c17e2 --- /dev/null +++ b/src/dialogs/story-import/index.html @@ -0,0 +1,46 @@ + + {{ 'Import From File' | say }} + + + + + + + diff --git a/src/dialogs/story-import/index.js b/src/dialogs/story-import/index.js new file mode 100644 index 000000000..b4929cad3 --- /dev/null +++ b/src/dialogs/story-import/index.js @@ -0,0 +1,153 @@ +/* +A dialog which allows a user to import a story from a file. This returns a +promise resolving to the stories that were imported, if any. +*/ + +const Vue = require('vue'); +const { deleteStory, importStory } = require('../../data/actions/story'); +const importHTML = require('../../data/import'); +const load = require('../../file/load'); +const locale = require('../../locale'); +const { thenable } = require('../../vue/mixins/thenable'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + /* A file to immediately import when mounted. */ + immediateImport: null, + + /* + Current state of the operation: + * `waiting`: waiting for the user to select a file + * `working`: working without user input + * `choosing`: choosing which stories to import, when there are + duplicates + */ + status: 'waiting', + + /* An array of objects to import. */ + + toImport: [], + + /* + An array of story names that already exist, and will be replaced in the + import. + */ + + dupeNames: [], + + /* The names that the user has selected to replace. */ + + toReplace: [] + }), + + computed: { + confirmClass() { + if (this.toReplace.length === 0) { + return 'primary'; + } + + return 'danger'; + }, + + confirmLabel() { + if (this.toReplace.length === 0) { + return locale.say('Don\'t Replace Any Stories'); + } + + return locale.sayPlural( + 'Replace %d Story', + 'Replace %d Stories', + this.toReplace.length + ); + } + }, + + ready() { + if (this.immediateImport) { + this.import(this.immediateImport); + } + }, + + methods: { + close() { + if (this.$refs.modal) { + this.$refs.modal.close(); + } + }, + + import(file) { + this.status = 'working'; + + load(file) + .then(source => { + this.toImport = importHTML(source); + + this.dupeNames = this.toImport.reduce( + (list, story) => { + if (this.existingStories.find( + orig => orig.name === story.name + )) { + list.push(story.name); + } + + return list; + }, + + [] + ); + + if (this.dupeNames.length > 0) { + /* Ask the user to pick which ones to replace, if any. */ + + this.status = 'choosing'; + } + else { + /* Immediately run the import and close the dialog. */ + + this.toImport.forEach(story => this.importStory(story)); + this.close(); + } + }); + }, + + replaceAndImport() { + this.toReplace.forEach(name => { + this.deleteStory( + this.existingStories.find(story => story.name === name).id + ); + }); + + this.toImport.forEach(story => { + /* + If the user *didn't* choose to replace this story, skip it. + */ + + if (this.toReplace.indexOf(story.name) !== -1 || + !this.existingStories.find(story => story.name === name)) { + this.importStory(story); + } + + this.close(); + }); + } + }, + + components: { + 'modal-dialog': require('../../ui/modal-dialog') + }, + + mixins: [thenable], + + vuex: { + actions: { + deleteStory, + importStory + }, + + getters: { + existingStories: state => state.story.stories + } + } +}); diff --git a/src/dialogs/story-search/index.html b/src/dialogs/story-search/index.html new file mode 100644 index 000000000..3a80a1b50 --- /dev/null +++ b/src/dialogs/story-search/index.html @@ -0,0 +1,60 @@ + + + {{ 'Find and Replace' | say }} + + +

+ + +

+ +

+ + + + + + + + +

+ +

+ + +

+ +

+ + + + + + + + + + {{ '%d passage matches.' | sayPlural '%d passages match.' passageMatches.length }} + +

+ +

+ {{ 'Searching...' | say }} +

+ +
+ +
+
diff --git a/src/dialogs/story-search/index.js b/src/dialogs/story-search/index.js new file mode 100644 index 000000000..c49c3b154 --- /dev/null +++ b/src/dialogs/story-search/index.js @@ -0,0 +1,120 @@ +/* +A modal which allows the user to perform find and replace on a array of +passages. +*/ + +const Vue = require('vue'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + story: {}, + search: '', + replace: '', + searchNames: true, + caseSensitive: false, + regexp: false, + working: false, + origin: null + }), + + computed: { + searchRegexp() { + let flags = 'g'; + + if (!this.caseSensitive) { + flags += 'i'; + } + + let source = this.search; + + /* + Escape regular expression characters in what the user typed unless + they indicated that they're using a regexp. + */ + + if (!this.regexp) { + source = source.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); + } + + return new RegExp('(' + source + ')', flags); + }, + + passageMatches() { + if (this.search === '') { + return []; + } + + this.working = true; + + let result = this.story.passages.reduce((matches, passage) => { + let numMatches = 0; + let passageName = passage.name; + let passageText = passage.text; + let highlightedName = passageName; + let highlightedText = passageText; + let textMatches = passageText.match(this.searchRegexp); + + if (textMatches) { + numMatches += textMatches.length; + highlightedText = passageText.replace( + this.searchRegexp, + '$1' + ); + } + + if (this.searchNames) { + let nameMatches = passageName.match(this.searchRegexp); + + if (nameMatches) { + numMatches += nameMatches.length; + highlightedName = passageName.replace( + this.searchRegexp, + '$1' + ); + } + } + + if (numMatches > 0) { + matches.push({ + passage, + numMatches, + highlightedName, + highlightedText + }); + } + + return matches; + }, []); + + this.working = false; + return result; + } + }, + + methods: { + expandAll() { + this.$broadcast('expand'); + }, + + collapseAll() { + this.$broadcast('collapse'); + }, + + replaceAll() { + this.$broadcast('replace'); + } + }, + + ready() { + this.$els.search.focus(); + }, + + components: { + 'modal-dialog': require('../../ui/modal-dialog'), + 'search-result': require('./result') + } +}); diff --git a/src/dialogs/story-search/index.less b/src/dialogs/story-search/index.less new file mode 100644 index 000000000..b1cc996ec --- /dev/null +++ b/src/dialogs/story-search/index.less @@ -0,0 +1,15 @@ +#searchModal { + textarea { + display: block; + width: 100%; + box-sizing: border-box; + } + + .resultSummary .matches { + line-height: 250%; + } + + .resultSummary .controls { + float: right; + } +} diff --git a/src/dialogs/story-search/result.html b/src/dialogs/story-search/result.html new file mode 100644 index 000000000..985a2057e --- /dev/null +++ b/src/dialogs/story-search/result.html @@ -0,0 +1,20 @@ +
+

+ + + + + +

+ +
{{{ match.highlightedText }}}
+
diff --git a/src/dialogs/story-search/result.js b/src/dialogs/story-search/result.js new file mode 100644 index 000000000..e03080c9a --- /dev/null +++ b/src/dialogs/story-search/result.js @@ -0,0 +1,95 @@ +/* +A component showing a single search result. +*/ + +const Vue = require('vue'); +const { updatePassage } = require('../../data/actions/passage'); + +require('./result.less'); + +module.exports = Vue.extend({ + template: require('./result.html'), + + props: { + story: { + type: Object, + required: true + }, + + match: { + type: Object, + required: true + }, + + searchRegexp: { + type: RegExp, + required: true + }, + + replaceWith: { + type: String, + required: true + }, + + searchNames: { + type: Boolean, + require: true + } + }, + + data: () => ({ + expanded: false + }), + + methods: { + toggleExpanded() { + this.expanded = !this.expanded; + }, + + replace() { + const name = this.searchNames ? + this.match.passage.name.replace( + this.searchRegexp, + this.replaceWith + ) + : undefined; + const text = this.match.passage.text.replace( + this.searchRegexp, + this.replaceWith + ); + + this.updatePassage( + this.story.id, + this.match.passage.id, + { name, text } + ); + } + }, + + events: { + /* + The parent sends these events when the user chooses to expand or + collapse all results. + */ + + expand() { + this.expanded = true; + }, + + collapse() { + this.expanded = false; + }, + + /* The parent sends this event when the user clicks "Replace All". */ + + replace() { + this.replace(); + } + }, + + vuex: { + actions: { + updatePassage + } + } +}); diff --git a/src/dialogs/story-search/result.less b/src/dialogs/story-search/result.less new file mode 100644 index 000000000..429bb7142 --- /dev/null +++ b/src/dialogs/story-search/result.less @@ -0,0 +1,31 @@ +@import '../../common/colors.less'; +@import '../../common/metrics.less'; + +#searchModal .result { + pre { + max-height: 5em; + width: 100%; + overflow: auto; + background: darken(@color-paper, 5%); + margin-top: 0; + padding: @len-small @len-medium; + } + + .passageName { + display: flex; + justify-content: space-between; + margin: 0; + } + + .controls { + visibility: hidden; + } + + &:hover .controls { + visibility: visible; + } + + .highlight { + background-color: @color-highlight; + } +} diff --git a/src/dialogs/story-stats/index.html b/src/dialogs/story-stats/index.html new file mode 100644 index 000000000..e1d11e5ed --- /dev/null +++ b/src/dialogs/story-stats/index.html @@ -0,0 +1,59 @@ + + + {{ 'Story Statistics' | say }} + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ {{ charCount }} + + {{ charDesc }} +
+ {{ wordCount }} + + {{ wordDesc }} +
+ {{ passageCount }} + + {{ passageDesc }} +
+ {{ linkCount }} + + {{ linkDesc }} +
+ {{ brokenLinkCount }} + + {{ brokenLinkDesc }} +
+ +

+ {{ 'This story was last changed at %s.' | say lastUpdate }} +

+ +

+ {{{ 'The IFID for this story is <span class="ifid">%s</span>. (<a href="http:\/\/ifdb.tads.org/help-ifid" target="_blank">What\'s an IFID?</a>)' | say story.ifid }}} +

+
+
diff --git a/src/dialogs/story-stats/index.js b/src/dialogs/story-stats/index.js new file mode 100644 index 000000000..26c6c9ad2 --- /dev/null +++ b/src/dialogs/story-stats/index.js @@ -0,0 +1,137 @@ +/* +A modal which shows aggregrate statistics for a story. +*/ + +const Vue = require('vue'); +const moment = require('moment'); +const linkParser = require('../../data/link-parser'); +const locale = require('../../locale'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + storyId: '', + origin: null + }), + + computed: { + story() { + return this.allStories.find(story => story.id === this.storyId); + }, + + lastUpdate() { + return moment(this.story.lastUpdate).format('LLLL'); + }, + + charCount() { + return this.story.passages.reduce( + (count, passage) => count + passage.text.length, + 0 + ); + }, + + charDesc() { + /* + L10n: Character in the sense of individual letters in a word. This + does not actually include the count, as it is used in a table. + */ + return locale.sayPlural('Character', 'Characters', this.charCount); + }, + + wordCount() { + return this.story.passages.reduce( + (count, passage) => count + passage.text.split(/\s+/).length, + 0 + ); + }, + + wordDesc() { + /* + L10n: Word in the sense of individual words in a sentence. This + does not actually include the count, as it is used in a table. + */ + return locale.sayPlural('Word', 'Words', this.wordCount); + }, + + links() { + /* An array of distinct link names. */ + + return this.story.passages.reduce( + (links, passage) => [ + ...links, + ...linkParser(passage.text).filter( + link => links.indexOf(link) === -1 + ) + ], + [] + ); + }, + + passageNames() { + return this.story.passages.map(passage => passage.name); + }, + + passageCount() { + return this.story.passages.length; + }, + + passageDesc() { + /* + L10n: Word in the sense of individual words in a sentence. + This does not actually include the count, as it is used in a + table. + */ + return locale.sayPlural('Passage', 'Passages', this.passageCount); + }, + + linkCount() { + /* This counts repeated links, unlike links(). */ + + return this.story.passages.reduce( + (count, passage) => count + linkParser(passage.text).length, + 0 + ); + }, + + linkDesc() { + /* + L10n: Links in the sense of hypertext links. + This does not actually include the count, as it is used in a + table. + */ + return locale.sayPlural('Link', 'Links', this.linkCount); + }, + + brokenLinkCount() { + return this.links.filter( + link => this.passageNames.indexOf(link) === -1 + ).length; + }, + + brokenLinkDesc() { + /* + L10n: Links in the sense of hypertext links. + This does not actually include the count, as it is used in a + table. + */ + return locale.sayPlural( + 'Broken Link', + 'Broken Links', + this.brokenLinkCount + ); + } + }, + + vuex: { + getters: { + allStories: state => state.story.stories + } + }, + + components: { + 'modal-dialog': require('../../ui/modal-dialog') + } +}); diff --git a/src/dialogs/story-stats/index.less b/src/dialogs/story-stats/index.less new file mode 100644 index 000000000..68cdb5a7d --- /dev/null +++ b/src/dialogs/story-stats/index.less @@ -0,0 +1,12 @@ +#statsModal { + table { + margin: 0 auto; + font-size: 120%; + } + + td:first-child { + text-align: right; + font-weight: bold; + padding-right: 0.5em; + } +} diff --git a/src/editors/javascript/index.html b/src/editors/javascript/index.html new file mode 100644 index 000000000..598dd8089 --- /dev/null +++ b/src/editors/javascript/index.html @@ -0,0 +1,13 @@ + + + {{ 'JavaScript' | say }} + + +

+ {{ 'Any JavaScript entered here will immediately run when your story is opened in a Web browser.' | say }} +

+ +
+ +
+
diff --git a/src/editors/javascript/index.js b/src/editors/javascript/index.js new file mode 100644 index 000000000..b427e94b2 --- /dev/null +++ b/src/editors/javascript/index.js @@ -0,0 +1,62 @@ +// A component showing a modal dialog where a story's JavaSCript. + +const Vue = require('vue'); +const { updateStory } = require('../../data/actions/story'); + +require('codemirror/mode/javascript/javascript'); +require('codemirror/addon/display/placeholder'); +require('codemirror/addon/hint/show-hint'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + storyId: '' + }), + + computed: { + source() { + return this.allStories.find( + story => story.id === this.storyId + ).script; + }, + + cmOptions: () => ({ + lineWrapping: true, + lineNumbers: false, + tabSize: 2, + indentWithTabs: true, + mode: 'javascript', + extraKeys: { + 'Ctrl-Space'(cm) { + cm.showHint(); + } + } + }) + }, + + methods: { + resetCm() { + this.$refs.codemirror.reset(); + }, + + save(text) { + this.updateStory(this.storyId, { script: text }); + } + }, + + components: { + 'modal-dialog': require('../../ui/modal-dialog'), + 'code-mirror': require('../../vue/codemirror') + }, + + vuex: { + actions: { + updateStory + }, + + getters: { + allStories: state => state.story.stories + } + } +}); diff --git a/src/editors/passage/index.html b/src/editors/passage/index.html new file mode 100644 index 000000000..cc247c579 --- /dev/null +++ b/src/editors/passage/index.html @@ -0,0 +1,15 @@ + + + + + + + +

+ {{ 'A passage already exists with this name.' | say }} +

+ +
+ +
+
diff --git a/src/editors/passage/index.js b/src/editors/passage/index.js new file mode 100644 index 000000000..615e7c484 --- /dev/null +++ b/src/editors/passage/index.js @@ -0,0 +1,265 @@ +/* +A modal dialog for editing a single passage. +*/ + +const CodeMirror = require('codemirror'); +const Vue = require('vue'); +const locale = require('../../locale'); +const { thenable } = require('../../vue/mixins/thenable'); +const { changeLinksInStory, updatePassage } = require('../../data/actions/passage'); +const { loadFormat } = require('../../data/actions/story-format'); +const { passageDefaults } = require('../../data/store/story'); + +require('codemirror/addon/display/placeholder'); +require('codemirror/addon/hint/show-hint'); +require('../../codemirror/prefix-trigger'); + +require('./index.less'); + +/* +Expose CodeMirror to story formats, currently for Harlowe compatibility. +*/ + +window.CodeMirror = CodeMirror; + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + passageId: '', + storyId: '', + oldWindowTitle: '', + userPassageName: '', + saveError: '', + origin: null + }), + + computed: { + cmOptions() { + return { + placeholder: locale.say( + 'Enter the body text of your passage here. To link to another ' + + 'passage, put two square brackets around its name, [[like ' + + 'this]].' + ), + prefixTrigger: { + prefixes: ['[[', '->'], + callback: this.autocomplete.bind(this) + }, + extraKeys: { + 'Ctrl-Space': this.autocomplete.bind(this) + }, + indentWithTabs: true, + lineWrapping: true, + lineNumbers: false, + mode: 'text' + }; + }, + + parentStory() { + return this.allStories.find(story => story.id === this.storyId); + }, + + passage() { + return this.parentStory.passages.find( + passage => passage.id === this.passageId + ); + }, + + userPassageNameValid() { + return !(this.parentStory.passages.some( + passage => passage.name === this.userPassageName && + passage.id !== this.passage.id + )); + }, + + autocompletions() { + return this.parentStory.passages.map(passage => passage.name); + } + }, + + methods: { + autocomplete() { + this.$refs.codemirror.$cm.showHint({ + hint: cm => { + const wordRange = cm.findWordAt(cm.getCursor()); + const word = cm.getRange( + wordRange.anchor, + wordRange.head + ).toLowerCase(); + + const comps = { + list: this.autocompletions.filter( + name => name.toLowerCase().indexOf(word) !== -1 + ), + from: wordRange.anchor, + to: wordRange.head + }; + + CodeMirror.on(comps, 'pick', () => { + const doc = cm.getDoc(); + + doc.replaceRange(']] ', doc.getCursor()); + }); + + return comps; + }, + + completeSingle: false, + + extraKeys: { + ']'(cm, hint) { + const doc = cm.getDoc(); + + doc.replaceRange(']', doc.getCursor()); + hint.close(); + }, + + '-'(cm, hint) { + const doc = cm.getDoc(); + + doc.replaceRange('-', doc.getCursor()); + hint.close(); + }, + + '|'(cm, hint) { + const doc = cm.getDoc(); + + doc.replaceRange('|', doc.getCursor()); + hint.close(); + } + } + }); + }, + + saveText(text) { + this.updatePassage( + this.parentStory.id, + this.passage.id, + { text: text } + ); + }, + + saveTags(tags) { + this.updatePassage( + this.parentStory.id, + this.passage.id, + { tags: tags } + ); + }, + + dialogDestroyed() { + this.$destroy(); + }, + + canClose() { + if (this.userPassageNameValid) { + if (this.userPassageName !== this.passage.name) { + this.changeLinksInStory( + this.parentStory.id, + this.passage.name, + this.userPassageName + ); + + this.updatePassage( + this.parentStory.id, + this.passage.id, + { name: this.userPassageName } + ); + } + + return true; + } + + return false; + } + }, + + ready() { + this.userPassageName = this.passage.name; + + /* Update the window title. */ + + this.oldWindowTitle = document.title; + document.title = locale.say('Editing \u201c%s\u201d', this.passage.name); + + /* + Load the story's format and see if it offers a CodeMirror mode. + */ + + if (this.$options.storyFormat) { + this.loadFormat( + this.$options.storyFormat.name, + this.$options.storyFormat.version + ).then(format => { + let modeName = format.name.toLowerCase(); + + /* TODO: Resolve this special case with PR #118 */ + + if (modeName === 'harlowe') { + modeName += `-${/^\d+/.exec(format.version)}`; + } + + if (modeName in CodeMirror.modes) { + /* + This is a small hack to allow modes such as Harlowe to + access the full text of the textarea, permitting its lexer + to grow a syntax tree by itself. + */ + + CodeMirror.modes[modeName].cm = this.$refs.codemirror.$cm; + + /* + Now that's done, we can assign the mode and trigger a + re-render. + */ + + this.$refs.codemirror.$cm.setOption('mode', modeName); + } + }); + } + + /* + Set the mode to the default, 'text'. The above promise will reset it if + it fulfils. + */ + + this.$refs.codemirror.$cm.setOption('mode', 'text'); + + /* + Either move the cursor to the end or select the existing text, depending + on whether this passage has only default text in it. + */ + + if (this.passage.text === passageDefaults.text) { + this.$refs.codemirror.$cm.execCommand('selectAll'); + } + else { + this.$refs.codemirror.$cm.execCommand('goDocEnd'); + } + }, + + destroyed() { + document.title = this.oldWindowTitle; + }, + + components: { + 'code-mirror': require('../../vue/codemirror'), + 'modal-dialog': require('../../ui/modal-dialog'), + 'tag-editor': require('./tag-editor') + }, + + vuex: { + actions: { + changeLinksInStory, + updatePassage, + loadFormat + }, + + getters: { + allStories: state => state.story.stories + } + }, + + mixins: [thenable] +}); diff --git a/src/editors/passage/index.less b/src/editors/passage/index.less new file mode 100644 index 000000000..c450a9261 --- /dev/null +++ b/src/editors/passage/index.less @@ -0,0 +1,56 @@ +@import '../../common/colors.less'; +@import '../../common/depth.less'; +@import '../../common/fonts.less'; +@import '../../common/metrics.less'; + +#passageEditModal { + .title span { + display: flex; + width: 100%; + + input { + flex-grow: 1; + margin: @len-tiny; + font-size: 1rem; + } + } + + .passageTags { + margin: @len-small 0; + } +} + +ul.CodeMirror-hints { + position: absolute; + list-style-type: none; + padding: 0; + z-index: 1000; + background: @color-paper; + font: 0.8rem @font-user; + border: none; + border-radius: 2px; + .shadow-large; + + li { + padding: @len-tiny @len-small; + color: @color-text; + + &.CodeMirror-hint-active { + background: fadeout(@color-link, 80%); + color: @color-text; + + .theme-dark & { + background: fadeout(@color-link, 25%); + color: @color-text-dark; + } + } + + .theme-dark & { + color: @color-text-dark; + } + } + + .theme-dark & { + background: @color-paper-dark; + } +} diff --git a/src/editors/passage/tag-editor/index.html b/src/editors/passage/tag-editor/index.html new file mode 100644 index 000000000..80eb112f7 --- /dev/null +++ b/src/editors/passage/tag-editor/index.html @@ -0,0 +1,26 @@ +
+ + + + + + + + +
+ + + + + +
+
+
diff --git a/src/editors/passage/tag-editor/index.js b/src/editors/passage/tag-editor/index.js new file mode 100644 index 000000000..82737811d --- /dev/null +++ b/src/editors/passage/tag-editor/index.js @@ -0,0 +1,70 @@ +/* An editor for adding and removing tags from a passage. */ + +const Vue = require('vue'); +const { updatePassage } = require('../../../data/actions/passage'); +const uniq = require('lodash.uniq'); + +module.exports = Vue.extend({ + data: () => ({ + newVisible: false + }), + + computed: { + tagColors() { + return this.allStories.find(s => s.id === this.storyId).tagColors; + } + }, + + props: { + passage: { + type: Object, + required: true + }, + storyId: { + type: String, + required: true + } + }, + + template: require('./index.html'), + + methods: { + showNew() { + this.newVisible = true; + this.$nextTick(() => this.$els.newName.focus()); + }, + + hideNew() { + this.newVisible = false; + }, + + addNew() { + const newName = this.$els.newName.value.replace(/\s/g, '-'); + + /* Clear the newName element while it's transitioning out. */ + + this.$els.newName.value = ''; + + this.updatePassage( + this.storyId, + this.passage.id, + { + tags: uniq([].concat(this.passage.tags, newName)) + } + ); + + this.hideNew(); + } + }, + + vuex: { + getters: { + allStories: state => state.story.stories + }, + actions: { updatePassage } + }, + + components: { + 'tag-menu': require('./tag-menu') + } +}); \ No newline at end of file diff --git a/src/editors/passage/tag-editor/tag-menu/index.html b/src/editors/passage/tag-editor/tag-menu/index.html new file mode 100644 index 000000000..b6c40e6a5 --- /dev/null +++ b/src/editors/passage/tag-editor/tag-menu/index.html @@ -0,0 +1,19 @@ + + +
+ + + + + + + +
+
\ No newline at end of file diff --git a/src/editors/passage/tag-editor/tag-menu/index.js b/src/editors/passage/tag-editor/tag-menu/index.js new file mode 100644 index 000000000..a08bbea71 --- /dev/null +++ b/src/editors/passage/tag-editor/tag-menu/index.js @@ -0,0 +1,46 @@ +const Vue = require('vue'); +const without = require('lodash.without'); +const { setTagColorInStory } = require('../../../../data/actions/story'); +const { updatePassage } = require('../../../../data/actions/passage'); + +require('./index.less'); + +module.exports = Vue.extend({ + props: { + tag: { + type: String, + required: true + }, + passage: { + type: Object, + required: true + }, + storyId: { + type: String, + required: true + } + }, + + template: require('./index.html'), + + methods: { + remove() { + this.updatePassage( + this.storyId, + this.passage.id, + { tags: without(this.passage.tags, this.tag) } + ); + }, + setColor(color) { + this.setTagColorInStory(this.storyId, this.tag, color); + } + }, + + vuex: { + actions: { setTagColorInStory, updatePassage } + }, + + components: { + 'drop-down': require('../../../../ui/drop-down') + } +}); \ No newline at end of file diff --git a/src/editors/passage/tag-editor/tag-menu/index.less b/src/editors/passage/tag-editor/tag-menu/index.less new file mode 100644 index 000000000..8e320f17c --- /dev/null +++ b/src/editors/passage/tag-editor/tag-menu/index.less @@ -0,0 +1,50 @@ +@import '../../../../common/colors.less'; +@import '../../../../common/metrics.less'; + +.tags { + .toolbar { + margin: @len-small 0; + + button { + height: 2 * @len-large; + width: 2 * @len-large; + margin: 0 @len-small / 2; + + &:first-child { + margin-left: @len-small; + } + + &:last-child { + margin-right: @len-small; + } + + &.gray { + background: @color-tag-gray; + } + + &.red { + background: @color-tag-red; + } + + &.orange { + background: @color-tag-orange; + } + + &.yellow { + background: @color-tag-yellow; + } + + &.green { + background: @color-tag-green; + } + + &.blue { + background: @color-tag-blue; + } + + &.purple { + background: @color-tag-purple; + } + } + } +} \ No newline at end of file diff --git a/src/editors/stylesheet/index.html b/src/editors/stylesheet/index.html new file mode 100644 index 000000000..0666c1d0e --- /dev/null +++ b/src/editors/stylesheet/index.html @@ -0,0 +1,13 @@ + + + {{ 'Stylesheet' | say }} + + +

+ {{ 'Any CSS entered here will override the default appearance of your story.' | say }} +

+ +
+ +
+
diff --git a/src/editors/stylesheet/index.js b/src/editors/stylesheet/index.js new file mode 100644 index 000000000..d91b3c6af --- /dev/null +++ b/src/editors/stylesheet/index.js @@ -0,0 +1,65 @@ +/* +A component showing a modal dialog where a story's stylesheet can be edited. +*/ + +const Vue = require('vue'); +const { updateStory } = require('../../data/actions/story'); + +require('codemirror/mode/css/css'); +require('codemirror/addon/display/placeholder'); +require('codemirror/addon/hint/show-hint'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + storyId: '', + origin: null + }), + + computed: { + source() { + return this.allStories.find( + story => story.id === this.storyId + ).stylesheet; + }, + + cmOptions: () => ({ + lineWrapping: true, + lineNumbers: false, + tabSize: 4, + indentWithTabs: true, + mode: 'css', + extraKeys: { + 'Ctrl-Space'(cm) { + cm.showHint(); + } + } + }) + }, + + methods: { + resetCm() { + this.$refs.codemirror.reset(); + }, + + save(text) { + this.updateStory(this.storyId, { stylesheet: text }); + } + }, + + components: { + 'modal-dialog': require('../../ui/modal-dialog'), + 'code-mirror': require('../../vue/codemirror') + }, + + vuex: { + actions: { + updateStory + }, + + getters: { + allStories: state => state.story.stories + } + } +}); diff --git a/src/file/load.js b/src/file/load.js new file mode 100644 index 000000000..4927a8cfd --- /dev/null +++ b/src/file/load.js @@ -0,0 +1,17 @@ +// Handles reading in data from a file in a FileList, e.g. from an upload +// element. +// https://developer.mozilla.org/en-US/docs/Web/API/FileList +// +// This returns a promise that resolves with the data in the file. + +module.exports = file => { + const reader = new FileReader(); + + return new Promise(resolve => { + reader.addEventListener('load', e => { + resolve(e.target.result); + }); + + reader.readAsText(file, 'UTF-8'); + }); +}; diff --git a/src/file/save.js b/src/file/save.js new file mode 100644 index 000000000..371c40467 --- /dev/null +++ b/src/file/save.js @@ -0,0 +1,78 @@ +/** + Saves data to a file. This appears to the user as if they had clicked a link + to a downloadable file in their browser. If no failure method is specified, + then this will show a UI notification when errors occur. + + @module file/save + @param {String} data data to save + @param {String} filename filename to save to + @param {Function} success callback function on a successful save, optional + @param {Function} failure callback function on a failed save (passed error), + optional +**/ + +'use strict'; +const JSZip = require('jszip'); +const saveAs = require('browser-saveas'); +const { oniOS, onSafari } = require('../ui'); +const locale = require('../locale'); +const notify = require('../ui/notify'); + +require('blob-polyfill'); + +module.exports = (data, filename, success, failure) => { + try { + if (oniOS()) { + // standard style + + const blob = new Blob([data], { type: 'text/html;charset=utf-8' }); + + // Safari requires us to use saveAs in direct response + // to a user event, so we punt and use a data: URI instead + // we can't even open it in a new window as that seems to + // trigger popup blocking + + if (onSafari()) { + window.location.href = URL.createObjectURL(blob); + } + else { + saveAs(blob, filename); + } + + if (success) { + success(); + } + } + else { + // package it into a .zip; this will trigger iOS to try to + // hand it off to Google Drive, Dropbox, and the like + + const zip = new JSZip(); + + zip.file(filename, data); + window.location.href = + 'data:application/zip;base64, ' + + zip.generate({ type: 'base64' }); + + if (success) { + success(); + } + }; + } + catch (e) { + if (failure) { + failure(e); + } + else { + // L10n: %1$s is a filename; %2$s is the error message. + notify( + locale.say( + '“%1$s” could not be saved (%2$s).', + filename, + e.message + ), + 'danger' + ); + } + }; +}; diff --git a/src/index.ejs b/src/index.ejs new file mode 100644 index 000000000..544ff5af2 --- /dev/null +++ b/src/index.ejs @@ -0,0 +1,41 @@ + + + + Twine + + + + <% if (htmlWebpackPlugin.options.cdn) { %> + + + + <% } %> + + + +
+ + <% if (htmlWebpackPlugin.options.cdn) { %> + + + + + + + + + + + + + + + + + + + <% } %> + + + + diff --git a/src/index.js b/src/index.js new file mode 100644 index 000000000..c9be4054d --- /dev/null +++ b/src/index.js @@ -0,0 +1,85 @@ +require('./index.less'); + +/* +The main entry point for the application. +*/ + +let Vue = require('vue'); + +/* +Load Vue extensions as early as possible so that they're available to +everything. +*/ + +const localeFilters = require('./vue/filters/locale'); +const mountMixin = require('./vue/mixins/mount-to'); +const mouseScrollingDirective = require('./vue/directives/mouse-scrolling'); + +Vue.mixin(mountMixin); +localeFilters.addTo(Vue); +mouseScrollingDirective.addTo(Vue); + +/* +We initialize our NW.js hooks as early as possible. This needs to be after we +extend Vue, because it touches certain Vue components that expect those +extensions to be in place at require() time. +*/ + +require('./nw').init().then(function() { + const locale = require('./locale'); + const notify = require('./ui/notify'); + const store = require('./data/store'); + const TwineApp = require('./common/app'); + const TwineRouter = require('./common/router'); + + require('core-js'); + + /* Start the application after loading the appropriate locale data. */ + + let userLocale; + + /* + The user can specify a locale parameter in the URL to override the app + preference, in case things go severely wrong and they need to force it. + */ + + const localeUrlMatch = /locale=([^&]+)&?/.exec(window.location.search); + + if (localeUrlMatch) { + userLocale = localeUrlMatch[1]; + } + else { + userLocale = store.state.pref.locale; + } + + if (typeof userLocale === 'string') { + /* Load the locale, then start the application. */ + + locale.load(userLocale.toLowerCase(), () => { + TwineRouter.start(TwineApp, '#main'); + }); + } + else { + /* + Something has gone pretty wrong; fall back to English as a last resort. + */ + + locale.load('en', () => { + TwineRouter.start(TwineApp, '#main'); + + Vue.nextTick(() => { + /* + The message below is not localized because if we've reached + this step, localization is not working. + */ + + notify( + 'Your locale preference has been reset to English due ' + + 'to a technical problem.
Please change it with the ' + + 'Language option in the story list.', + 'danger' + ); + }); + }); + } +}); \ No newline at end of file diff --git a/src/index.less b/src/index.less new file mode 100644 index 000000000..c0cf3e882 --- /dev/null +++ b/src/index.less @@ -0,0 +1,8 @@ +/* +Some LESS modules that don't connect to a JS module, but are important +nonetheless. +*/ + +@import '~font-awesome/less/font-awesome.less'; +@import '~codemirror/lib/codemirror.css'; +@import 'vue/index.less'; diff --git a/src/locale/index.js b/src/locale/index.js new file mode 100644 index 000000000..3784dbf20 --- /dev/null +++ b/src/locale/index.js @@ -0,0 +1,144 @@ +/** + Manages localizing strings, dates, and times. + + @module locale +**/ + +const jsonp = require('jsonp'); +const Jed = require('jed'); +const moment = require('moment'); + +module.exports = { + /** + Loads gettext strings via AJAX. This sets the i18nData and + locale properties, and sets up Moment.js for the correct locale. + + @param {String} locale locale (e.g. en_us) to load + @param {Function} callback function to call once done + **/ + + load(locale, callback) { + /** + The app's current locale. + + @property locale + @readonly + **/ + + this.locale = locale; + + /* Set locale in MomentJS. */ + + moment.locale(locale); + + /* Set up failover Jed data to get back the source text as-is. */ + + const failoverData = { + domain: 'messages', + locale_data: { + messages: { + '': { + domain: 'messages', + lang: 'en-us', + plural_forms: 'nplurals=2; plural=(n != 1);' + } + } + } + }; + + /* + If the locale is 'en' or 'en-us', return the failover data early to + prevent unnecessary requests, especially with the online build. + */ + + if (locale === 'en' || locale === 'en-us') { + this.i18nData = failoverData; + this.i18n = new Jed(this.i18nData); + callback(); + return; + } + + /* Attempt to fetch the locale data. */ + + jsonp( + `locale/${locale}.js`, + { name: 'locale', timeout: 1000 }, + (err, data) => { + if (err) { + this.i18nData = failoverData; + this.i18n = new Jed(this.i18nData); + callback(); + } + else { + /** + The raw JSON data used by Jed. + + @property i18nData + @type {Object} + **/ + + this.i18nData = data; + this.i18n = new Jed(this.i18nData); + callback(); + } + } + ); + }, + + /** + Translates a string to the user-set locale, interpolating variables. + Anything passed beyond the source text will be interpolated into it. + + @param {String} source source text to translate + @return string translation + **/ + + say(source, ...args) { + try { + if (args.length == 0) { + return this.i18n.gettext(source); + } + + /* Interpolation required. */ + + return this.i18n.sprintf(this.i18n.gettext(source), ...args); + } + catch (e) { + /* + If all else fails, return English, even with ugly %d placeholders so + the user can see *something*. + */ + + return source; + } + }, + + /** + Translates a string to the user-set locale, keeping in mind + pluralization rules. Any additional arguments passed after the ones + listed here are interpolated into the resulting string. + + When interpolating, count will always be the first argument. + + @param {String} sourceSingular source text to translate with + singular form @param {String} sourcePlural source text to translate + with plural form @param {Number} count count to use for + pluralization @return string translation + **/ + + sayPlural(sourceSingular, sourcePlural, count, ...args) { + try { + return this.i18n.sprintf( + this.i18n.ngettext(sourceSingular, sourcePlural, count), + count, + ...args + ); + } + catch (e) { + // if all else fails, return English, even with ugly placeholders + // so the user can see *something* + + return sourcePlural.replace(/%d/g, count); + } + } +}; diff --git a/src/locale/po/cs.po b/src/locale/po/cs.po new file mode 100644 index 000000000..22a4c43a8 --- /dev/null +++ b/src/locale/po/cs.po @@ -0,0 +1,1371 @@ +# Czech language file for Twine 2 +# Copyright (C) 2016 +# This file is distributed under the same license as the PACKAGE package. +# Svatopluk Vít (svatopluk.vit@gmail.com), 2016. +msgid "" +msgstr "" +"Project-Id-Version: CZ-TWINE2-1.01\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-19 09:36+0100\n" +"PO-Revision-Date: 2016-12-20 12:01+0100\n" +"Last-Translator: Svatopluk Vít \n" +"Language-Team: \n" +"Language: cze (B)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"X-Generator: Eazy Po 0.9.5.3\n" + +#: templates/localeview.html:4 +#, approved +msgid "Please choose which language you would like to use with Twine." +msgstr "Zvolte si jazyk, který budete používat v Twine." + +#: templates/localeview.html:12 +#, approved +msgid "English" +msgstr "Angličtina" + +#: templates/localeview.html:19 +#, approved +msgid "Spanish" +msgstr "Španělština" + +#: templates/storyeditview/passageeditmodal.html:8 +#, approved +msgid "Passage Name" +msgstr "Název místnosti" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +#, approved +msgid "Tag" +msgstr "Štítek" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +#, approved +msgid "Tag name" +msgstr "Jméno štítku" + +#: templates/storyeditview/passageeditmodal.html:36 +#, approved +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Vložte hlavní text místnosti. Pokud se chcete odkázat na jinou místnost, " +"uveďte její název do dvou hranatých závorek, [[například takto]]." + +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +#, approved +msgid "Delete “%s”" +msgstr "Smazat “%s”" + +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +#, approved +msgid "Edit “%s”" +msgstr "Upravit “%s”" + +#: templates/storyeditview/passageitemview.html:24 +#, approved +msgid "Test story starting here" +msgstr "Začít test příběhu z tohoto místa" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +#, approved +msgid "Set “%s” as starting point" +msgstr "Nastavit “%s” jako počáteční bod" + +#: templates/storyeditview/renamestorymodal.html:8 +#: templates/storyeditview/toolbar.html:31 +#: templates/storylistview/storyitemview.html:36 +#, approved +msgid "Rename Story" +msgstr "Přejmenovat příběh" + +#: templates/storyeditview/renamestorymodal.html:14 +#, approved +msgid "What should this story's name be?" +msgstr "Jak se bude příběh jmenovat?" + +#: templates/storyeditview/renamestorymodal.html:24 +#, approved +msgid "Please enter a name." +msgstr "Zadejte jméno." + +#: templates/storyeditview/renamestorymodal.html:28 +#: templates/storylistview/formatitem.html:7 +#: templates/storylistview/storylistview.html:25 +#: templates/storylistview/storylistview.html:50 +#, approved +msgid "Cancel" +msgstr "Storno" + +#: templates/storyeditview/renamestorymodal.html:29 +#, approved +msgid "Save" +msgstr "Uložit" + +#: templates/storyeditview/scripteditmodal.html:8 +#, approved +msgid "JavaScript" +msgstr "JavaScript" + +#: templates/storyeditview/scripteditmodal.html:14 +#, approved +msgid "" +"in a Web browser." +"in a Web browser." +msgstr "" +"internetovém prohlížeči." +"internetovém prohlížeči." + +#: templates/storyeditview/searchmodal.html:7 +#, approved +msgid "Find and Replace" +msgstr "Najít a nahradit" + +#: templates/storyeditview/searchmodal.html:12 +#, approved +msgid "Search For" +msgstr "Hledat" + +#: templates/storyeditview/searchmodal.html:18 +#, approved +msgid "Include passage names" +msgstr "Včetně názvu místnosti" + +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +#, approved +msgid "Match case" +msgstr "Rozlišovat velikost písmen" + +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +#, approved +msgid "Regular expression" +msgstr "Regulární výrazy" + +#: templates/storyeditview/searchmodal.html:34 +#, approved +msgid "Replace With" +msgstr "Nahradit" + +#: templates/storyeditview/searchmodal.html:40 +#, approved +msgid "Expand all search results" +msgstr "Rozbalit všechny výsledky" + +#: templates/storyeditview/searchmodal.html:44 +#, approved +msgid "Collapse all search results" +msgstr "Sbalit všechny výsledky" + +#: templates/storyeditview/searchmodal.html:49 +#, approved +msgid "Replace All" +msgstr "Nahradit vše" + +#: templates/storyeditview/searchmodal.html:57 +#, approved +msgid "Searching..." +msgstr "Vyhledávání..." + +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +#, approved +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d shoda" +msgstr[1] "%d shody" +msgstr[2] "%d shod" + +#: templates/storyeditview/searchmodalresult.html:22 +#, approved +msgid "Replace in this passage" +msgstr "Nahradit v této místnosti" + +#: templates/storyeditview/searchmodalresult.html:23 +#, approved +msgid "Replace in Passage" +msgstr "Nahradit v místnosti" + +#: templates/storyeditview/statsmodal.html:8 +#: templates/storyeditview/toolbar.html:39 +#, approved +msgid "Story Statistics" +msgstr "Statistika příběhu" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +#, approved +msgid "This story was last changed at %s" +msgstr "Příběh byl naposledy změněn v %s" + +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +#, approved +msgid "" +"The IFID for this story is %s. What's an IFID?)" +msgstr "" +"IFID tohoto příběhu je %s. Co je to IFID?)" + +#: templates/storyeditview/storyformatmodal.html:7 +#, approved +msgid "Story Format" +msgstr "Formát příběhu" + +#: templates/storyeditview/storyformatmodal.html:12 +#, approved +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "Formát příběhu určuje vzhled a chování příběhu během hraní." + +#: templates/storyeditview/storyformatmodal.html:16 +#: templates/storylistview/modals/formatsmodal.html:58 +#, approved +msgid "Loading..." +msgstr "Nahrávání..." + +#: templates/storyeditview/stylesheeteditmodal.html:8 +#, approved +msgid "Stylesheet" +msgstr "Styl" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +#, approved +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "Jakýkoliv CSS skript zadaný zde přepíše výchozí vzhled vašeho příběhu." + +#: templates/storyeditview/toolbar.html:5 +#, approved +msgid "Go to the story list" +msgstr "Přejít na seznam příběhů" + +#: templates/storyeditview/toolbar.html:19 +#, approved +msgid "Edit Story JavaScript" +msgstr "Upravit JavaScript příběhu" + +#: templates/storyeditview/toolbar.html:23 +#, approved +msgid "Edit Story Stylesheet" +msgstr "Upravit styl příběhu" + +#: templates/storyeditview/toolbar.html:27 +#, approved +msgid "Change Story Format" +msgstr "Změnit formát příběhu" + +#: templates/storyeditview/toolbar.html:35 +#, approved +msgid "Snap to Grid" +msgstr "Ukotvit k mřížce" + +#: templates/storyeditview/toolbar.html:45 +#, approved +msgid "View Proofing Copy" +msgstr "Zobrazit kopii k revizi" + +#: templates/storyeditview/toolbar.html:49 +#: templates/storylistview/storyitemview.html:32 +#, approved +msgid "Publish to File" +msgstr "Zveřejnit do souboru" + +#: templates/storyeditview/toolbar.html:62 +#, approved +msgid "Quick Find" +msgstr "Rychlé hledání" + +#: templates/storyeditview/toolbar.html:63 +#, approved +msgid "Find and replace across the entire story" +msgstr "Najít a nahradit v celém příběhu" + +#: templates/storyeditview/toolbar.html:67 +#, approved +msgid "Show only story structure" +msgstr "Zobrazit pouze strukturu příběhu" + +#: templates/storyeditview/toolbar.html:71 +#, approved +msgid "Show only passage titles" +msgstr "Zobrazit pouze názvy místností" + +#: templates/storyeditview/toolbar.html:75 +#, approved +msgid "Show passage titles and excerpts" +msgstr "Zobrazit názvy místností a výňatky" + +#: templates/storyeditview/toolbar.html:81 +#, approved +msgid "Play this story in test mode" +msgstr "Přehrát příběh v testovacím módu" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +#, approved +msgid "Test" +msgstr "Otestovat" + +#: templates/storyeditview/toolbar.html:88 +#, approved +msgid "Play this story" +msgstr "Přehrát příběh" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +#, approved +msgid "Play" +msgstr "Přehrát" + +#: templates/storyeditview/toolbar.html:95 +#, approved +msgid "Add a new passage" +msgstr "Přidat novou místnost" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 +#: js/views/storyeditview/modals/statsmodal.js:75 +#, approved +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "Místnost" +msgstr[1] "Místnosti" +msgstr[2] "Místností" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +#, approved +msgid "by %s" +msgstr "od autora %s" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +#, approved +msgid "License: %s" +msgstr "Licence: %s" + +#: templates/storylistview/formatitem.html:5 +#, approved +msgid "Are you sure?" +msgstr "Opravdu?" + +#: templates/storylistview/formatitem.html:6 +#, approved +msgid "Remove" +msgstr "Odstranit" + +#: templates/storylistview/formatitem.html:12 +#, approved +msgid "Remove this format" +msgstr "Odstranit tento formát" + +#: templates/storylistview/formatitem.html:14 +#, approved +msgid "Set this format as default for stories" +msgstr "Nastavit tento formát jako výchozí pro příběhy" + +#: templates/storylistview/modals/aboutmodal.html:8 +#, approved +msgid "About Twine" +msgstr "O Twine" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +#, approved +msgid "Build" +msgstr "Sestavení" + +#: templates/storylistview/modals/aboutmodal.html:21 +#, approved +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine je open-source nástroj pro vyprávění interaktivních, nelineárních " +"příběhů." + +#: templates/storylistview/modals/aboutmodal.html:25 +#, approved +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +"released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Twine 2.0 je vydán pod licencí GPL v3, ale cokoliv v něm vytvořené může být vydáno pod " +"libovolnou licencí včetně licencí komerčních. Repozitář zdrojových kódů" + +#: templates/storylistview/modals/aboutmodal.html:31 +#, approved +msgid "Help Twine Grow With A Donation" +msgstr "Pomozte Twine existovat z vašich dobrovolných příspěvků" + +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +#, approved +msgid "Code" +msgstr "Kód" + +#: templates/storylistview/modals/aboutmodal.html:55 +#, approved +msgid "Libraries" +msgstr "Knihovny" + +#: templates/storylistview/modals/aboutmodal.html:74 +#, approved +msgid "Fonts" +msgstr "Písma" + +#: templates/storylistview/modals/aboutmodal.html:78 +#, approved +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for Adobe
Nunito was designed by
Vernon Adams" +msgstr "" +"Source Sans Pro a Source Code Pro byly vytvořeny Paulem D. Huntem pod " +"vedením Roberta Slimbacha pro Adobe
Nunito bylo vytvořeno
Vernonem Adamsem" + +#: templates/storylistview/modals/aboutmodal.html:82 +#, approved +msgid "Icons" +msgstr "Ikony" + +#: templates/storylistview/modals/aboutmodal.html:87 +#, approved +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Dokument zpracován Robem Gillem z The Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:88 +#, approved +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Otázky zpracovány Henry Ryderem z The Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:89 +#, approved +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Emotikony vytvořeny Jelio Dimitrovem z The Noun Project" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +#, approved +msgid "" +"A new version of Twine, , has been released." +msgstr "Byla vydána nová verze Twine ." + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +#, approved +msgid "Not Right Now" +msgstr "Právě teď bohužel ne" + +#: templates/storylistview/modals/appupdatemodal.html:21 +#, approved +msgid "Download" +msgstr "Stáhnout" + +#: templates/storylistview/modals/donatemodal.html:6 +#, approved +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is as an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Pokud máte Twine rádi jako já, zvažte finanční příspěvek na jeho další " +"rozvoj. Twine je open-source projekt, který bude vždy možné zdarma používat " +"a jen s vaší pomocí bude vzkvétat." + +#: templates/storylistview/modals/donatemodal.html:10 +#, approved +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, autor Twine" + +#: templates/storylistview/modals/donatemodal.html:16 +#, approved +msgid "Donate" +msgstr "Přispět" + +#: templates/storylistview/modals/donatemodal.html:17 +#, approved +msgid "No Thanks" +msgstr "Ne děkuji" + +#: templates/storylistview/modals/donatemodal.html:21 +#, approved +msgid "This message will only be shown to you once.
" +msgstr "Tato zpráva se zobrazí pouze jednou.
" + +#: templates/storylistview/modals/formatsmodal.html:9 +#, approved +msgid "Story Formats" +msgstr "Formát příběhu" + +#: templates/storylistview/modals/formatsmodal.html:10 +#, approved +msgid "Proofing Formats" +msgstr "Formáty kontroly" + +#: templates/storylistview/modals/formatsmodal.html:11 +#, approved +msgid "Add a New Format" +msgstr "Přidat nový formát" + +#: templates/storylistview/modals/formatsmodal.html:20 +#, approved +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "Formát příběhu určuje vzhled a chování příběhů během hraní." + +#: templates/storylistview/modals/formatsmodal.html:30 +#, approved +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Formát kontroly příběhu vytváří verzi příběhu uzpůsobenou k úpravám a " +"kontrole." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +#, approved +msgid "To add a story format, enter its address below." +msgstr "Pro přidání formátu příběhu zadejte jeho internetovou adresu níže." + +#: templates/storylistview/modals/formatsmodal.html:50 +#: templates/storylistview/storylistview.html:26 +#, approved +msgid "Add" +msgstr "Přidat" + +#: templates/storylistview/storyitemview.html:24 +#, approved +msgid "Play Story" +msgstr "Přehrát příběh" + +#: templates/storylistview/storyitemview.html:28 +#, approved +msgid "Test Story" +msgstr "Otestovat příběh" + +#: templates/storylistview/storyitemview.html:40 +#, approved +msgid "Duplicate Story" +msgstr "Duplikovat příběh" + +#: templates/storylistview/storyitemview.html:46 +#, approved +msgid "Delete Story" +msgstr "Vymazat příběh" + +#: templates/storylistview/storylistview.html:5 +#, approved +msgid "Twine" +msgstr "Twine" + +#: templates/storylistview/storylistview.html:9 +#, approved +msgid "Create a brand-new story" +msgstr "Vytvořit úplně nový příběh" + +#: templates/storylistview/storylistview.html:10 +#, approved +msgid "Story" +msgstr "Příběh" + +#: templates/storylistview/storylistview.html:17 +#, approved +msgid "What should your story be named?
(You can change this later.)" +msgstr "" +"Jaký by měl být titul vašeho příběhu?
(Později jej budete moci změnit.)" + +#: templates/storylistview/storylistview.html:34 +#, approved +msgid "Import a published story or Twine archive" +msgstr "Importovat zveřejněný příběh nebo Twine archiv" + +#: templates/storylistview/storylistview.html:35 +#, approved +msgid "Import From File" +msgstr "Importovat ze souboru" + +#: templates/storylistview/storylistview.html:42 +#, approved +msgid "Import this file:" +msgstr "Importovat soubor:" + +#: templates/storylistview/storylistview.html:59 +#, approved +msgid "Importing..." +msgstr "Importování..." + +#: templates/storylistview/storylistview.html:67 +#, approved +msgid "Save all stories to a Twine archive file" +msgstr "Uložit všechny příběhy do Twine archivu" + +#: templates/storylistview/storylistview.html:68 +#, approved +msgid "Archive" +msgstr "Archiv" + +#: templates/storylistview/storylistview.html:73 +#, approved +msgid "Work with story and proofing formats" +msgstr "Pracovat s formáty příběhu a konrtoly" + +#: templates/storylistview/storylistview.html:74 +#, approved +msgid "Formats" +msgstr "Formáty" + +#: templates/storylistview/storylistview.html:79 +#, approved +msgid "Change the language Twine uses" +msgstr "Změnit jazyk, který Twine používá" + +#: templates/storylistview/storylistview.html:80 +#, approved +msgid "Language" +msgstr "Jazyk" + +#: templates/storylistview/storylistview.html:85 +#, approved +msgid "Browse online help" +msgstr "Procházet nápovědu online" + +#: templates/storylistview/storylistview.html:86 +#, approved +msgid "Help" +msgstr "Nápověda" + +#: templates/storylistview/storylistview.html:101 +#, approved +msgid "version" +msgstr "verze" + +#: templates/storylistview/storylistview.html:103 +#, approved +msgid "Report a bug" +msgstr "Nahlásit chybu" + +#: templates/storylistview/storylistview.html:111 +#, approved +msgid "Stories" +msgstr "Příběhy" + +#: templates/storylistview/storylistview.html:114 +#, approved +msgid "Sort By" +msgstr "Třídit podle" + +#: templates/storylistview/storylistview.html:116 +#, approved +msgid "Last changed date" +msgstr "Datum poslední změny" + +#: templates/storylistview/storylistview.html:117 +#, approved +msgid "Edit Date" +msgstr "Upravit datum" + +#: templates/storylistview/storylistview.html:120 +#, approved +msgid "Story name" +msgstr "Název příběhu" + +#: templates/storylistview/storylistview.html:121 +#, approved +msgid "Name" +msgstr "Název" + +#: templates/storylistview/storylistview.html:128 +#, approved +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"V Twine nejsou právě uloženy žádné příběhy. Abyste mohli začít, musíte " +"vytvořit nový příběh nebo nějaký importovat ze souboru." + +#: templates/welcomeview.html:6 +#, approved +msgid "Hi!" +msgstr "Vítejte!" + +#: templates/welcomeview.html:10 +#, approved +msgid "" +"There are a few things you should know before you get started." +"There are a few things you should know before you get started." +msgstr "" +"příběhů. Předtím než začnete, měli byste vědět několik věcí." +"příběhů. Předtím než začnete, měli byste vědět několik věcí." + +#: templates/welcomeview.html:14 +#, approved +msgid "Tell Me More" +msgstr "Dozvědět se více" + +#: templates/welcomeview.html:15 +#, approved +msgid "Skip" +msgstr "Přeskočit" + +#: templates/welcomeview.html:23 +#, approved +msgid "New here?" +msgstr "Jste nováček?" + +#: templates/welcomeview.html:27 +#, approved +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide " +"and the official wiki in general, are a great place to learn. Keep in mind " +"that some articles on the wiki at large were written for Twine 1, which is a " +"little bit different than this version. But most of the concepts are the " +"same." +msgstr "" +"Pokud jste Twine nikdy nepoužil, pak vítejte! Twine 2 průvodce a " +"oficiální wiki jsou obecně nejlepšími místy, jak se něco naučit. Veďte ovšem " +"v patrnosti, že některé články na wiki jsou většinou vytvořeny pro Twine " +"verze 1, jež se trochu liší od stávající verze. Většina konceptů je však " +"shodná." + +#: templates/welcomeview.html:31 +#, approved +msgid "" +"You can also get help over at the Twine forum, too." +msgstr "" +"Pomoc můžete také získat na Twine fóru." + +#: templates/welcomeview.html:35 +#, approved +msgid "" +"If you have used Twine 1 before, the guide also has details " +"on what has changed in this version. Chief among them is a new default story " +"format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, " +"try using SugarCube instead." +msgstr "" +"Pokud jste Twine 1 již předtím používali, najdete v " +"průvodci i popis toho, co bylo v nové verzi změněno. Hlavní změnou je asi " +"výchozí formát příběhu Harlowe. Pokud ale dáváte přednost skriptovací " +"syntaxi Twine 1, použijte místo toho SugarCube." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 +#: templates/welcomeviewnw.html:23 +#, approved +msgid "OK" +msgstr "OK" + +#: templates/welcomeview.html:47 +#, approved +msgid "Your work is saved only in your browser." +msgstr "Vaše práce je uložena pouze v prohlížeči." + +#: templates/welcomeview.html:51 +#, approved +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"To znamená, že není nutno vytvářet účet pro používání Twine 2 a všechno co " +"vytvoříte, není ukládáno někam na server — zůstává to ve vašem " +"prohlížeči. " + +#: templates/welcomeview.html:55 +#, approved +msgid "" +"Two very important things to remember, though. Since your work is " +"saved only in your browser, if you clear its saved data, then you'll lose " +"your work! Not good. Remember to use that  Archive button often. You can also publish " +"individual stories to files using the menu on " +"each story in the story list. Both archive and story files can always be re-" +"imported into Twine." +msgstr "" +"Musíte si zapamatovat dvě velmi důležité věci. Protože je vaše práce " +"ukládána pouze ve vašem prohlížeči a pokud vyčistíte jeho uložená data, o " +"všechnu práci přijdete! To není dobré. Naučte se prostě využívat častěji " +"tlačítko  Archiv. " +"Můžete také zveřejnit jednotlivé příběhy do souboru s využitím nabídky na každém příběhu v seznamu příběhů. Jak archiv tak " +"soubor s příběhem mohou být kdykoliv importovány do Twine." + +#: templates/welcomeview.html:59 +#, approved +msgid "" +"Secondly, anyone who can use this browser can see and make changes to " +"your work. So if you've got a nosy kid brother, look into setting up a " +"separate profile for yourself." +msgstr "" +"Dále, kdokoliv, kdo může využívat váš internetový prohlížeč pak může " +"vidět a provádět změny ve vaší práci.. Pokud například máte \"dětinského" +"\" bratra, podívejte se radši do nastavení prohlížeče a vytvořte si váš " +"oddělený profil." + +#: templates/welcomeview.html:71 +#, approved +msgid "That's it!" +msgstr "A to je vše!" + +#: templates/welcomeview.html:75 +#, approved +msgid "Thanks for reading, and have fun with Twine." +msgstr "Děkuji za pozornost a přeji vám mnoho legrace s Twine." + +#: templates/welcomeview.html:79 +#, approved +msgid "Go to the Story List" +msgstr "Přejít na seznam příběhů" + +#: templates/welcomeviewnw.html:7 +#, approved +msgid "Your work is automatically saved." +msgstr "Vaše práce je automaticky ukládána." + +#: templates/welcomeviewnw.html:11 +#, approved +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the Show " +"Library item in the Twine menu." +msgstr "" +"Ve vaší složce dokumentů je nyní složka Twine. Uvnitř je složka s příběhy, " +"kam se ukládá vaše rozpracovaná práce. Twine vše průběžně ukládá, takže se o " +"to nemusíte nějak zvlášť starat. Složku s uloženými příběhy můžete kdykoliv " +"zobrazit s pomocí položky Zobrazit knihovnu z nabídky aplikace " +"Twine." + +#: templates/welcomeviewnw.html:15 +#, approved +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Protože Twine vaši práci neustále ukládá, budou všechny soubory ve složce s " +"příběhy uzamčeny s nemožností zápisu, pokud je Twine otevřeno." + +#: templates/welcomeviewnw.html:19 +#, approved +msgid "" +"If you'd like to open a Twine story file you received from someone else, you " +"can import it into your library using the " +"Import From File link in the story list." +msgstr "" +"Pokud chcete otevřít soubor s Twine příběhem od někoho jiného, můžete jej " +"naimportovat do knihovny použitím odkazu " +"Importovat ze souboru v seznamu příběhů." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:226 +#, approved +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” nemůže být uložen (%2$s)." + +#. L10n: %s is the error message. +#: js/app.js:283 +#, javascript-format +#, approved +msgid "An error occurred while publishing your story. (%s)" +msgstr "Při zveřejnění příběhu se vyskytla chyba. (%s)" + +#: js/app.js:314 +#, approved +msgid "Twine Archive.html" +msgstr "Twine Archive.html" + +#. L10n: An internal error. %s is a bad sort criterion. +#: js/collections/storycollection.js:35 +#, javascript-format +#, approved +msgid "don't know how to sort stories by %s" +msgstr "není možné řadit příběhy dle %s" + +#: js/models/passage.js:19 +#, approved +msgid "Untitled Passage" +msgstr "Nepojmenovaná místnost" + +#: js/models/passage.js:21 +#, approved +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Klikněte na místnost a poté můžete zahájit úpravy skrz ikonu tužky." + +#: js/models/passage.js:22 +#, approved +msgid "Double-click this passage to edit it." +msgstr "Pro úpravu místnosti na ní dvakrát klikněte." + +#: js/models/passage.js:78 +#, approved +msgid "You must give this passage a name." +msgstr "Místnost musíte pojmenovat." + +#: js/models/passage.js:85 +#, javascript-format +#, approved +msgid "" +"There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "" +"Místnost pojmenovaná \"%s\" již existuje. Použijte jiné unikátní jméno." + +#: js/models/story.js:16 +#, approved +msgid "Untitled Story" +msgstr "Nepojmenovaný příběh" + +#: js/models/story.js:112 +#, approved +msgid "There is no starting point set for this story." +msgstr "Tento příběh nemá nastaven počáteční bod." + +#: js/models/story.js:115 +#, approved +msgid "The passage set as starting point for this story does not exist." +msgstr "Místnost, která je nastavena jako počáteční bod příběhu, neexistuje." + +#: js/models/storyformat.js:38 +#, approved +msgid "Untitled Story Format" +msgstr "Nepojmenovaný formát příběhu" + +#: js/nwui.js:81 +#, approved +msgid "Toggle Fullscreen" +msgstr "Přepnout na celou obrazovku" + +#: js/nwui.js:100 +#, approved +msgid "Quit" +msgstr "Ukončit" + +#: js/nwui.js:115 +#, approved +msgid "Edit" +msgstr "Upravit" + +#: js/nwui.js:120 +#, approved +msgid "Undo" +msgstr "Zpět" + +#: js/nwui.js:132 +#, approved +msgid "Cut" +msgstr "Vyjmout" + +#: js/nwui.js:142 +#, approved +msgid "Copy" +msgstr "Kopírovat" + +#: js/nwui.js:152 +#, approved +msgid "Paste" +msgstr "Vložit" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 +#: js/views/storyeditview/storyeditview.js:126 +#, approved +msgid "Delete" +msgstr "Smazat" + +#: js/nwui.js:182 +#, approved +msgid "Show Library" +msgstr "Zobrazit knihovnu" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:239 +#, approved +msgid "/Documents" +msgstr "/Documents" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:249 js/nwui.js:250 +#, approved +msgid "/My\\ Documents" +msgstr "/My\\ Documents" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:260 js/nwui.js:264 +#, approved +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:260 +#, approved +msgid "/Stories" +msgstr "/Stories" + +#. L10n: %s is the error message. +#: js/nwui.js:430 +#, javascript-format +#, approved +msgid "An error occurred while saving your story (%s)." +msgstr "Při ukládání příběhu se vyskytla chyba (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:457 +#, javascript-format +#, approved +msgid "An error occurred while deleting your story (%s)." +msgstr "Při mazání příběhu se vyskytla chyba (%s)." + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:527 +#, javascript-format +#, approved +msgid "An error occurred while locking your library (%s)." +msgstr "Při zamykání knihovny se vyskytla chyba (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#: js/nwui.js:556 +#, javascript-format +#, approved +msgid "An error occurred while unlocking your library (%s)." +msgstr "Při odemykání knihovny se vyskytla chyba (%s)." + +#. L10n: An internal error message related to UI components. +#: js/ui.js:166 +#, javascript-format +#, approved +msgid "Don't know how to do bubble action %s" +msgstr "Není možno provést akci %s" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:219 +#, javascript-format +#, approved +msgid "Don't know how to do collapse action %s" +msgstr "Není možno rozbalit akci %s" + +#. L10n: An internal error when changing locale. +#: js/views/localeview.js:27 +#, javascript-format +#, approved +msgid "Can't set locale to nonstring: %s" +msgstr "Nelze přiřadit jazykové nastavení na špatný řetězec: %s" + +#: js/views/storyeditview/editors/passageeditor.js:120 +#: js/views/storyeditview/storyeditview.js:563 +#, javascript-format +#, approved +msgid "Editing “%s”" +msgstr "Upravuji “%s”" + +#: js/views/storyeditview/editors/passageeditor.js:211 +#, approved +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "Změny v místnosti, kterou upravujete, ještě nebyly uloženy. " + +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +#, approved +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d místnost odpovídá kritériím." +msgstr[1] "%d místnosti odpovídají kritériím." +msgstr[2] "%d místností odpovídá kritériím." + +#: js/views/storyeditview/modals/searchmodal.js:102 +#, approved +msgid "No matching passages found." +msgstr "Nebyly nalezeny žádné odpovídající místnosti." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +#, approved +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "Bylo provedeno %d nahrazení v " +msgstr[1] "Byla provedena %d nahrazení v" +msgstr[2] "Bylo provedeno %d nahrazení v" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +#, approved +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d místnost" +msgstr[1] "%d místnosti" +msgstr[2] "%d místností" + +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +#, approved +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +#, approved +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Znak" +msgstr[1] "Znaky" +msgstr[2] "Znaků" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +#, approved +msgid "Word" +msgid_plural "Words" +msgstr[0] "Slovo" +msgstr[1] "Slova" +msgstr[2] "Slov" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +#, approved +msgid "Link" +msgid_plural "Links" +msgstr[0] "Odkaz" +msgstr[1] "Odkazy" +msgstr[2] "Odkazů" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +#, approved +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Špatný odkaz" +msgstr[1] "Špatné odkazy" +msgstr[2] "Špatných odkazů" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 +#: js/views/storylistview/modals/formatsmodal.js:74 +#, approved +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "Formát příběhu “%1$s” nemůže být nahrán (%2$s)." + +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +#, approved +msgid "Are you sure you want to delete “%s”? " +msgstr "Skutečně chcete vymazat “%s”? " + +#: js/views/storyeditview/passageitemview.js:169 +#, approved +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "(Při mazání stiskněte klávesu Shift pro přeskočení této zprávy.)" + +#. L10n: An internal error related to handling user input. +#: js/views/storyeditview/passageitemview.js:461 +#, approved +msgid "Don't see either mouse or touch coordinates on event" +msgstr "Není možné získat souřadnice myši nebo dotyku v události" + +#. L10n: An internal error related to user input. +#: js/views/storyeditview/passageitemview.js:523 +#, approved +msgid "Couldn't find original touch ID in movement event" +msgstr "Nelze najít unikátní touch ID v pohybové události" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 +#: js/views/storyeditview/storyeditview.js:64 +#, javascript-format +#, approved +msgid "A problem occurred while saving your changes (%s)." +msgstr "Při ukládání změn se vyskytl problém (%s)." + +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +#, approved +msgid "Are you sure you want to delete this passage?" +msgid_plural "" +"Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "Skutečně chcete vymazat tuto místnost?" +msgstr[1] "" +"Skutečně chcete vymazat tyto %d místnosti? Operaci nelze vrátit zpět." +msgstr[2] "" +"Skutečně chcete vymazat těchto %d místností? Operaci nelze vrátit zpět." + +#: js/views/storyeditview/storyeditview.js:268 +#, approved +msgid "This story does not have a starting point. " +msgstr "Tento příběh nemá žádný počáteční bod. " + +#: js/views/storyeditview/storyeditview.js:282 +#, approved +msgid "" +"Refreshed the playable version of your story in the previously-opened tab or " +"window." +msgstr "" +"Hratelná verze příběhu byla aktualizována v již dříve otevřené záložce nebo " +"okně." + +#: js/views/storyeditview/storyeditview.js:312 +#: js/views/storyeditview/storyeditview.js:352 +#: js/views/storylistview/storyitemview.js:110 +#, approved +msgid "" +"This story does not have a starting point. Use the icon on a passage to set this." +msgstr "" +"Tento příběh nemá žádný počáteční bod. Pro jeho nastavení použijte ikonu dostupnou v místnosti." + +#: js/views/storyeditview/storyeditview.js:325 +#, approved +msgid "" +"Refreshed the test version of your story in the previously-opened tab or " +"window." +msgstr "" +"Testovací verze příběhu byla aktualizována v již dříve otevřené záložce nebo " +"okně." + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a localized date and time +#: js/views/storyeditview/storyeditview.js:573 +#: js/views/storyeditview/toolbar.js:94 +#, javascript-format +#, approved +msgid "Last saved at %s" +msgstr "Naposledy uloženo %s" + +#: js/views/storylistview/modals/formatsmodal.js:137 +#, approved +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "Formát příběhu v %1$s nemůže být přidán (%2$s)." + +#. L10n: An internal error related to story formats. +#: js/views/storylistview/modals/formatsmodal.js:246 +#, approved +msgid "Don't know what kind of format to set as default" +msgstr "Není možné určit výchozí formát" + +#: js/views/storylistview/storagequota.js:21 +#: js/views/storylistview/storagequota.js:44 +#: js/views/storylistview/storagequota.js:49 +#, javascript-format +#, approved +msgid "%d%% space available" +msgstr "K dispozici %d%% místa" + +#: js/views/storylistview/storyitemview.js:80 +#: js/views/storylistview/storyitemview.js:94 +#, approved +msgid "" +"This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "" +"Tento příběh nemá žádný počáteční bod. Upravte jej a pak použijte ikonu dostupnou v příběhu." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +#, approved +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "Skutečně chcete vymazat “%s”? Operaci nelze vrátit zpět." + +#: js/views/storylistview/storyitemview.js:125 +#, approved +msgid "Delete Forever" +msgstr "Smazat trvale" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +#, approved +msgid "What should “%s” be renamed to?" +msgstr "Jak má být “%s” přejmenován?" + +#: js/views/storylistview/storyitemview.js:138 +#, approved +msgid "Rename" +msgstr "Přejmenovat" + +#: js/views/storylistview/storyitemview.js:155 +#, approved +msgid "What should the duplicate be named?" +msgstr "Jak se má duplikát jmenovat?" + +#: js/views/storylistview/storyitemview.js:156 +#, approved +msgid "Duplicate" +msgstr "Duplikovat" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +#, approved +msgid "%s Copy" +msgstr "%s kopie" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +#, approved +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "%d příběh byl importován." +msgstr[1] "%d příběhy byly importovány." +msgstr[2] "%d příběhů bylo importováno." + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +#, approved +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d příběh" +msgstr[1] "%d příběhy" +msgstr[2] "%d příběhů" \ No newline at end of file diff --git a/src/locale/po/da.po b/src/locale/po/da.po new file mode 100755 index 000000000..608ce47c4 --- /dev/null +++ b/src/locale/po/da.po @@ -0,0 +1,823 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.11\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: da\n" + +#: src/dialogs/about/index.html +msgid "About Twine" +msgstr "Om Twine" + +#: src/dialogs/about/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine er et open-source værktøj til at fortælle interaktive, ikke-lineære " +"historier." + +#: src/dialogs/about/index.html +msgid "" +"This application is released under the \\x3ca href=\"http:\\/\\/www.gnu.org/" +"licenses/gpl-3.0.html\">GPL v3\\x3c/a> license, but any work created with it " +"may be released under any terms, including commercial ones." +msgstr "" +"Dette program er udgivet under \\x3ca href=\"http:\\/\\/www.gnu.org/licenses/" +"gpl-3.0.html\">GPL v3\\x3c/a> licensen, men alle værker skabt med det må " +"udgives under alle slags vilkår, inklusiv kommercielle." + +#: src/dialogs/about/index.html +msgid "Help Twine Grow With A Donation" +msgstr "Hjælp Twine med at vokse ved at give en donation" + +#: src/dialogs/about/index.html +msgid "Source Code Repository" +msgstr "Kildekodearkiv" + +#: src/dialogs/about/index.html +msgid "Translations" +msgstr "Oversættelser" + +#: src/dialogs/about/index.html +msgid "Libraries" +msgstr "Biblioteker" + +#: src/dialogs/about/index.html +msgid "Fonts" +msgstr "Fonte" + +#: src/dialogs/about/index.html +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for \\x3ca href=\"http:\\/\\/adobe.com/\">Adobe" +"\\x3c/a>\\x3cbr> Nunito was designed by \\x3ca href=\"http:\\/\\/code." +"newtypography.co.uk/\">Vernon Adams\\x3c/a>" +msgstr "" +"Source Sans Pro og Source Code Pro er designet af Paul D. Hunt under " +"vejledning af Robert Slimbach for \\x3ca href=\"http:\\/\\/adobe.com/" +"\">Adobe\\x3c/a>\\x3cbr> Nunito er designet af \\x3ca href=\"http:\\/\\/code." +"newtypography.co.uk/\">Vernon Adams\\x3c/a>" + +#: src/dialogs/about/index.html +msgid "Icons" +msgstr "Ikoner" + +#: src/dialogs/about/index.html +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Document er designet af Rob Gill fra The Noun Project" + +#: src/dialogs/about/index.html +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Question er designet af Henry Ryder fra The Noun Project" + +#: src/dialogs/about/index.html +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Smile er designet af jelio dimitrov fra The Noun Project" + +#: src/dialogs/app-donation/index.html +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Hvis du elsker Twine så meget som jeg gør, så overvej venligst at hjælpe det " +"med at vokse med en donation. Twine er et open-source værktøj, der altid vil " +"være gratis at bruge og med din hjælp vil Twine fortsætte med at trives." + +#: src/dialogs/app-donation/index.html +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, Twine skaber" + +#: src/dialogs/app-donation/index.html +msgid "No Thanks" +msgstr "Nej tak" + +#: src/dialogs/app-donation/index.html +msgid "Donate" +msgstr "Donér" + +#: src/dialogs/app-donation/index.html +msgid "" +"This message will only be shown to you once.<br>If you'd like to " +"donate to Twine development in the future, you can do so at <a href=" +"\"http:\\/\\/twinery.org/donate\" target=\"_blank\">http://twinery.org/" +"donate</a>." +msgstr "" +"Denne besked vil kun blive vist én gang.<br>Hvis du ønsker at donere " +"til udviklingen af Twine i fremtiden kan det gøres på <a href=\"http:\\/" +"\\/twinery.org/donate\" target=\"_blank\">http://twinery.org/donate</" +"a>." + +#: src/dialogs/formats/index.html +msgid "Story Formats" +msgstr "Historieformater" + +#: src/dialogs/formats/index.html +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Historieformater styrer udseende og opførsel af historier når der spilles." + +#: src/dialogs/formats/index.html +msgid "Use as Default" +msgstr "Anvend som standard" + +#: src/dialogs/formats/index.html +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Korrekturformater skaber versioner af historier skræddersyet til redigering " +"og korrekturlæsning." + +#: src/dialogs/formats/index.html +msgid "Use" +msgstr "Anvend" + +#: src/dialogs/formats/index.html src/story-list-view/list-toolbar/index.js +msgid "Add" +msgstr "Tilføj" + +#: src/dialogs/formats/index.html src/dialogs/story-format/index.html +msgid "Loading..." +msgstr "Indhenter..." + +#: src/dialogs/formats/item.html +msgid "Set this format as default for stories" +msgstr "Sæt dette format som standard for historier" + +#: src/dialogs/formats/item.html +msgid "Remove this format" +msgstr "Fjern dette format" + +#: src/dialogs/story-format/index.html +msgid "Story Format" +msgstr "Historieformat" + +#: src/dialogs/story-format/index.html +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Historieformatet bestemmer udseende og opførsel af din historie når den " +"spilles." + +#: src/dialogs/story-import/index.html +#: src/story-list-view/list-toolbar/index.html +msgid "Import From File" +msgstr "Importér fra fil" + +#: src/dialogs/story-import/index.html +msgid "Import this file:" +msgstr "Importér denne fil:" + +#: src/dialogs/story-import/index.html src/dialogs/confirm/index.js +#: src/dialogs/prompt/index.js +msgid "Cancel" +msgstr "Afbryd" + +#: src/dialogs/story-import/index.html +msgid "Working..." +msgstr "Arbejder..." + +#: src/dialogs/story-import/index.html +msgid "" +"Some stories you are importing already exist in your library. Please choose " +"which to replace. Any other stories in your file will be imported as well." +msgstr "" +"Nogle af de historier du importerer findes allerede i dit bibliotek. Vælg " +"venligst hvilke der skal erstattes. Alle andre historier i din fil vil også " +"blive importeret." + +#: src/dialogs/story-import/index.html +msgid "Don't Import Any Stories" +msgstr "Importér ikke nogen historier" + +#: src/dialogs/story-search/index.html +msgid "Find and Replace" +msgstr "Søg og erstat" + +#: src/dialogs/story-search/index.html +msgid "Search For" +msgstr "Søg efter" + +#: src/dialogs/story-search/index.html +msgid "Include passage names" +msgstr "Inkludér passagenavne" + +#: src/dialogs/story-search/index.html +msgid "Match case" +msgstr "Match små og store bogstaver" + +#: src/dialogs/story-search/index.html +msgid "Regular expression" +msgstr "Regulært udtryk" + +#: src/dialogs/story-search/index.html +msgid "Replace With" +msgstr "Erstat med" + +#: src/dialogs/story-search/index.html +msgid "Expand all search results" +msgstr "Udvid alle søgeresultater" + +#: src/dialogs/story-search/index.html +msgid "Collapse all search results" +msgstr "Fold alle søgeresultater sammen" + +#: src/dialogs/story-search/index.html +msgid "Replace All" +msgstr "Erstat alle" + +#: src/dialogs/story-search/index.html +msgid "%d passage matches." +msgid_plural "%d passage matches." +msgstr[0] "%d passage matcher." +msgstr[1] "%d passager matcher." + +#: src/dialogs/story-search/index.html +msgid "Searching..." +msgstr "Søger..." + +#: src/dialogs/story-search/result.html +msgid "%d match" +msgid_plural "%d match" +msgstr[0] "%d match" +msgstr[1] "%d match" + +#: src/dialogs/story-search/result.html +msgid "Replace in this passage" +msgstr "Erstat i denne passage" + +#: src/dialogs/story-search/result.html +msgid "Replace in Passage" +msgstr "Erstat i passage" + +#: src/dialogs/story-stats/index.html +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Story Statistics" +msgstr "Historiestatistikker" + +#: src/editors/javascript/index.html +msgid "JavaScript" +msgstr "JavaScript" + +#: src/editors/javascript/index.html +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Javascript indtastet her vil blive kørt med det samme når din historie åbnes " +"i en browser." + +#: src/editors/passage/index.html +msgid "Passage Name" +msgstr "Navn på passage" + +#: src/editors/passage/index.html +msgid "A passage already exists with this name." +msgstr "Der findes allerede en passage med dette navn" + +#: src/editors/passage/tag-editor.html +msgid "Tag" +msgstr "Mærkat" + +#: src/editors/passage/tag-editor.html +msgid "Tag name" +msgstr "Navn på mærkat" + +#: src/editors/stylesheet/index.html +msgid "Stylesheet" +msgstr "Stylesheet" + +#: src/editors/stylesheet/index.html +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "CSS indtastet her vil overskrive standardudseendet på din historie." + +#: src/locale/view/index.html +msgid "Please choose which language you would like to use with Twine." +msgstr "Vælg hvilket sprog du ønsker at bruge med Twine." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Hi!" +msgstr "Hej!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twne er et open-source værktøj til at fortælle interaktive, ikke-lineære " +"historier. Der er et par ting du bør vide inden du starter." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Tell Me More" +msgstr "Fortæl mig mere" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Skip" +msgstr "Skip" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "New here?" +msgstr "Er du ny her?" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\"http://twinery.org/2guide\" target=\"_blank\">" +"Twine 2 Guide</a> and the official wiki in general, are a great place " +"to learn. Keep in mind that some articles on the wiki at large were written " +"for Twine 1, which is a little bit different than this version. But most of " +"the concepts are the same." +msgstr "" +"<strong>Hvis du aldrig har brugt Twine før,</strong> så " +"velkommen! <a href=\"http://twinery.org/2guide\" target=\"_blank\">" +"Twine 2 Guiden</a> og den officielle wiki i det hele taget, er et " +"fremragende sted at lære. Husk på at nogle artikler på wiki'en er skrevet " +"til Twine 1, som er en smule anderledes end denne version. Men i det store " +"hele er koncepterne de samme." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"You can also get help over at the <a href=\"http://twinery.org/forum\" " +"target=\"_blank\">Twine forum, too." +msgstr "" +"Du kan også få hjælp i <a href=\"http://twinery.org/forum\" target=" +"\"_blank\">Twine forummet" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"<strong>If you have used Twine 1 before,</strong> the guide also " +"has details on what has changed in this version. Chief among them is a new " +"default story format, Harlowe. But if you find you prefer the Twine 1 " +"scripting syntax, try using SugarCube instead." +msgstr "" +"<strong>Hvis du har brugt Twine 1 før,</strong> så indeholder " +"denne guide også detaljer om hvad der er nyt i denne version. Først og " +"fremmest er der et nyt standard historieformat, Harlowe. Men hvis du " +"foretrækker syntaksen i Twine 1 scripts, så prøv at bruge SugarCube i stedet." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "OK" +msgstr "Ok" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "Your work is automatically saved." +msgstr "Dit arbejde gemmes automatisk." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the <b>Show " +"Library</b> item in the <b>Twine</b> menu." +msgstr "" +"Der er nu en folder der hedder Twine i din Dokumenter. I den er der en " +"folder der hedder Historier, hvor al dit arbejde bliver gemt. Twine gemmer " +"mens du arbejder så du behøver ikke at bekymre dig om at gemme selv. Du kan " +"altid åbne mappen dine historier er gemt i ved at bruge <b>Vis " +"Bibliotek</b> knappen i <b>Twine</b> menuen." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Da Twine altid gemmer dit arbejde er filerne i dit historiebibliotek låst så " +"længe Twine er åben." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "That's it!" +msgstr "Det var alt!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Thanks for reading, and have fun with Twine." +msgstr "Tak fordi du læste og god fornøjelse med Twine." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Go to the Story List" +msgstr "Gå til historielisten" + +#: src/story-edit-view/passage-item/passage-menu/index.html +msgid "Test story starting here" +msgstr "Test historien herfra" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Go to the story list" +msgstr "Gå til historielisten" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Show only story structure" +msgstr "Vis kun historiestruktur" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Show only passage titles" +msgstr "Vis kun titler på passager" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Show passage titles and excerpts" +msgstr "Vis kun passagetitler og uddrag" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play this story in test mode" +msgstr "Spil denne historie i testtilstand" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Test" +msgstr "Test" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play this story" +msgstr "Spil denne historie" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play" +msgstr "Spil" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Add a new passage" +msgstr "Tilføj ny passage" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Passage" +msgstr "Passage" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story JavaScript" +msgstr "Redigér historiens JavaScript" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story Stylesheet" +msgstr "Redigér historiens Stylesheet" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Change Story Format" +msgstr "Ændr historieformat" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Rename Story" +msgstr "Omdøb historie" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Snap to Grid" +msgstr "Fastgør til gitter" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "View Proofing Copy" +msgstr "Vis korrekturkopi" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Publish to File" +msgstr "Udgiv som fil" + +#: src/story-edit-view/story-toolbar/story-search/index.html +msgid "Quick Find" +msgstr "Hurtig søgning" + +#: src/story-edit-view/story-toolbar/story-search/index.html +msgid "Find and replace across the entire story" +msgstr "Søg og erstat i hele historien" + +#: src/story-list-view/index.html +msgid "Drop a story file to import" +msgstr "Træk og slip historiefil for at importere" + +#: src/story-list-view/index.html +msgid "Sort By" +msgstr "Sorter efter" + +#: src/story-list-view/index.html +msgid "Last changed date" +msgstr "Dato for sidste ændring" + +#: src/story-list-view/index.html +msgid "Edit Date" +msgstr "Redigér dato" + +#: src/story-list-view/index.html +msgid "Story name" +msgstr "Historienavn" + +#: src/story-list-view/index.html +msgid "Name" +msgstr "Navn" + +#: src/story-list-view/index.html +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Der er ingen historier gemt i Twine lige nu. For at begynde kan du enten " +"oprette en ny historie eller importere en eksisterende fra en fil." + +#: src/story-list-view/list-toolbar/index.html src/nw/directories.js +#: src/nw/menus.js +msgid "Twine" +msgstr "Twine" + +#: src/story-list-view/list-toolbar/index.html +msgid "Create a brand-new story" +msgstr "Opret en splinterny historie" + +#: src/story-list-view/list-toolbar/index.html +msgid "Story" +msgstr "Historie" + +#: src/story-list-view/list-toolbar/index.html +msgid "Import a published story or Twine archive" +msgstr "Importér en udgivet historie eller et Twine arkiv" + +#: src/story-list-view/list-toolbar/index.html +msgid "Save all stories to a Twine archive file" +msgstr "Gem alle historier til en Twine arkivfil" + +#: src/story-list-view/list-toolbar/index.html +msgid "Archive" +msgstr "Arkiv" + +#: src/story-list-view/list-toolbar/index.html +msgid "Work with story and proofing formats" +msgstr "Arbejd med historie- og korrekturformater" + +#: src/story-list-view/list-toolbar/index.html +msgid "Formats" +msgstr "Formater" + +#: src/story-list-view/list-toolbar/index.html +msgid "Change the language Twine uses" +msgstr "Ændr det sprog Twine bruger" + +#: src/story-list-view/list-toolbar/index.html +msgid "Language" +msgstr "Sprog" + +#: src/story-list-view/list-toolbar/index.html +msgid "Browse online help" +msgstr "Gennemse online hjælp" + +#: src/story-list-view/list-toolbar/index.html +msgid "Help" +msgstr "Hjælp" + +#: src/story-list-view/list-toolbar/index.html +msgid "version" +msgstr "version" + +#: src/story-list-view/list-toolbar/index.html +msgid "Report a bug" +msgstr "Rapportér en fejl" + +#: src/story-list-view/list-toolbar/theme-switcher.html +msgid "Use light theme" +msgstr "Anvend lyst tema" + +#: src/story-list-view/list-toolbar/theme-switcher.html +msgid "Use dark theme" +msgstr "Anvend mørkt tema" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Play Story" +msgstr "Spil historie" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Test Story" +msgstr "Test historie" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Duplicate Story" +msgstr "Dublér historie" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Delete Story" +msgstr "Slet historie" + +#: src/welcome/index.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\"http://twinery.org/2guide\" target=\"_blank\">" +"Twine 2 Guide</a> and the official wiki in general, are a great place " +"to learn. Keep in mind that some articles on the wiki at larger were written " +"for Twine 1, which is a little bit different than this version. But most of " +"the concepts are the same." +msgstr "" +"<strong>Hvis du aldrig har brugt Twine før,</strong> så " +"velkommen! <a href=\"http://twinery.org/2guide\" target=\"_blank\">" +"Twine 2 Guiden</a> og den officielle wiki i det hele taget, er et " +"fremragende sted at lære. Husk på at nogle artikler på wiki'en er skrevet " +"til Twine 1, som er en smule anderledes end denne version. Men i det store " +"hele er koncepterne de samme." + +#: src/welcome/index.html +msgid "Your work is saved only in your browser." +msgstr "Dit arbejde er kun gemt i din browser." + +#: src/welcome/index.html +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Det betyder at du ikke behøver at oprette en ny konto for at bruge Twine 2 " +"og alt hvad du skaber er ikke gemt på en server et eller andet sted — " +"det bliver lige her i din browser." + +#: src/welcome/index.html +msgid "" +"Two <b>very important</b> things to remember, though. Since your " +"work is saved only in your browser, if you clear its saved data, then you'll " +"lose your work! Not good. Remember to use that <i class=\"fa fa-briefcase" +"\"></i> <strong>Archive</strong> button often. You " +"can also publish individual stories to files using the <i class=\"fa fa-" +"cog\"></i> menu on each story in the story list. Both archive and " +"story files can always be re-imported into Twine." +msgstr "" +"Der er dog to <b>meget vigtige</b> ting at huske. Da dit arbejde " +"kun gemmes i din browser, mister du det hele, hvis du sletter browserens " +"gemte data! Det er noget skidt. Husk at bruge <i class=\"fa fa-briefcase" +"\"></i> <strong>Arkivknappen</strong> ofte. Du kan " +"også udgive individuelle historier som filer ved at bruge <i class=\"fa " +"fa-cog\"></i> menuen på hver historie i listen. Både arkivet og " +"historiefilerne kan altid genindlæses i Twine." + +#: src/welcome/index.html +msgid "" +"Secondly, <b>anyone who can use this browser can see and make changes " +"to your work</b>. So if you've got a nosy kid brother, look into " +"setting up a separate profile for yourself." +msgstr "" +"For det andet, <b>alle der bruger denne browser kan se og ændre dit " +"arbejde</b>. Så hvis du har en nysgerrig lillebror så overvej at sætte " +"en separat profil op til dig selv." + +#: src/data/story-format.js +msgid "Untitled Story Format" +msgstr "Unavngivet historieformat" + +#: src/data/story.js +msgid "Untitled Story" +msgstr "Unavngiven historie" + +#: src/data/story.js src/story-edit-view/index.js +msgid "Untitled Passage" +msgstr "Unavngiven passage" + +#: src/data/story.js +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Tryk på denne passage og derefter på blyantikonet for at redigere den." + +#: src/data/story.js +msgid "Double-click this passage to edit it." +msgstr "Dobbeltklik på denne passage for at redigere den." + +#. The will have a version number, i.e. 2.0.6, interpolated into it. +#: src/dialogs/app-update/index.js +msgid "" +"A new version of Twine, , has been released." +msgstr "En ny udgave af Twine, , er frigivet." + +#: src/dialogs/app-update/index.js +msgid "Download" +msgstr "Download" + +#. A polite rejection of a request, in the sense that the answer may change in the future. +#: src/dialogs/app-update/index.js +msgid "Not Right Now" +msgstr "Ikke lige nu" + +#. %s is the name of an author. +#: src/dialogs/formats/item.js +msgid "by %s" +msgstr "af %s" + +#: src/dialogs/formats/item.js +msgid "Are you sure?" +msgstr "Er du sikker?" + +#: src/dialogs/formats/item.js +msgid "Remove" +msgstr "Fjern" + +#: src/dialogs/story-import/index.js +msgid "Don't Replace Any Stories" +msgstr "Erstat ikke nogen historier" + +#. Character in the sense of individual letters in a word. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js +msgid "Character" +msgid_plural "Character" +msgstr[0] "Karakter" +msgstr[1] "Karakterer" + +#. Word in the sense of individual words in a sentence. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js +msgid "Word" +msgid_plural "Word" +msgstr[0] "Ord" +msgstr[1] "Ord" + +#. Links in the sense of hypertext links. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js +msgid "Link" +msgid_plural "Link" +msgstr[0] "Link" +msgstr[1] "Links" + +#: src/editors/passage/index.js +msgid "Editing \\u201c%s\\u201d" +msgstr "Redigerer \\u201c%s\\u201d" + +#. This is the folder name on OS X, Linux, and recent versions of Windows that a user's documents are stored in, relative to the user's home directory. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. Regardless, this must have a single forward slash (/) as its first character. +#: src/nw/directories.js +msgid "/Documents" +msgstr "/Dokumenter" + +#. This is the folder name on Windows XP that a user's documents are stored in, relative to the user's home directory. This is used if a folder with the name given by the translation key '/Documents' does not exist. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. Regardless, this must have a single forward slash (/) as its first character. +#: src/nw/directories.js +msgid "My\\ Documents" +msgstr "Mine\\ Dokumenter" + +#: src/nw/directories.js +msgid "Stories" +msgstr "Historier" + +#: src/nw/menus.js +msgid "Toggle Fullscreen" +msgstr "Skift til/fra fuldskærm" + +#: src/nw/menus.js +msgid "Quit" +msgstr "Afslut" + +#: src/nw/menus.js +msgid "Edit" +msgstr "Redigér" + +#: src/nw/menus.js +msgid "Undo" +msgstr "Fortryd" + +#: src/nw/menus.js +msgid "Cut" +msgstr "Klip" + +#: src/nw/menus.js +msgid "Copy" +msgstr "Kopiér" + +#: src/nw/menus.js +msgid "Paste" +msgstr "Indsæt" + +#: src/nw/menus.js src/story-edit-view/passage-item/index.js +msgid "Delete" +msgstr "Slet" + +#: src/nw/menus.js +msgid "Show Library" +msgstr "Vis bibliotek" + +#: src/story-edit-view/story-toolbar/story-menu/index.js +#: src/story-list-view/story-item/item-menu/index.js +msgid "Rename" +msgstr "Omdøb" + +#: src/story-edit-view/story-toolbar/story-menu/index.js +#: src/story-list-view/story-item/item-menu/index.js +msgid "Please enter a name." +msgstr "Indtast et navn." + +#: src/story-list-view/list-toolbar/index.js +msgid "Twine Archive.html" +msgstr "Twine Arkiv.html" + +#: src/story-list-view/story-item/item-menu/index.js +msgid "Delete Forever" +msgstr "Slet for evigt" + +#: src/story-list-view/story-item/item-menu/index.js +msgid "What should the duplicate be named?" +msgstr "Hvad skal dubletten hedde?" + +#: src/story-list-view/story-item/item-menu/index.js +msgid "Duplicate" +msgstr "Dublér" + +#: src/story-list-view/story-item/item-menu/index.js +msgid "%s Copy" +msgstr "%s Kopiér" + +#: src/ui/quota-gauge/index.js +msgid "%d%% space available" +msgstr "%d%% plads tilgængelig" diff --git a/src/locale/po/de.po b/src/locale/po/de.po new file mode 100644 index 000000000..d075c1fa1 --- /dev/null +++ b/src/locale/po/de.po @@ -0,0 +1,1203 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2016-12-18 21:39+0100\n" +"Last-Translator: Moritz Rebbert \n" +"Language-Team: \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.11\n" + +#: src/dialogs/about/index.html +msgid "About Twine" +msgstr "Über Twine" + +#: src/dialogs/about/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine ist eine Open-Source-Software zum Erzählen interaktiver, nicht-" +"linearer Geschichten." + +#: src/dialogs/about/index.html +msgid "" +"This application is released under the \\x3ca href=\"http:\\/\\/www.gnu.org/" +"licenses/gpl-3.0.html\">GPL v3\\x3c/a> license, but any work created with it " +"may be released under any terms, including commercial ones." +msgstr "" +"Diese Anwendung ist unter der \\x3ca href=\"http:\\/\\/www.gnu.org/licenses/" +"gpl-3.0.html\">GPL v3\\x3c/a> veröffentlicht, aber ein Werk, das mit dieser " +"Anwendung erstellt wurde, darf unter einer beliebigen auch kommerziellen " +"Lizenz veröffentlich werden." + +#: src/dialogs/about/index.html +msgid "Help Twine Grow With A Donation" +msgstr "Unterstütze Twine mit Spenden" + +#: src/dialogs/about/index.html +msgid "Source Code Repository" +msgstr "Quellcode Repository" + +#: src/dialogs/about/index.html +msgid "Translations" +msgstr "Übersetzungen" + +#: src/dialogs/about/index.html +msgid "Libraries" +msgstr "Bibliotheken" + +#: src/dialogs/about/index.html +msgid "Fonts" +msgstr "Schriftarten" + +#: src/dialogs/about/index.html +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for \\x3ca href=\"http:\\/\\/adobe.com/\">Adobe" +"\\x3c/a>\\x3cbr> Nunito was designed by \\x3ca href=\"http:\\/\\/code." +"newtypography.co.uk/\">Vernon Adams\\x3c/a>" +msgstr "" +"Source Sans Pro und Source Code Pro wurden entworfen von Paul D. Hunt unter " +"der Leitung von Robert Slimbach für \\x3ca href=\"http:///\\/adobe.com/" +"\">Adobe\\x3c/a>\\x3cbr > Nunito wurde von \\x3ca href=\"http:///\\/code." +"newtypography.co.uk/\">Vernon Adams\\x3c/a > entworfen." + +#: src/dialogs/about/index.html +msgid "Icons" +msgstr "Symbole" + +#: src/dialogs/about/index.html +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Document erstellt von Rob Gill vom Noun Project" + +#: src/dialogs/about/index.html +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Question erstellt von Henry Ryder vom Noun Project" + +#: src/dialogs/about/index.html +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Smile erstellt von jelio dimitrov vom Noun Project" + +#: src/dialogs/app-donation/index.html +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Wenn dir Twine so sehr am Herzen liegt wie mir, möchtest du es vielleicht " +"mit einer Spenden unterstützen. Twine ist ein Open-Source-Projekt, das immer " +"frei zur Verfügung stehen wird und mit deiner Hilfe weiter wachsen kann." + +#: src/dialogs/app-donation/index.html +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, Schöpfer von Twine" + +#: src/dialogs/app-donation/index.html +msgid "No Thanks" +msgstr "Nein Danke" + +#: src/dialogs/app-donation/index.html +msgid "Donate" +msgstr "Spende" + +#: src/dialogs/app-donation/index.html +msgid "" +"This message will only be shown to you once.<br>If you'd like to " +"donate to Twine development in the future, you can do so at <a href=" +"\"http:\\/\\/twinery.org/donate\" target=\"_blank\">http://twinery.org/" +"donate</a>." +msgstr "" +"Diese Meldung wird nur einmal angezeigt.<br>Wenn du für die " +"Entwicklung von Twine spenden möchtest, kannst du das hier tun <a href=" +"\"http:\\/\\/twinery.org/donate\" target=\"_blank\">http://twinery.org/" +"donate</a>." + +#: src/dialogs/formats/index.html +msgid "Story Formats" +msgstr "Story-Formate" + +#: src/dialogs/formats/index.html +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Story-Formate bestimmen das Aussehen und Verhalten der Geschichte beim " +"Spielen." + +#: src/dialogs/formats/index.html +msgid "Use as Default" +msgstr "Als Standard verwenden" + +#: src/dialogs/formats/index.html +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Diese Formate erzeugen eine Version der Geschichte zum Redigieren und zur " +"Fehlersuche." + +#: src/dialogs/formats/index.html +msgid "Use" +msgstr "Verwenden" + +#: src/dialogs/formats/index.html src/story-list-view/list-toolbar/index.js +msgid "Add" +msgstr "Hinzufügen" + +#: src/dialogs/formats/index.html src/dialogs/story-format/index.html +msgid "Loading..." +msgstr "Laden..." + +#: src/dialogs/formats/item.html +msgid "Set this format as default for stories" +msgstr "Dieses Format als Standard für alle Geschichten setzen" + +#: src/dialogs/formats/item.html +msgid "Remove this format" +msgstr "Dieses Format entfernen" + +#: src/dialogs/story-format/index.html +msgid "Story Format" +msgstr "Story-Format" + +#: src/dialogs/story-format/index.html +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Das Story-Format bestimmt Aussehen und Verhalten der Geschichte beim Spielen." + +#: src/dialogs/story-import/index.html +#: src/story-list-view/list-toolbar/index.html +msgid "Import From File" +msgstr "Importieren aus Datei" + +#: src/dialogs/story-import/index.html +msgid "Import this file:" +msgstr "Diese Datei importieren:" + +#: src/dialogs/story-import/index.html src/dialogs/confirm/index.js +#: src/dialogs/prompt/index.js +msgid "Cancel" +msgstr "Abbrechen" + +#: src/dialogs/story-import/index.html +msgid "Working..." +msgstr "In Bearbeitung..." + +#: src/dialogs/story-import/index.html +msgid "" +"Some stories you are importing already exist in your library. Please choose " +"which to replace. Any other stories in your file will be imported as well." +msgstr "" +"Einige Stories existieren schon in deiner Sammlung. Bitte wähle aus, welche " +"ersetzt werden sollen. Alle anderen Stories in der Datei werden nicht " +"importiert. " + +#: src/dialogs/story-import/index.html +msgid "Don't Import Any Stories" +msgstr "Keine Geschichte importieren" + +#: src/dialogs/story-search/index.html +msgid "Find and Replace" +msgstr "Suchen und ersetzen" + +#: src/dialogs/story-search/index.html +msgid "Search For" +msgstr "Suchen nach" + +#: src/dialogs/story-search/index.html +msgid "Include passage names" +msgstr "Absatznamen berücksichtigen" + +#: src/dialogs/story-search/index.html +msgid "Match case" +msgstr "Groß-/Kleinschreibung beachten" + +#: src/dialogs/story-search/index.html +msgid "Regular expression" +msgstr "Regulärer Ausdruck" + +#: src/dialogs/story-search/index.html +msgid "Replace With" +msgstr "Ersetzen durch" + +#: src/dialogs/story-search/index.html +msgid "Expand all search results" +msgstr "Alle Ergebnisse ausklappen" + +#: src/dialogs/story-search/index.html +msgid "Collapse all search results" +msgstr "Alle Ergebnisse einklappen" + +#: src/dialogs/story-search/index.html +msgid "Replace All" +msgstr "Alle ersetzen" + +#: src/dialogs/story-search/index.html +#, fuzzy +msgid "%d passage matches." +msgid_plural "%d passage matches." +msgstr[0] "%d Absatz erfüllt die Anfrage." +msgstr[1] "%d Absätze erfüllen die Anfrage." + +#: src/dialogs/story-search/index.html +msgid "Searching..." +msgstr "Suche läuft..." + +#: src/dialogs/story-search/result.html +#, fuzzy +msgid "%d match" +msgid_plural "%d match" +msgstr[0] "%d Treffer" +msgstr[1] "%d Treffer" + +#: src/dialogs/story-search/result.html +msgid "Replace in this passage" +msgstr "Ersetzen in diesem Absatz" + +#: src/dialogs/story-search/result.html +msgid "Replace in Passage" +msgstr "Ersetzen im Absatz" + +#: src/dialogs/story-stats/index.html +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Story Statistics" +msgstr "Statistik zur Geschichte" + +#: src/editors/javascript/index.html +msgid "JavaScript" +msgstr "JavaScript" + +#: src/editors/javascript/index.html +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"JavaScript, das hier steht, wird ausgeführt, sobald die Geschichte im " +"Browser geöffnet ist." + +#: src/editors/passage/index.html +msgid "Passage Name" +msgstr "Name des Absatzes" + +#: src/editors/passage/index.html +msgid "A passage already exists with this name." +msgstr "Es gibt schon einen Absatz mit diesem Namen" + +#: src/editors/passage/tag-editor.html +msgid "Tag" +msgstr "Tag" + +#: src/editors/passage/tag-editor.html +msgid "Tag name" +msgstr "Name des Tags" + +#: src/editors/stylesheet/index.html +msgid "Stylesheet" +msgstr "Stylesheet" + +#: src/editors/stylesheet/index.html +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "" +"Jedes CSS an dieser Stelle überschreibt das Standard-Aussehen der Geschichte." + +#: src/locale/view/index.html +msgid "Please choose which language you would like to use with Twine." +msgstr "Bitte wähle die Sprache, in der du Twine verwenden möchtest." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Hi!" +msgstr "Hallo!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twine ist eine Open-Source-Software zum Erzählen interaktiver, nicht-" +"linearer Geschichten. Ein paar Dinge solltest du wissen, bevor du starten " +"kannst." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Tell Me More" +msgstr "Mehr erfahren" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Skip" +msgstr "Überspringen" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "New here?" +msgstr "Neu hier?" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\"http://twinery.org/2guide\" target=\"_blank\">" +"Twine 2 Guide</a> and the official wiki in general, are a great place " +"to learn. Keep in mind that some articles on the wiki at large were written " +"for Twine 1, which is a little bit different than this version. But most of " +"the concepts are the same." +msgstr "" +"<strong>Wenn du Twine noch nie benutzt hast:</strong> Herzlich " +"Wilkommen! <a href=\"http://twinery.org/2guide\" target=\"_blank\">" +"Twine 2 Guide</a> und das offizielle Wiki allgemein helfen dir beim " +"Einstieg. Denk daran, dass einige Artikel im Wiki für Twine 1 geschrieben " +"wurden. Twine 1 verhält sich eine wenig anders als diese Version. Aber die " +"meisten Konzepte sind die selben." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"You can also get help over at the <a href=\"http://twinery.org/forum\" " +"target=\"_blank\">Twine forum, too." +msgstr "" +"Hilfe findest du auch im <a href=\"http://twinery.org/forum\" target=" +"\"_blank\">Twine Forum</a>." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"<strong>If you have used Twine 1 before,</strong> the guide also " +"has details on what has changed in this version. Chief among them is a new " +"default story format, Harlowe. But if you find you prefer the Twine 1 " +"scripting syntax, try using SugarCube instead." +msgstr "" +"<strong>Wenn du Twine schon einmal verwendet hast,</strong> " +"enthält die Anleitung Hinweise, was sich in dieser Version geändert hat. " +"Hervorzuheben ist hierbei das neue Standard-Story-Format Harlowe. Wenn du " +"die Twine 1 Syntax bevorzugst, dann bietet SugarCube einen guten Einstieg." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "OK" +msgstr "OK" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "Your work is automatically saved." +msgstr "Deine Arbeit wird automatisch gespeichert." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the <b>Show " +"Library</b> item in the <b>Twine</b> menu." +msgstr "" +"Es gibt nun einen Twine-Ordner in deinem Dokumente-Ordner. Dieser enthält " +"einen Stories-Ordner, indem deine Geschichten gespeichert werden. Twine " +"speichert automatisch beim Schreiben der Story, du musst nicht explizit " +"speichern. Um den Ordner zu öffnen, indem deine Stories gesichert werden, " +"verwende <b>Sammlung Anzeigen</b> im <b>Twine</b>-" +"Menü." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Da Twine deine Fortschritte regelmäßig speichert, sind die Dateien in deiner " +"Sammlung gesperrt so lange Twine geöffnet ist." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "That's it!" +msgstr "Das ist alles!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Thanks for reading, and have fun with Twine." +msgstr "Danke fürs Lesen und viel Spass mit Twine." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Go to the Story List" +msgstr "Gehe zur Liste der Geschichten" + +#: src/story-edit-view/passage-item/passage-menu/index.html +msgid "Test story starting here" +msgstr "Test hier starten" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Go to the story list" +msgstr "Gehe zur Übersicht der Geschichten" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Show only story structure" +msgstr "Nur Struktur anzeigen" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Show only passage titles" +msgstr "Nur Titel der Absätze anzeigen" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Show passage titles and excerpts" +msgstr "Titel und Auszug der Absätze anzeigen" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play this story in test mode" +msgstr "Geschichte im Testmodus spielen" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Test" +msgstr "Testen" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play this story" +msgstr "Geschichte spielen" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play" +msgstr "Spielen" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Add a new passage" +msgstr "Neuen Absatz hinzufügen" + +#: src/story-edit-view/story-toolbar/index.html +#, fuzzy +msgid "Passage" +msgstr "Absatz" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story JavaScript" +msgstr "JavaScript der Geschichte bearbeiten" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story Stylesheet" +msgstr "Stylesheet der Geschichte bearbeiten" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Change Story Format" +msgstr "Format der Geschichte ändern" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Rename Story" +msgstr "Geschichte umbennenen" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Snap to Grid" +msgstr "Am Gitter ausrichten" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "View Proofing Copy" +msgstr "Korrekturfassung anzeigen" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Publish to File" +msgstr "Als Datei veröffentlichen" + +#: src/story-edit-view/story-toolbar/story-search/index.html +msgid "Quick Find" +msgstr "Schnellsuche" + +#: src/story-edit-view/story-toolbar/story-search/index.html +msgid "Find and replace across the entire story" +msgstr "Suchen und Ersetzen in der gesamten Geschichte" + +#: src/story-list-view/index.html +msgid "Drop a story file to import" +msgstr "Story-Datei hier ablegen. (Drag & Drop)" + +#: src/story-list-view/index.html +msgid "Sort By" +msgstr "Sortieren nach" + +#: src/story-list-view/index.html +msgid "Last changed date" +msgstr "Letztes Änderungsdatum" + +#: src/story-list-view/index.html +msgid "Edit Date" +msgstr "Änderungsdatum" + +#: src/story-list-view/index.html +msgid "Story name" +msgstr "Name der Geschichte" + +#: src/story-list-view/index.html +msgid "Name" +msgstr "Name" + +#: src/story-list-view/index.html +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Es gibt zur Zeit noch keine Geschichten in Twine. Du kannst entweder eine " +"neue Geschichte anlegen oder eine bestehende Geschichte importieren." + +#: src/story-list-view/list-toolbar/index.html src/nw/directories.js +#: src/nw/menus.js +msgid "Twine" +msgstr "Twine" + +#: src/story-list-view/list-toolbar/index.html +msgid "Create a brand-new story" +msgstr "Ganz neue Geschichte schreiben" + +#: src/story-list-view/list-toolbar/index.html +msgid "Story" +msgstr "Geschichte" + +#: src/story-list-view/list-toolbar/index.html +msgid "Import a published story or Twine archive" +msgstr "Importieren aus veröffentlichter Geschichte oder Twine-Archiv" + +#: src/story-list-view/list-toolbar/index.html +msgid "Save all stories to a Twine archive file" +msgstr "Alle Geschichten als Twine-Archiv speichern" + +#: src/story-list-view/list-toolbar/index.html +msgid "Archive" +msgstr "Archiv" + +#: src/story-list-view/list-toolbar/index.html +msgid "Work with story and proofing formats" +msgstr "Mit Geschichte und Korrekturfassung arbeiten" + +#: src/story-list-view/list-toolbar/index.html +msgid "Formats" +msgstr "Formate" + +#: src/story-list-view/list-toolbar/index.html +msgid "Change the language Twine uses" +msgstr "Anzeigesprache von Twine ändern" + +#: src/story-list-view/list-toolbar/index.html +msgid "Language" +msgstr "Sprache" + +#: src/story-list-view/list-toolbar/index.html +msgid "Browse online help" +msgstr "Online-Hilfe durchsuchen" + +#: src/story-list-view/list-toolbar/index.html +msgid "Help" +msgstr "Hilfe" + +#: src/story-list-view/list-toolbar/index.html +msgid "version" +msgstr "Version" + +#: src/story-list-view/list-toolbar/index.html +msgid "Report a bug" +msgstr "Fehler melden" + +#: src/story-list-view/list-toolbar/theme-switcher.html +msgid "Use light theme" +msgstr "Helle Ansicht verwenden" + +#: src/story-list-view/list-toolbar/theme-switcher.html +msgid "Use dark theme" +msgstr "Dunkle Ansicht verwenden" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Play Story" +msgstr "Geschichte spielen" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Test Story" +msgstr "Geschichte testen" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Duplicate Story" +msgstr "Geschichte dublizieren" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Delete Story" +msgstr "Geschichte löschen" + +#: src/welcome/index.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\"http://twinery.org/2guide\" target=\"_blank\">" +"Twine 2 Guide</a> and the official wiki in general, are a great place " +"to learn. Keep in mind that some articles on the wiki at larger were written " +"for Twine 1, which is a little bit different than this version. But most of " +"the concepts are the same." +msgstr "" +"<strong>Wenn du Twine noch nie benutzt hast:</strong> Herzlich " +"Wilkommen! <a href=\"http://twinery.org/2guide\" target=\"_blank\">" +"Twine 2 Guide</a> und das offizielle Wiki allgemein helfen dir beim " +"Einstieg. Denk daran, dass einige Artikel im Wiki für Twine 1 geschrieben " +"wurden. Twine 1 verhält sich eine wenig anders als diese Version. Aber die " +"meisten Konzepte sind die selben." + +#: src/welcome/index.html +msgid "Your work is saved only in your browser." +msgstr "Die Arbeit wird nur im Browser gespeichert." + +#: src/welcome/index.html +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Das bedeutet, du benötigst keinen Account um Twine 2 zu verwenden. Alles was " +"du erstellst, wird nicht auf einem entfernten Server abgelegt, sondern lokal " +"in deinem Browser gespeichert." + +#: src/welcome/index.html +msgid "" +"Two <b>very important</b> things to remember, though. Since your " +"work is saved only in your browser, if you clear its saved data, then you'll " +"lose your work! Not good. Remember to use that <i class=\"fa fa-briefcase" +"\"></i> <strong>Archive</strong> button often. You " +"can also publish individual stories to files using the <i class=\"fa fa-" +"cog\"></i> menu on each story in the story list. Both archive and " +"story files can always be re-imported into Twine." +msgstr "" +"Zwei <b>sehr wichtiget</b> Dinge sind zu beachten. Deine " +"Geschichten werden nur in deinem Browser gespeichert. Wenn du die " +"\"Browserdaten\" löscht, dann geht deine Arbeit verloren. Denk daran, den " +"<i class=\"fa fa-briefcase\"></i> <strong>Archiv</" +"strong>-Button häufig zu verwenden. Du kannst einzelnen Geschichten auch " +"sichern in dem du das <i class=\"fa fa-cog\"></i>-Menü in der " +"Story oder im der Story-Übersicht verwendest. Sowohl das Archiv als auch die " +"gesicherten Story-Dateien können jederzeit re-importiert werden." + +#: src/welcome/index.html +msgid "" +"Secondly, <b>anyone who can use this browser can see and make changes " +"to your work</b>. So if you've got a nosy kid brother, look into " +"setting up a separate profile for yourself." +msgstr "" +"Außerdem: <b>Jeder der diesen Browser verwendet kann deinen " +"Geschichten lesen und verändern</b>. Wenn du also neugierige " +"Mitmenschen hast, die den selben Rechner verwenden, danke darüber nach einen " +"separaten Benutzer-Account zu verwenden." + +#: src/data/story-format.js +msgid "Untitled Story Format" +msgstr "Unbenanntes Format der Geschichte" + +#: src/data/story.js +msgid "Untitled Story" +msgstr "Unbenannte Geschichte" + +#: src/data/story.js src/story-edit-view/index.js +msgid "Untitled Passage" +msgstr "Unbenannter Absatz" + +#: src/data/story.js +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Zum Bearbeiten: Tippe den Absatz und dann das Stift-Icon." + +#: src/data/story.js +msgid "Double-click this passage to edit it." +msgstr "Doppelklick auf diesen Absatz zum Bearbeiten." + +#. The will have a version number, i.e. 2.0.6, interpolated into it. +#: src/dialogs/app-update/index.js +msgid "" +"A new version of Twine, , has been released." +msgstr "" +"Eine neue Version von Twine, , steht zur " +"Verfügung." + +#: src/dialogs/app-update/index.js +msgid "Download" +msgstr "Download" + +#. A polite rejection of a request, in the sense that the answer may change in the future. +#: src/dialogs/app-update/index.js +msgid "Not Right Now" +msgstr "Nicht jetzt" + +#. %s is the name of an author. +#: src/dialogs/formats/item.js +msgid "by %s" +msgstr "von %s" + +#: src/dialogs/formats/item.js +msgid "Are you sure?" +msgstr "Bist du sicher?" + +#: src/dialogs/formats/item.js +msgid "Remove" +msgstr "Entfernen" + +#: src/dialogs/story-import/index.js +msgid "Don't Replace Any Stories" +msgstr "Keine Geschichte ersetzen" + +#. Character in the sense of individual letters in a word. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js +#, fuzzy +msgid "Character" +msgid_plural "Character" +msgstr[0] "Buchstabe" +msgstr[1] "Buchstaben" + +#. Word in the sense of individual words in a sentence. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js +#, fuzzy +msgid "Word" +msgid_plural "Word" +msgstr[0] "Wort" +msgstr[1] "Wörter" + +#. Links in the sense of hypertext links. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js +#, fuzzy +msgid "Link" +msgid_plural "Link" +msgstr[0] "Link" +msgstr[1] "Links" + +#: src/editors/passage/index.js +msgid "Editing \\u201c%s\\u201d" +msgstr "\\u201c%s\\u201d bearbeiten" + +#. This is the folder name on OS X, Linux, and recent versions of Windows that a user's documents are stored in, relative to the user's home directory. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. Regardless, this must have a single forward slash (/) as its first character. +#: src/nw/directories.js +msgid "/Documents" +msgstr "/Dokumente" + +#. This is the folder name on Windows XP that a user's documents are stored in, relative to the user's home directory. This is used if a folder with the name given by the translation key '/Documents' does not exist. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. Regardless, this must have a single forward slash (/) as its first character. +#: src/nw/directories.js +msgid "My\\ Documents" +msgstr "Eigene\\ Dateien" + +#: src/nw/directories.js +msgid "Stories" +msgstr "Geschichten" + +#: src/nw/menus.js +msgid "Toggle Fullscreen" +msgstr "Vollbild umschalten" + +#: src/nw/menus.js +msgid "Quit" +msgstr "Schließen" + +#: src/nw/menus.js +msgid "Edit" +msgstr "Bearbeiten" + +#: src/nw/menus.js +msgid "Undo" +msgstr "Widerrufen" + +#: src/nw/menus.js +msgid "Cut" +msgstr "Ausschneiden" + +#: src/nw/menus.js +msgid "Copy" +msgstr "Kopieren" + +#: src/nw/menus.js +msgid "Paste" +msgstr "Einfügen" + +#: src/nw/menus.js src/story-edit-view/passage-item/index.js +msgid "Delete" +msgstr "Löschen" + +#: src/nw/menus.js +msgid "Show Library" +msgstr "Sammlung Anzeigen" + +#: src/story-edit-view/story-toolbar/story-menu/index.js +#: src/story-list-view/story-item/item-menu/index.js +msgid "Rename" +msgstr "Umbenennen" + +#: src/story-edit-view/story-toolbar/story-menu/index.js +#: src/story-list-view/story-item/item-menu/index.js +msgid "Please enter a name." +msgstr "Bitte einen Namen eingeben." + +#: src/story-list-view/list-toolbar/index.js +msgid "Twine Archive.html" +msgstr "Twine Archiv.html" + +#: src/story-list-view/story-item/item-menu/index.js +msgid "Delete Forever" +msgstr "Für immer Löschen" + +#: src/story-list-view/story-item/item-menu/index.js +msgid "What should the duplicate be named?" +msgstr "Wie soll das Dublikat benannt werden?" + +#: src/story-list-view/story-item/item-menu/index.js +msgid "Duplicate" +msgstr "Dublizieren" + +#: src/story-list-view/story-item/item-menu/index.js +msgid "%s Copy" +msgstr "%s Kopieren" + +#: src/ui/quota-gauge/index.js +msgid "%d%% space available" +msgstr "%d%% Speicherplatz frei" + +#~ msgid "English" +#~ msgstr "Englisch" + +#~ msgid "Spanish" +#~ msgstr "Spanisch" + +#~ msgid "" +#~ "Enter the body text of your passage here. To link to another passage, put " +#~ "two square brackets around its name, [[like this]]." +#~ msgstr "" +#~ "Fügen den Absatztext hier ein. Um einen Link zu einem anderen Absatz zu " +#~ "erstellen, schreibe dessen Namen in doppelten eckigen Klammern. [[So wie " +#~ "hier]]." + +#~ msgid "Delete “%s”" +#~ msgstr "Lösche “%s”" + +#~ msgid "Edit “%s”" +#~ msgstr "Bearbeite “%s”" + +#~ msgid "Set “%s” as starting point" +#~ msgstr "Setze “%s” als Startpunkt" + +#~ msgid "What should this story's name be?" +#~ msgstr "Wie soll die Geschichte heißen?" + +#~ msgid "Save" +#~ msgstr "Speichern" + +#~ msgid "This story was last changed at %s" +#~ msgstr "Diese Geschichte wurde am %s das letzte Mal bearbeitet" + +#~ msgid "" +#~ "The IFID for this story is %s. What's an IFID?)" +#~ msgstr "" +#~ "Die IFID dieser Geschichte lautet %s.(Was ist eine " +#~ "IFID?)" + +#~ msgid "License: %s" +#~ msgstr "Lizenz: %s" + +#~ msgid "Build" +#~ msgstr "Version" + +#~ msgid "" +#~ "Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +#~ "released under any terms, including commercial ones. Source Code Repository" +#~ msgstr "" +#~ "Twine 2.0 steht unter der GPL v3 Lizenz, aber jedes Werk, das damit erstellt " +#~ "wird, kann unter einer beliebigen auch kommerziellen Lizenz " +#~ "veröffentlicht werden. Quellecode" + +#~ msgid "Code" +#~ msgstr "Code" + +#~ msgid "" +#~ "Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under " +#~ "the guidance of Robert Slimbach for Adobe
Nunito was designed by Vernon Adams" +#~ msgstr "" +#~ "Source Sans Pro und Source Code Pro wurden von Paul D. Hunt unter der " +#~ "Anleitung von Robert Slimbach für Adobeentworfen.
Nunito wurde von Vernon Adams entworfen." + +#~ msgid "" +#~ "If you love Twine as much as I do, please consider helping it grow with a " +#~ "donation. Twine is as an open source project that will always be free to " +#~ "use — and with your help, Twine will continue to thrive." +#~ msgstr "" +#~ "Wenn dir Twine so sehr am Herzen liegt wie mir, möchtest du es vielleicht " +#~ "mit einer Spenden unterstützen. Twine ist ein Open-Source-Projekt, das " +#~ "immer frei zur Verfügung stehen wird und mit deiner Hilfe weiter wachsen " +#~ "kann." + +#~ msgid "This message will only be shown to you once.
" +#~ msgstr "Diese Nachricht wird dir nur einmal angezeigt.
" + +#~ msgid "Proofing Formats" +#~ msgstr "Formate zum Gegenlesen" + +#~ msgid "Add a New Format" +#~ msgstr "Neues Format hinzufügen" + +#~ msgid "To add a story format, enter its address below." +#~ msgstr "Zum Hinzufügen eines Formates, gib hier die zugehörige URL an." + +#~ msgid "What should your story be named?
(You can change this later.)" +#~ msgstr "Wie soll die Geschichte heißen?
(Kann später angepasst werden.)" + +#~ msgid "Importing..." +#~ msgstr "Import läuft..." + +#~ msgid "" +#~ "If you've never used Twine before, then welcome! The Twine 2 Guide and the official wiki in general, are a great place to learn. Keep in " +#~ "mind that some articles on the wiki at large were written for Twine 1, " +#~ "which is a little bit different than this version. But most of the " +#~ "concepts are the same." +#~ msgstr "" +#~ "Wenn du Twine noch nie benutzt hast, dann Herzlich " +#~ "Willkommen! Der Twine 2 Guide und das offizielle Wiki im allgemeinen, sind ein " +#~ "guter Ort mehr über Twine zu lernen. Einige Artikel im Wiki wurden für " +#~ "Twine 1 geschrieben, das sich in einigen Details von der aktuellen " +#~ "Version unterscheidet. Die groben Konzepte sind aber bestehen geblieben." + +#~ msgid "" +#~ "You can also get help over at the Twine forum, too." +#~ msgstr "" +#~ "Hilfe erhältst du außerdem im Twine Forum." + +#~ msgid "" +#~ "If you have used Twine 1 before, the guide also has " +#~ "details on what has changed in this version. Chief among them is a new " +#~ "default story format, Harlowe. But if you find you prefer the Twine 1 " +#~ "scripting syntax, try using SugarCube instead." +#~ msgstr "" +#~ "Hast du bisher Twine 1 verwendet, dann enthält der " +#~ "\"Twine 2 Guide\" außerdem Details darüber, was sich in der neuen Version " +#~ "geändert hat. Vor allem wurde das neue Standardformat Harlowe eingeführt. " +#~ "Wenn du das Format von Twine 1 bevorzugst, teste stattdessen SugarCube." + +#~ msgid "" +#~ "Two very important things to remember, though. Since your work is " +#~ "saved only in your browser, if you clear its saved data, then you'll lose " +#~ "your work! Not good. Remember to use that  Archive button often. You can also publish " +#~ "individual stories to files using the menu on " +#~ "each story in the story list. Both archive and story files can always be " +#~ "re-imported into Twine." +#~ msgstr "" +#~ "Zwei sehr wichtige

+ + + {{ 'Help Twine Grow With A Donation'| say }} + +

Hinweise: Da die Arbeit nur lokal im " +#~ "Browser gespeichert wird, verlierst du all deine Fortschritte, wenn du " +#~ "die lokalen Daten des Browser löschen! Nutze häufig den  Archiv-Button. Du kannst außerdem " +#~ "einzelnen Geschichten in Dateien veröffentlichen, indem du das -Menü an den Geschichten in der Übersicht verwendest. " +#~ "Sowohl Archive als auch einzelnen als Datei veröffentlichte Geschichten " +#~ "können immer wieder zurück nach Twine importiert werden." + +#~ msgid "" +#~ "Secondly, anyone who can use this browser can see and make changes to " +#~ "your work. So if you've got a nosy kid brother, look into setting up " +#~ "a separate profile for yourself." +#~ msgstr "" +#~ "Außerdem, jeder der diesen Browser nutzten darf, kann deine Arbeit " +#~ "sehen und verändern. Hast du also neugierige Mitmenschen, die den " +#~ "selben Rechner verwenden, dann könnte es sinnvoll sein dich zu " +#~ "informiere, wie du eine eigenes privates Profil anlegest." + +#~ msgid "" +#~ "There's now a folder named Twine in your Documents folder. Inside that is " +#~ "a Stories folder, where all your work will be saved. Twine saves as you " +#~ "work, so you don't have to worry about remembering to save it yourself. " +#~ "You can always open the folder your stories are saved to by using the " +#~ "Show Library item in the Twine menu." +#~ msgstr "" +#~ "Es gibt nun einen Ordner Twine in deinem Dokumente-Ordner. Darin ist ein " +#~ "Ordner Geschichten, indem all deine Fortschritte gespeichert werden. " +#~ "Twine speichert deine Arbeit regelmäßig, du musst also nicht selbst daran " +#~ "denken, deine Fortschritte zu speichern. Du kannst jederzeit den Ordner " +#~ "mit deinen Geschichten öffnen, indem du Sammlung Anzeigen im " +#~ "Twine-Menü auswählst." + +#~ msgid "" +#~ "If you'd like to open a Twine story file you received from someone else, " +#~ "you can import it into your library using the Import From File link in the story list." +#~ msgstr "" +#~ "Wenn du eine Twine Datei von jemandem erhältst, kannst du sie in deine " +#~ "Sammlung übernehmen. Nutze dazu den Menüpunkt Importieren aus Datei in der Übersicht." + +#~ msgid "“%1$s” could not be saved (%2$s)." +#~ msgstr "“%1$s” konnte nicht gespeichert werden (%2$s)." + +#~ msgid "An error occurred while publishing your story. (%s)" +#~ msgstr "" +#~ "Eine Fehler beim Veröffentlichen der Geschichte ist aufgetreten. (%s)" + +#~ msgid "don't know how to sort stories by %s" +#~ msgstr "es ist nicht möglich die Geschichten nach %s zu sortieren" + +#~ msgid "You must give this passage a name." +#~ msgstr "Du musst diesem Absatz einen Namen geben." + +#~ msgid "" +#~ "There is already a passage named \"%s.\" Please give this one a unique " +#~ "name." +#~ msgstr "" +#~ "Es gibt schon einen Absatz mit dem Namen \"%s\". Bitter vergib einen " +#~ "eindeutigen Namen." + +#~ msgid "There is no starting point set for this story." +#~ msgstr "Es ist kein Startpunkt für diese Geschichte markiert." + +#~ msgid "The passage set as starting point for this story does not exist." +#~ msgstr "Der Absatz, der als Startpunkt markiert wurde, existiert nicht." + +#~ msgid "/My\\ Documents" +#~ msgstr "/Eigene\\ Dokumente" + +#~ msgid "/Twine" +#~ msgstr "/Twine" + +#~ msgid "/Stories" +#~ msgstr "/Geschichten" + +#~ msgid "An error occurred while saving your story (%s)." +#~ msgstr "Eine Fehler beim Speichern der Geschichte ist aufgetreten (%s)." + +#~ msgid "An error occurred while deleting your story (%s)." +#~ msgstr "Ein Fehler beim Löschen der Geschichte ist aufgetreten (%s)." + +#~ msgid "An error occurred while locking your library (%s)." +#~ msgstr "Ein Fehler beim Sperren deiner Sammlung ist aufgetreten (%s)." + +#~ msgid "An error occurred while unlocking your library (%s)." +#~ msgstr "Ein Fehler beim Entsperren deiner Sammlung ist aufgetreten (%s)." + +#~ msgid "Don't know how to do bubble action %s" +#~ msgstr "Kann die Aktion %s nicht weiterreichen " + +#~ msgid "Don't know how to do collapse action %s" +#~ msgstr "Kann die Aktion %s nicht einklappen" + +#~ msgid "Can't set locale to nonstring: %s" +#~ msgstr "Fehler bei Setzen der Sprache. Wert muss vom Typ String sein: %s" + +#~ msgid "Editing “%s”" +#~ msgstr "\"%s\" bearbeiten" + +#~ msgid "Any changes to the passage you're editing haven't been saved yet. " +#~ msgstr "" +#~ "Die Änderungen an dem bearbeiteten Absatz würden noch nicht gespeichert." + +#~ msgid "No matching passages found." +#~ msgstr "Keine passenden Absätze gefunden." + +#~ msgid "%d replacement was made in" +#~ msgid_plural "%d replacements were made in" +#~ msgstr[0] "wurde %d Ersetzung durchgeführt" +#~ msgstr[1] "wurden %d Ersetzungen durchgeführt" + +#~ msgid "%d passage" +#~ msgid_plural "%d passages" +#~ msgstr[0] "In %d Absatz" +#~ msgstr[1] "In %d Absätze" + +#~ msgid "%1$s %2$s" +#~ msgstr "%2$s %1$s" + +#~ msgid "Broken Link" +#~ msgid_plural "Broken Links" +#~ msgstr[0] "Toter Link" +#~ msgstr[1] "Tote Links" + +#~ msgid "The story format “%1$s” could not be loaded (%2$s)." +#~ msgstr "Das Format “%1$s” konnte nicht geladen werden (%2$s). " + +#~ msgid "Are you sure you want to delete “%s”? " +#~ msgstr "Bist du sicher, dass du “%s” löschen willst?" + +#~ msgid "(Hold the Shift key when deleting to skip this message.)" +#~ msgstr "" +#~ "(Halte Umschalten/Shift beim Löschen gedrückt, um diese Nachricht zu " +#~ "vermeiden.)" + +#~ msgid "Don't see either mouse or touch coordinates on event" +#~ msgstr "Kann weder Maus- noch Touch-Koordinaten am Ereignis finden" + +#~ msgid "Couldn't find original touch ID in movement event" +#~ msgstr "" +#~ "Konnte die ursprüngliche touch ID der Bewegung im Ereignis nicht finden" + +#~ msgid "A problem occurred while saving your changes (%s)." +#~ msgstr "Beim Speichern der Änderungen ist eine Problem aufgetreten (%s)." + +#~ msgid "Are you sure you want to delete this passage?" +#~ msgid_plural "" +#~ "Are you sure you want to delete these %d passages? This cannot be undone." +#~ msgstr[0] "Bist du sicher, dass du diesen Absatz löschen willst?" +#~ msgstr[1] "" +#~ "Bist du sicher, dass du diese %d Absätze löschen willst? Kann nicht " +#~ "widerrufen gemacht werden." + +#~ msgid "This story does not have a starting point. " +#~ msgstr "Die Geschichte hat keinen Startpunkt." + +#~ msgid "" +#~ "Refreshed the playable version of your story in the previously-opened tab " +#~ "or window." +#~ msgstr "" +#~ "Lade die spielbare Version der Geschichte im bereits geöffneten Tab oder " +#~ "Fenster neu." + +#~ msgid "" +#~ "This story does not have a starting point. Use the icon on a passage to set this." +#~ msgstr "" +#~ "Die Geschichte hat keinen Startpunkt. Benutze das Icon an einem Absatz, um den Startpunkt dort zu setzen." + +#~ msgid "" +#~ "Refreshed the test version of your story in the previously-opened tab or " +#~ "window." +#~ msgstr "" +#~ "Lade die Testversion der Gesichte im bereits geöffneten Tab oder Fenster " +#~ "neu." + +#~ msgid "Last saved at %s" +#~ msgstr "Zuletzt gespeichert am %s" + +#~ msgid "The story format at %1$s could not be added (%2$s)." +#~ msgstr "Das Story-Format in %1$s konnte nicht hinzugefügt werden (%2$s)." + +#~ msgid "Don't know what kind of format to set as default" +#~ msgstr "Das Standardformat der Geschichte kann nicht gesetzt werden" + +#~ msgid "" +#~ "This story does not have a starting point. Edit this story and use the icon on a passage to set this." +#~ msgstr "" +#~ "Diese Geschichte hat keinen Startpunkt. Bearbeite die Geschichte und " +#~ "setze mit dem Icon einen Absatz als " +#~ "Startpunkt." + +#~ msgid "" +#~ "Are you sure you want to delete “%s”? This cannot be undone." +#~ msgstr "" +#~ "Bist du sicher das du “%s” löschen willst? Kann nicht " +#~ "widerrufen werden." + +#~ msgid "What should “%s” be renamed to?" +#~ msgstr "Wie soll “%s” umbenannt werden?" + +#~ msgid "%d story was imported." +#~ msgid_plural "%d stories were imported." +#~ msgstr[0] "%d Geschichte wurde importiert." +#~ msgstr[1] "%d Geschichte wurde importiert." + +#~ msgid "%d Story" +#~ msgid_plural "%d Stories" +#~ msgstr[0] "%d Geschichte" +#~ msgstr[1] "%d Geschichten" + +#~ msgid "Asked to render a non-function template " +#~ msgstr "Versuch ein template zu verwenden, das nicht vom Typ function ist." diff --git a/src/locale/po/es.po b/src/locale/po/es.po new file mode 100644 index 000000000..2dc73b5fb --- /dev/null +++ b/src/locale/po/es.po @@ -0,0 +1,1098 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-30 06:28-0300\n" +"PO-Revision-Date: 2015-06-30 06:39-0300\n" +"Last-Translator: David T. Marchand\n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.1\n" + +#: templates/localeview.html:4 +msgid "Please choose which language you would like to use with Twine." +msgstr "Por favor selecciona qué idioma te gustaría usar con Twine." + + +#: templates/storyeditview/passageeditmodal.html:8 +msgid "Passage Name" +msgstr "Nombre del pasaje" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +msgid "Tag" +msgstr "Etiqueta" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +msgid "Tag name" +msgstr "Nombre de la etiqueta" + +#: templates/storyeditview/passageeditmodal.html:36 +msgid "Enter the body text of your passage here. To link to another passage, put two square brackets around its name, [[like this]]." +msgstr "Ingresa el texto de tu pasaje aquí. Para enlazar a otro pasaje, rodea su nombre con dos corchetes, [[de esta manera]]." + +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +msgid "Delete “%s”" +msgstr "Eliminar “%s”" + +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +msgid "Edit “%s”" +msgstr "Editar “%s”" + +#: templates/storyeditview/passageitemview.html:24 +msgid "Test story starting here" +msgstr "Probar historia a partir de aquí" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +msgid "Set “%s” as starting point" +msgstr "Establecer “%s” como punto de partida" + +#: templates/storyeditview/renamestorymodal.html:8 templates/storyeditview/toolbar.html:31 templates/storylistview/storyitemview.html:36 +msgid "Rename Story" +msgstr "Renombrar historia" + +#: templates/storyeditview/renamestorymodal.html:14 +msgid "What should this story's name be?" +msgstr "¿Cómo debería llamarse esta historia?" + +#: templates/storyeditview/renamestorymodal.html:24 +msgid "Please enter a name." +msgstr "Por favor ingresa un nombre." + +#: templates/storyeditview/renamestorymodal.html:28 templates/storylistview/formatitem.html:7 templates/storylistview/storylistview.html:25 templates/storylistview/storylistview.html:50 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/storyeditview/renamestorymodal.html:29 +msgid "Save" +msgstr "Guardar" + +#: templates/storyeditview/scripteditmodal.html:8 +msgid "JavaScript" +msgstr "JavaScript" + +#: templates/storyeditview/scripteditmodal.html:14 +msgid "Any JavaScript entered here will immediately run when your story is opened in a Web browser." +msgstr "Cualquier código JavaScript ingresado aquí se ejecutará inmediatamente cuando se abra tu historia en un navegador web." + +#: templates/storyeditview/searchmodal.html:7 +msgid "Find and Replace" +msgstr "Buscar y reemplazar" + +#: templates/storyeditview/searchmodal.html:12 +msgid "Search For" +msgstr "Buscar" + +#: templates/storyeditview/searchmodal.html:18 +msgid "Include passage names" +msgstr "Incluir nombres de pasajes" + +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +msgid "Match case" +msgstr "Coincidir mayúsculas y minúsculas" + +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +msgid "Regular expression" +msgstr "Expresión regular" + +#: templates/storyeditview/searchmodal.html:34 +msgid "Replace With" +msgstr "Reemplazar con" + +#: templates/storyeditview/searchmodal.html:40 +msgid "Expand all search results" +msgstr "Expandir todos los resultados de búsqueda" + +#: templates/storyeditview/searchmodal.html:44 +msgid "Collapse all search results" +msgstr "Colapsar todos los resultados de búsqueda" + +#: templates/storyeditview/searchmodal.html:49 +msgid "Replace All" +msgstr "Reemplazar todo" + +#: templates/storyeditview/searchmodal.html:57 +msgid "Searching..." +msgstr "Buscando…" + +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d coincidencia" +msgstr[1] "%d coincidencias" + +#: templates/storyeditview/searchmodalresult.html:22 +msgid "Replace in this passage" +msgstr "Reemplazar en este pasaje" + +#: templates/storyeditview/searchmodalresult.html:23 +msgid "Replace in Passage" +msgstr "Reemplazar en pasaje" + +#: templates/storyeditview/statsmodal.html:8 templates/storyeditview/toolbar.html:39 +msgid "Story Statistics" +msgstr "Estadísticas de la historia" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +msgid "This story was last changed at %s" +msgstr "Esta historia se modificó por última vez el %s" + +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +msgid "The IFID for this story is %s. What's an IFID?)" +msgstr "La IFID de esta historia es %s. ¿Qué es una IFID? (Inglés)" + +#: templates/storyeditview/storyformatmodal.html:7 +msgid "Story Format" +msgstr "Formato de historia" + +#: templates/storyeditview/storyformatmodal.html:12 +msgid "A story format controls the appearance and behavior of your story during play." +msgstr "Un formato de historia controla la apariencia y comportamiento de tu historia durante su reproducción." + +#: templates/storyeditview/storyformatmodal.html:16 templates/storylistview/modals/formatsmodal.html:58 +msgid "Loading..." +msgstr "Cargando…" + +#: templates/storyeditview/stylesheeteditmodal.html:8 +msgid "Stylesheet" +msgstr "Hoja de estilo" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +msgid "Any CSS entered here will override the default appearance of your story." +msgstr "Cualquier código CSS ingresado aquí reemplazará la apariencia predeterminada de tu historia." + +#: templates/storyeditview/toolbar.html:5 +msgid "Go to the story list" +msgstr "Ir a la lista de historias" + +#: templates/storyeditview/toolbar.html:19 +msgid "Edit Story JavaScript" +msgstr "Editar JavaScript de la historia" + +#: templates/storyeditview/toolbar.html:23 +msgid "Edit Story Stylesheet" +msgstr "Editar hoja de estilo de la historia" + +#: templates/storyeditview/toolbar.html:27 +msgid "Change Story Format" +msgstr "Cambiar formato de historia" + +#: templates/storyeditview/toolbar.html:35 +msgid "Snap to Grid" +msgstr "Ajustar a cuadrícula" + +#: templates/storyeditview/toolbar.html:45 +msgid "View Proofing Copy" +msgstr "Ver copia para corrección" + +#: templates/storyeditview/toolbar.html:49 templates/storylistview/storyitemview.html:32 +msgid "Publish to File" +msgstr "Publicar a archivo" + +#: templates/storyeditview/toolbar.html:62 +msgid "Quick Find" +msgstr "Búsqueda rápida" + +#: templates/storyeditview/toolbar.html:63 +msgid "Find and replace across the entire story" +msgstr "Buscar y reemplazar en toda la historia" + +#: templates/storyeditview/toolbar.html:67 +msgid "Show only story structure" +msgstr "Sólo mostrar estructura de la historia" + +#: templates/storyeditview/toolbar.html:71 +msgid "Show only passage titles" +msgstr "Sólo mostrar títulos de pasajes" + +#: templates/storyeditview/toolbar.html:75 +msgid "Show passage titles and excerpts" +msgstr "Mostrar títulos y extractos de pasajes" + +#: templates/storyeditview/toolbar.html:81 +msgid "Play this story in test mode" +msgstr "Reproducir esta historia en modo de prueba" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +msgid "Test" +msgstr "Probar" + +#: templates/storyeditview/toolbar.html:88 +msgid "Play this story" +msgstr "Reproducir esta historia" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +msgid "Play" +msgstr "Reproducir" + +#: templates/storyeditview/toolbar.html:95 +msgid "Add a new passage" +msgstr "Añadir un nuevo pasaje" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 js/views/storyeditview/modals/statsmodal.js:75 +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "Pasaje" +msgstr[1] "Pasajes" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +msgid "by %s" +msgstr "por %s" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +msgid "License: %s" +msgstr "Licencia: %s" + +# I’m struggling with “segura/o” vs. “seguro/a” vs. (the less traditional but sometimes used) “segur@”. Damn gendered adjectives. +# —DAVID +#: templates/storylistview/formatitem.html:5 +msgid "Are you sure?" +msgstr "¿Estás segura/o?" + +#: templates/storylistview/formatitem.html:6 +msgid "Remove" +msgstr "Remover" + +#: templates/storylistview/formatitem.html:12 +msgid "Remove this format" +msgstr "Remover este formato" + +#: templates/storylistview/formatitem.html:14 +msgid "Set this format as default for stories" +msgstr "Establecer este formato como predeterminado para las historias" + +#: templates/storylistview/modals/aboutmodal.html:8 +msgid "About Twine" +msgstr "Acerca de Twine" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +msgid "Build" +msgstr "Versión" + +#: templates/storylistview/modals/aboutmodal.html:21 +msgid "Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "Twine es una herramienta de código abierto para contar historias interactivas no lineales." + +#: templates/storylistview/modals/aboutmodal.html:25 +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Twine 2.0 se distribuye bajo la licencia GPL v3, pero cualquier trabajo creado con él puede distribuirse bajo otros términos cualesquiera, inclusive comerciales. Repositorio del código fuente" + +#: templates/storylistview/modals/aboutmodal.html:31 +msgid "Help Twine Grow With A Donation" +msgstr "Ayuda a Twine a crecer con una donación" + +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +msgid "Code" +msgstr "Programación" + +#: templates/storylistview/modals/aboutmodal.html:54 +msgid "Translations" +msgstr "Traducciones" + +#: templates/storylistview/modals/aboutmodal.html:55 +msgid "Libraries" +msgstr "Bibliotecas" + +#: templates/storylistview/modals/aboutmodal.html:74 +msgid "Fonts" +msgstr "Tipos de letra" + +#: templates/storylistview/modals/aboutmodal.html:78 +msgid "Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the guidance of Robert Slimbach for Adobe
Nunito was designed by Vernon Adams" +msgstr "Source Sans Pro y Source Code Pro fueron diseñadas por Paul D. Hunt bajo la supervisión de Robert Slimbach para Adobe
Nunito fue diseñada por Vernon Adams" + +#: templates/storylistview/modals/aboutmodal.html:82 +msgid "Icons" +msgstr "Íconos" + +#: templates/storylistview/modals/aboutmodal.html:87 +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Document diseñado por Rob Gill de The Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:88 +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Question diseñado por Henry Ryder de The Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:89 +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Smile diseñado por jelio dimitrov de The Noun Project" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +msgid "A new version of Twine, , has been released." +msgstr "Una nueva versión de Twine, , ha sido publicada." + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +msgid "Not Right Now" +msgstr "Ahora mismo no" + +#: templates/storylistview/modals/appupdatemodal.html:21 +msgid "Download" +msgstr "Descargar" + +# I think “is as an open source project” is not correct. +# —DAVID +#: templates/storylistview/modals/donatemodal.html:6 +msgid "If you love Twine as much as I do, please consider helping it grow with a donation. Twine is as an open source project that will always be free to use — and with your help, Twine will continue to thrive." +msgstr "Si amas Twine tanto como yo, por favor considera ayudarlo a crecer con una donación. Twine es un proyecto de código abierto que seguirá siendo de uso gratuito siempre; y con tu ayuda, Twine va a continuar prosperando." + +#: templates/storylistview/modals/donatemodal.html:10 +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, creador de Twine" + +#: templates/storylistview/modals/donatemodal.html:16 +msgid "Donate" +msgstr "Donar" + +#: templates/storylistview/modals/donatemodal.html:17 +msgid "No Thanks" +msgstr "No gracias" + +#: templates/storylistview/modals/donatemodal.html:21 +msgid "This message will only be shown to you once.
" +msgstr "Este mensaje sólo se te mostrará una vez.
" + +#: templates/storylistview/modals/formatsmodal.html:9 +msgid "Story Formats" +msgstr "Formatos de historia" + +#: templates/storylistview/modals/formatsmodal.html:10 +msgid "Proofing Formats" +msgstr "Formatos para corrección" + +#: templates/storylistview/modals/formatsmodal.html:11 +msgid "Add a New Format" +msgstr "Añadir nuevo formato" + +# A previous entry is almost identical to this one. I know some redundancy is inevitable, pointing out in case this one isn’t. +# —DAVID +#: templates/storylistview/modals/formatsmodal.html:20 +msgid "Story formats control the appearance and behavior of stories during play." +msgstr "Los formatos de historia controlan la apariencia y comportamiento de las historias durante su reproducción." + +#: templates/storylistview/modals/formatsmodal.html:30 +msgid "Proofing formats create a versions of stories tailored for editing and proofreading." +msgstr "Los formatos para corrección crean versiones de las historias adaptadas para editar y corregir." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +msgid "To add a story format, enter its address below." +msgstr "Para añadir un formato de historia, ingresa su dirección URL abajo." + +#: templates/storylistview/modals/formatsmodal.html:50 templates/storylistview/storylistview.html:26 +msgid "Add" +msgstr "Añadir" + +#: templates/storylistview/storyitemview.html:24 +msgid "Play Story" +msgstr "Reproducir historia" + +#: templates/storylistview/storyitemview.html:28 +msgid "Test Story" +msgstr "Probar historia" + +#: templates/storylistview/storyitemview.html:40 +msgid "Duplicate Story" +msgstr "Duplicar historia" + +#: templates/storylistview/storyitemview.html:46 +msgid "Delete Story" +msgstr "Eliminar historia" + +#: templates/storylistview/storylistview.html:5 +msgid "Twine" +msgstr "Twine" + +#: templates/storylistview/storylistview.html:9 +msgid "Create a brand-new story" +msgstr "Crear una historia nueva" + +#: templates/storylistview/storylistview.html:10 +msgid "Story" +msgstr "Historia" + +#: templates/storylistview/storylistview.html:17 +msgid "What should your story be named?
(You can change this later.)" +msgstr "¿Cómo debería llamarse tu historia?
(Puedes cambiar esto más tarde.)" + +#: templates/storylistview/storylistview.html:34 +msgid "Import a published story or Twine archive" +msgstr "Importar una historia publicada o fichero de archivos Twine" + +#: templates/storylistview/storylistview.html:35 +msgid "Import From File" +msgstr "Importar desde archivo" + +#: templates/storylistview/storylistview.html:42 +msgid "Import this file:" +msgstr "Importar este archivo:" + +#: templates/storylistview/storylistview.html:59 +msgid "Importing..." +msgstr "Importando…" + +#: templates/storylistview/storylistview.html:67 +msgid "Save all stories to a Twine archive file" +msgstr "Guadar todas las historias a un fichero de archivos Twine" + +#: templates/storylistview/storylistview.html:68 +msgid "Archive" +msgstr "Archivar" + +#: templates/storylistview/storylistview.html:73 +msgid "Work with story and proofing formats" +msgstr "Trabajar con formatos de historia y de corrección" + +#: templates/storylistview/storylistview.html:74 +msgid "Formats" +msgstr "Formatos" + +#: templates/storylistview/storylistview.html:79 +msgid "Change the language Twine uses" +msgstr "Cambiar el idioma que usa Twine" + +#: templates/storylistview/storylistview.html:80 +msgid "Language" +msgstr "Idioma" + +#: templates/storylistview/storylistview.html:85 +msgid "Browse online help" +msgstr "Buscar ayuda en línea" + +#: templates/storylistview/storylistview.html:86 +msgid "Help" +msgstr "Ayuda" + +#: templates/storylistview/storylistview.html:101 +msgid "version" +msgstr "versión" + +#: templates/storylistview/storylistview.html:103 +msgid "Report a bug" +msgstr "Reportar un bug" + +#: templates/storylistview/storylistview.html:111 +msgid "Stories" +msgstr "Historias" + +#: templates/storylistview/storylistview.html:114 +msgid "Sort By" +msgstr "Ordenar por" + +#: templates/storylistview/storylistview.html:116 +msgid "Last changed date" +msgstr "Fecha de última modificación" + +#: templates/storylistview/storylistview.html:117 +msgid "Edit Date" +msgstr "Fecha de modificación" + +#: templates/storylistview/storylistview.html:120 +msgid "Story name" +msgstr "Nombre de la historia" + +#: templates/storylistview/storylistview.html:121 +msgid "Name" +msgstr "Nombre" + +#: templates/storylistview/storylistview.html:128 +msgid "There are no stories saved in Twine right now. To get started, you can either create a new story or import an existing one from a file." +msgstr "No hay historias guardadas en Twine ahora mismo. Para empezar, puedes crear una historia nueva o bien importar una existente desde un archivo." + +#: templates/welcomeview.html:6 +msgid "Hi!" +msgstr "¡Hola!" + +#: templates/welcomeview.html:10 +msgid "Twine is an open-source tool for telling interactive, nonlinear stories. There are a few things you should know before you get started." +msgstr "Twine es una herramienta de código abierto para contar historias interactivas no lineales. Hay un par de cosas que deberías saber antes de empezar." + +#: templates/welcomeview.html:14 +msgid "Tell Me More" +msgstr "Cuéntame más" + +#: templates/welcomeview.html:15 +msgid "Skip" +msgstr "Omitir" + +# Gendered adjectives again. +# —DAVID +#: templates/welcomeview.html:23 +msgid "New here?" +msgstr "¿Nueva/o por aquí?" + +#: templates/welcomeview.html:27 +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide and the official wiki in general, are a great place to learn. Keep in mind that some articles on the wiki at large were written " +"for Twine 1, which is a little bit different than this version. But most of the concepts are the same." +msgstr "" +"Si nunca has usado Twine antes, ¡bienvenida/o! La Guía de Twine 2 (en inglés) y la wiki oficial en general, son un muy buen lugar para aprender. Ten en cuenta que algunos artículos de la wiki en " +"general fueron escritos para Twine 1, que es un poco diferente a esta versión. Pero la mayoría de los conceptos son los mismos." + +#: templates/welcomeview.html:31 +msgid "You can also get help over at the Twine forum, too." +msgstr "Puedes encontrar ayuda en el foro de Twine, también." + +#: templates/welcomeview.html:35 +msgid "If you have used Twine 1 before, the guide also has details on what has changed in this version. Chief among them is a new default story format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, try using SugarCube instead." +msgstr "" +"Si has usado Twine 1 antes, la guía también tiene detalles sobre qué cambió en esta versión. Lo principal es que hay un nuevo formato de historia predeterminado, Harlowe. Pero si prefieres la sintaxis de Twine 1, prueba en cambio con el formato SugarCube." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 templates/welcomeviewnw.html:23 +msgid "OK" +msgstr "Aceptar" + +#: templates/welcomeview.html:47 +msgid "Your work is saved only in your browser." +msgstr "Tu trabajo se guardará sólo en tu navegador." + +#: templates/welcomeview.html:51 +msgid "That means you don't need to create an account to use Twine 2, and everything you create isn't stored on a server somewhere else — it stays right in your browser." +msgstr "Eso quiere decir que no tendrás que crear una cuenta para usar Twine 2, y que todo lo que crees no se guardará en ningún servidor en algún otro lugar; se queda ahí en tu navegador." + +#: templates/welcomeview.html:55 +msgid "" +"Two very important things to remember, though. Since your work is saved only in your browser, if you clear its saved data, then you'll lose your work! Not good. Remember to use that  Archive button often. You can " +"also publish individual stories to files using the menu on each story in the story list. Both archive and story files can always be re-imported into Twine." +msgstr "" +"Dos cosas muy importantes para recordar, sin embargo. Ya que tu trabajo se guarda sólo en tu navegador, si borras los datos guardados de tu navegador ¡perderás todo tu trabajo! Nada bueno. Recuerda usar el botón  Archivar seguido. También puedes publicar historias individuales a archivos usando el menú de cada historia en la lista de historias. Tanto ficheros archivados como archivos de historia individuales pueden siempre re-importarse a Twine." + +#: templates/welcomeview.html:59 +msgid "Secondly, anyone who can use this browser can see and make changes to your work. So if you've got a nosy kid brother, look into setting up a separate profile for yourself." +msgstr "En segundo lugar, cualquiera que pueda usar este navegador podrá ver y modificar tu trabajo. Así que si tienes un hermanito entrometido, intenta crear un perfil separado sólo para ti." + +#: templates/welcomeview.html:71 +msgid "That's it!" +msgstr "¡Eso es todo!" + +#: templates/welcomeview.html:75 +msgid "Thanks for reading, and have fun with Twine." +msgstr "Gracias por leer, y diviértete con Twine." + +#: templates/welcomeview.html:79 +msgid "Go to the Story List" +msgstr "Ir a la lista de historias" + +#: templates/welcomeviewnw.html:7 +msgid "Your work is automatically saved." +msgstr "Tu trabajo se guardará automáticamente" + +#: templates/welcomeviewnw.html:11 +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a Stories folder, where all your work will be saved. Twine saves as you work, so you don't have to worry about remembering to save it yourself. You can always open the folder your stories are saved to " +"by using the Show Library item in the Twine menu." +msgstr "" +"A partir de este momento hay una carpeta llamada Twine en tu carpeta de Documentos. Dentro de ella hay una carpeta Stories, en la que se guardará todo tu trabajo. Twine guarda a medida que trabajas, así que no te preocupes por acordarte de guardar. Siempre puedes abrir la " +"carpeta en la que se guardan tus historias usando el ítem Mostrar biblioteca en el menú Twine." + +#: templates/welcomeviewnw.html:15 +msgid "Because Twine is always saving your work, the files in your story library will be locked from editing while Twine is open." +msgstr "Ya que Twine siempre está guardando tu trabajo, los archivos en tu biblioteca de historias no podrán editarse mientras Twine esté abierto." + +#: templates/welcomeviewnw.html:19 +msgid "If you'd like to open a Twine story file you received from someone else, you can import it into your library using the Import From File link in the story list." +msgstr "Si quisieras abrir un archivo de historia Twine que recibiste de alguien más, puedes importarlo en tu librería usando el enlace Importar de archivo en la lista de historias." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:226 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” no pudo guardarse (%2$s)." + +#. L10n: %s is the error message. +#: js/app.js:283 +#, javascript-format +msgid "An error occurred while publishing your story. (%s)" +msgstr "Ocurrió un error mientras se publicaba tu historia. (%s)" + +# I guess this is not for me to change. +# —DAVID +#: js/app.js:314 +msgid "Twine Archive.html" +msgstr "Twine Archive.html" + +#. L10n: An internal error. %s is a bad sort criterion. +#: js/collections/storycollection.js:35 +#, javascript-format +msgid "don't know how to sort stories by %s" +msgstr "No sé cómo ordenar historias por %s" + +#: js/models/passage.js:19 +msgid "Untitled Passage" +msgstr "Pasaje sin título" + +#: js/models/passage.js:21 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Toca este pasaje, luego el ícono de lápiz para editarlo." + +#: js/models/passage.js:22 +msgid "Double-click this passage to edit it." +msgstr "Haz doble clic sobre este pasaje para editarlo." + +#: js/models/passage.js:78 +msgid "You must give this passage a name." +msgstr "Debes darle un nombre a este pasaje." + +#: js/models/passage.js:85 +#, javascript-format +msgid "There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "Ya hay un pasaje llamado \"%s.\" Por favor dale a éste un nombre único." + +#: js/models/story.js:16 +msgid "Untitled Story" +msgstr "Historia sin título" + +#: js/models/story.js:112 +msgid "There is no starting point set for this story." +msgstr "No hay un punto de partida establecido para esta historia." + +#: js/models/story.js:115 +msgid "The passage set as starting point for this story does not exist." +msgstr "El pasaje establecido como punto de partida para esta historia no existe." + +#: js/models/storyformat.js:38 +msgid "Untitled Story Format" +msgstr "Formato de historia sin título" + +#: js/nwui.js:81 +msgid "Toggle Fullscreen" +msgstr "Alternar pantalla completa" + +#: js/nwui.js:100 +msgid "Quit" +msgstr "Abandonar" + +#: js/nwui.js:115 +msgid "Edit" +msgstr "Editar" + +#: js/nwui.js:120 +msgid "Undo" +msgstr "Deshacer" + +#: js/nwui.js:132 +msgid "Cut" +msgstr "Cortar" + +#: js/nwui.js:142 +msgid "Copy" +msgstr "Copiar" + +#: js/nwui.js:152 +msgid "Paste" +msgstr "Pegar" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 js/views/storyeditview/storyeditview.js:126 +msgid "Delete" +msgstr "Eliminar" + +#: js/nwui.js:182 +msgid "Show Library" +msgstr "Mostrar biblioteca" + +# I’m leaving these be for the time being, will ask you if I can translate them without breaking anything later. +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:239 +msgid "/Documents" +msgstr "/Documents" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:249 js/nwui.js:250 +msgid "/My\\ Documents" +msgstr "/My\\ Documents" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:260 js/nwui.js:264 +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:260 +msgid "/Stories" +msgstr "/Stories" + +#. L10n: %s is the error message. +#: js/nwui.js:430 +#, javascript-format +msgid "An error occurred while saving your story (%s)." +msgstr "Ocurrió un error mientras se guardaba tu historia (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:457 +#, javascript-format +msgid "An error occurred while deleting your story (%s)." +msgstr "Ocurrió un error mientras se eliminaba tu historia (%s)." + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:527 +#, javascript-format +msgid "An error occurred while locking your library (%s)." +msgstr "Ocurrió un error mientras se bloqueaba tu biblioteca (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#: js/nwui.js:556 +#, javascript-format +msgid "An error occurred while unlocking your library (%s)." +msgstr "Ocurrió un error mientras se desbloqueaba tu biblioteca (%s)." + +#. L10n: An internal error message related to UI components. +#: js/ui.js:166 +#, javascript-format +msgid "Don't know how to do bubble action %s" +msgstr "No sé cómo ejecutar acción burbuja %s" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:219 +#, javascript-format +msgid "Don't know how to do collapse action %s" +msgstr "No sé cómo ejecutar acción colapsar %s" + +#. L10n: An internal error when changing locale. +#: js/views/localeview.js:27 +#, javascript-format +msgid "Can't set locale to nonstring: %s" +msgstr "No puedo establecer local nonstring: %s" + +#: js/views/storyeditview/editors/passageeditor.js:120 js/views/storyeditview/storyeditview.js:563 +#, javascript-format +msgid "Editing “%s”" +msgstr "Editando “%s”" + +#: js/views/storyeditview/editors/passageeditor.js:211 +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "Cualquier modificación al pasaje que estás editando no se ha guardado todavía." + +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d pasaje coincide." +msgstr[1] "%d pasajes coinciden." + +#: js/views/storyeditview/modals/searchmodal.js:102 +msgid "No matching passages found." +msgstr "No se encontró ningún pasaje que coincidiera." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "Se efectuó %d reemplazo" +msgstr[1] "Se efectuaron %d reemplazos" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d pasaje" +msgstr[1] "%d pasajes" + +# Will leave this unchanged. Don’t really understand how the plural would work differently in each of your examples. +# —DAVID +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Carácter" +msgstr[1] "Caracteres" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Palabra" +msgstr[1] "Palabras" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Enlace" +msgstr[1] "Enlaces" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Enlace roto" +msgstr[1] "Enlaces rotos" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 js/views/storylistview/modals/formatsmodal.js:74 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "El formato de historia “%1$s” no pudo cargarse (%2$s)." + +# Gendered adjective. +# —DAVID +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +msgid "Are you sure you want to delete “%s”? " +msgstr "¿Estás segura/o de que quieres eliminar “%s”?" + +#: js/views/storyeditview/passageitemview.js:169 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "(Mantén apretada la tecla Shift/Mayús al eliminar para omitir este mensaje.)" + +#. L10n: An internal error related to handling user input. +#: js/views/storyeditview/passageitemview.js:461 +msgid "Don't see either mouse or touch coordinates on event" +msgstr "No veo coordenadas de ratón ni de toque en evento" + +#. L10n: An internal error related to user input. +#: js/views/storyeditview/passageitemview.js:523 +msgid "Couldn't find original touch ID in movement event" +msgstr "No encontré ID de toque original en evento de movimiento" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 js/views/storyeditview/storyeditview.js:64 +#, javascript-format +msgid "A problem occurred while saving your changes (%s)." +msgstr "Ocurrió un problema mientras se guardaban tus cambios (%s)." + +# Gendered adjective again. +# No “passages” after the number in the plural version? +# Also, “number of format specifications in 'msgid' and 'msgstr' does not match” error appeared well after I translated this and saved several times. But now emptying at least one of these two entries seems to be the only way of stopping it from happening. +# +# —DAVID +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +msgid "Are you sure you want to delete this passage?" +msgid_plural "Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "¿Estás segura/o de que quieres eliminar este pasaje (%d)?" +msgstr[1] "¿Estás segura/o de que quieres eliminar estos %d pasajes? Esto no puede deshacerse." + +#: js/views/storyeditview/storyeditview.js:268 +msgid "This story does not have a starting point. " +msgstr "Esta historia no tiene un punto de partida." + +# I’m assuming “refreshed” here means “it’s been refreshed” +# —DAVID +#: js/views/storyeditview/storyeditview.js:282 +msgid "Refreshed the playable version of your story in the previously-opened tab or window." +msgstr "Se refrescó la versión jugable de tu historia en la pestaña o ventana previamente abierta." + +#: js/views/storyeditview/storyeditview.js:312 js/views/storyeditview/storyeditview.js:352 js/views/storylistview/storyitemview.js:110 +msgid "This story does not have a starting point. Use the icon on a passage to set this." +msgstr "Esta historia no tiene un punto de partida. Utiliza el ícono sobre un pasaje para establecerlo." + +#: js/views/storyeditview/storyeditview.js:325 +msgid "Refreshed the test version of your story in the previously-opened tab or window." +msgstr "Se refrescó la versión de prueba de tu historia en la pestaña o ventana previamente abierta." + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a localized date and time +#: js/views/storyeditview/storyeditview.js:573 js/views/storyeditview/toolbar.js:94 +#, javascript-format +msgid "Last saved at %s" +msgstr "Guardada por última vez el %s" + +# Don’t really understand what %1s is here. Are we still talking about dates? +# —DAVID +#: js/views/storylistview/modals/formatsmodal.js:137 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "El formato de historia en %1$s no pudo añadirse (%2$s)." + +#. L10n: An internal error related to story formats. +#: js/views/storylistview/modals/formatsmodal.js:246 +msgid "Don't know what kind of format to set as default" +msgstr "No sé qué formato establecer como predeterminado" + +#: js/views/storylistview/storagequota.js:21 js/views/storylistview/storagequota.js:44 js/views/storylistview/storagequota.js:49 +#, javascript-format +msgid "%d%% space available" +msgstr "%d%% espacio disponible" + +#: js/views/storylistview/storyitemview.js:80 js/views/storylistview/storyitemview.js:94 +msgid "This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "Esta historia no tiene un punto de partida. Edita esta historia y utliza el ícono sobre un pasaje para establecerlo." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +msgid "Are you sure you want to delete “%s”? This cannot be undone." +msgstr "¿Estás segura/o de que quieres eliminar “%s”? Esto no puede deshacerse." + +#: js/views/storylistview/storyitemview.js:125 +msgid "Delete Forever" +msgstr "Eliminar para siempre" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +msgid "What should “%s” be renamed to?" +msgstr "¿Qué nuevo nombre debería tener “%s”?" + +#: js/views/storylistview/storyitemview.js:138 +msgid "Rename" +msgstr "Renombrar" + +#: js/views/storylistview/storyitemview.js:155 +msgid "What should the duplicate be named?" +msgstr "¿Cómo debería llamarse el duplicado?" + +#: js/views/storylistview/storyitemview.js:156 +msgid "Duplicate" +msgstr "Duplicar" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +msgid "%s Copy" +msgstr "%s Copia" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "Se importó %d historia." +msgstr[1] "Se importaron %d historias." + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d historia" +msgstr[1] "%d historias" + +#~ msgid "The IFID for this story is %s. What's an IFID?)" +#~ msgstr "La IFID para esta historia es %s. ¿Qué es una IFID? (Inglés))" + +#~ msgid "" +#~ "Twine 2.0 is released under the GPL v3 license, but any work created with it may be released under any terms, including commercial ones. Source Code Repository" +#~ msgstr "" +#~ "Twine 2.0 se distribuye bajo la licencia GPL v3, pero cualquier trabajo creado con él puede distribuirse bajo otros términos cualesquiera, inclusive comerciales. Repositorio del código fuente" + +#~ msgid "Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the guidance of Robert Slimbach for Adobe
Nunito was designed by Vernon Adams" +#~ msgstr "Source Sans Pro y Source Code Pro fueron diseñadas por Paul D. Hunt bajo la supervisión de Robert Slimbach para Adobe
Nunito fue diseñada por Vernon Adams" + +#~ msgid "" +#~ "If you've never used Twine before, then welcome! The Twine 2 Guide and the official wiki in general, are a great place to learn. Keep in mind that some articles on the wiki at large were written " +#~ "for Twine 1, which is a little bit different than this version. But most of the concepts are the same." +#~ msgstr "" +#~ "Si nunca has usado Twine antes, ¡bienvenida/o! La Guía de Twine 2 (en inglés) y la wiki oficial en general, son un muy buen lugar para aprender. Ten en cuenta que algunos artículos en la wiki en " +#~ "general fueron escritos para Twine 1, que es un poco diferente a esta versión. Pero la mayoría de los conceptos son los mismos." + +#~ msgid "You can also get help over at the Twine forum, too." +#~ msgstr "También puedes encontrar ayuda en el foro de Twine." + +#~ msgid "" +#~ "Two very important things to remember, though. Since your work is saved only in your browser, if you clear its saved data, then you'll lose your work! Not good. Remember to use that  Archive button often. You " +#~ "can also publish individual stories to files using the dropdown menu next to the  Play button in the story editor. Both archive and story files can always be re-imported into Twine." +#~ msgstr "" +#~ "Dos cosas muy importantes para recordar, sin embargo. Ya que tu trabajo se guarda sólo en tu navegador, si borras sus datos guardados ¡perderás todo tu trabajo! Nada bueno. Recuerda usar ese botón de  Archivar " +#~ "seguido. También puedes publicar historias individuales a archivos usando el menú desplegable junto al botón  Reproducir en el editor de historias. Tanto ficheros archivados como archivos de historia pueden siempre re-importarse a " +#~ "Twine." + +#~ msgid "The IFID for this story is %s. " +#~ msgstr "La IFID para esta historia es %s. " + +#~ msgid "d MMMM yyyy, h:mm tt" +#~ msgstr "d MMMM yyyy, h:mm tt" + +#~ msgid "There are no stories saved in Twine right now. " +#~ msgstr "No hay historias guardadas en Twine ahora mismo. " + +# Another possibly redundant entry. +# —DAVID +#~ msgid "Twine is an open-source tool for telling interactive, nonlinear stories. " +#~ msgstr "Twine es una herramienta de código abierto para contar historias interactivas no lineales. " + +# Gendered adjective. +# —DAVID +#~ msgid "If you've never used Twine before, then welcome! " +#~ msgstr "Si nunca usaste Twine antes, ¡bienvenida/o! " + +#~ msgid "If you have used Twine 1 before, the guide also has details on what has changed in this version. " +#~ msgstr "Si usaste Twine 1 antes, la guía también tiene detalles sobre qué cambió en esta versión. " + +#~ msgid "That means you don't need to create an account to use Twine 2, " +#~ msgstr "Eso significa que no vas a necesitar crear una cuenta para usar Twine 2, " + +# This and the next entry use instead of the previously used . Just pointing out, dunno if it’s intentional. +# —DAVID +#~ msgid "Two very important things to remember, though. " +#~ msgstr "Dos cosas muy importantes para recordar, sin embargo. " + +#~ msgid "h:mm tt, d MMMM yyyy" +#~ msgstr "h:mm tt, d MMMM yyyy" + +# I omitted the “at” here because the translation would depend on the date format immediatly after (mainly on whether it’s followed by a date or a time of the day, but also subtly on whether that time of the day is a 1 or a plural number). Still makes sense without it, I guess. +# —DAVID +#~ msgid "Last saved at" +#~ msgstr "Guardada por última vez" + +# Don’t exactly know what the letter case means here, so I’ll leave it be. Eventually I should change it, since no Spanish-speaking country uses the MDY format. +# —DAVID +#~ msgid "h:mm TT, M/d/yyyy" +#~ msgstr "h:mm TT, M/d/yyyy" + +# Again I ignored the “at”. +# —DAVID +#~ msgid "Last updated at %s" +#~ msgstr "Actualizado por última vez %s" diff --git a/src/locale/po/fi.po b/src/locale/po/fi.po new file mode 100644 index 000000000..b81a9fa8c --- /dev/null +++ b/src/locale/po/fi.po @@ -0,0 +1,1154 @@ +# FINNISH TRANSLATION FOR TWINE 2.0.10 +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mika Letonsaari, 2016 +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-18 13:51+0200\n" +"PO-Revision-Date: 2016-01-20 10:44+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.6\n" +"Last-Translator: \n" +"Language: fi\n" + +#: templates/localeview.html:4 +msgid "Please choose which language you would like to use with Twine." +msgstr "Valitse millä kielellä haluat käyttää Twineä." + +#: templates/localeview.html:12 +msgid "English" +msgstr "englanti" + +#: templates/localeview.html:19 +msgid "Spanish" +msgstr "espanja" + +#: templates/storyeditview/passageeditmodal.html:8 +msgid "Passage Name" +msgstr "Kappeleen nimi" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +msgid "Tag" +msgstr "Tunniste" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +msgid "Tag name" +msgstr "Tunnisteen nimi" + +#: templates/storyeditview/passageeditmodal.html:36 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Kirjoita kappaleen teksti tähän. Voit tehdä linkin toiseen kappaleeseen " +"laittamalla kahdet hakasulkeet linkin nimen ympärille [[näin]]." + +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +msgid "Delete “%s”" +msgstr "Poista “%s”" + +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +msgid "Edit “%s”" +msgstr "Muokkaa “%s”" + +#: templates/storyeditview/passageitemview.html:24 +msgid "Test story starting here" +msgstr "Testaa tästä" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +msgid "Set “%s” as starting point" +msgstr "Aseta “%s” alkupisteeksi" + +#: templates/storyeditview/renamestorymodal.html:8 +#: templates/storyeditview/toolbar.html:31 +#: templates/storylistview/storyitemview.html:36 +msgid "Rename Story" +msgstr "Nimeä tarina uudelleen" + +#: templates/storyeditview/renamestorymodal.html:14 +msgid "What should this story's name be?" +msgstr "Minkä nimen haluat antaa tarinalle?" + +#: templates/storyeditview/renamestorymodal.html:24 +msgid "Please enter a name." +msgstr "Anna nimi." + +#: templates/storyeditview/renamestorymodal.html:28 +#: templates/storylistview/formatitem.html:7 +#: templates/storylistview/storylistview.html:25 +#: templates/storylistview/storylistview.html:50 +msgid "Cancel" +msgstr "Peruuta" + +#: templates/storyeditview/renamestorymodal.html:29 +msgid "Save" +msgstr "Tallenna" + +#: templates/storyeditview/scripteditmodal.html:8 +msgid "JavaScript" +msgstr "JavaScript" + +#: templates/storyeditview/scripteditmodal.html:14 +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Tähän kirjoitettu JavaScript-koodi suoriteen heti, kun tarina avataan " +"selaimeen." + +#: templates/storyeditview/searchmodal.html:7 +msgid "Find and Replace" +msgstr "Etsi ja Korvaa" + +#: templates/storyeditview/searchmodal.html:12 +msgid "Search For" +msgstr "Etsi" + +#: templates/storyeditview/searchmodal.html:18 +msgid "Include passage names" +msgstr "Sisällytä kappaleiden nimet" + +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +msgid "Match case" +msgstr "Huomioi kirjainkoko" + +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +msgid "Regular expression" +msgstr "Säännölliset lausekkeet" + +#: templates/storyeditview/searchmodal.html:34 +msgid "Replace With" +msgstr "Korvaa tekstillä" + +#: templates/storyeditview/searchmodal.html:40 +msgid "Expand all search results" +msgstr "Laajenna hakutulokset" + +#: templates/storyeditview/searchmodal.html:44 +msgid "Collapse all search results" +msgstr "Tiivistä hakutulokset" + +#: templates/storyeditview/searchmodal.html:49 +msgid "Replace All" +msgstr "Korvaa kaikki" + +#: templates/storyeditview/searchmodal.html:57 +msgid "Searching..." +msgstr "Etsitään..." + +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "löytyi %d kohde" +msgstr[1] "löytyi %d kohdetta" + +#: templates/storyeditview/searchmodalresult.html:22 +msgid "Replace in this passage" +msgstr "Korvaa tässä kappaleessa" + +#: templates/storyeditview/searchmodalresult.html:23 +msgid "Replace in Passage" +msgstr "Korvaa tässä kappaleessa" + +#: templates/storyeditview/statsmodal.html:8 +#: templates/storyeditview/toolbar.html:39 +msgid "Story Statistics" +msgstr "Tarinan tilastotietoja" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +msgid "This story was last changed at %s" +msgstr "Tarinaa on viimeksi muutettu %s" + +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +msgid "" +"The IFID for this story is %s. What's an IFID?)" +msgstr "" +"Tarinan IFID on %s. Mikä on IFID? (englanninkielinen " +"sivusto))" + +#: templates/storyeditview/storyformatmodal.html:7 +msgid "Story Format" +msgstr "Tarinan muotoilu" + +#: templates/storyeditview/storyformatmodal.html:12 +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Tarinan muotoilu ohjaa tarinan ulkoasua ja toimintaa tarinaa näytettäessä." + +#: templates/storyeditview/storyformatmodal.html:16 +#: templates/storylistview/modals/formatsmodal.html:58 +msgid "Loading..." +msgstr "Ladataan..." + +#: templates/storyeditview/stylesheeteditmodal.html:8 +msgid "Stylesheet" +msgstr "Tyyliohjeet" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "Tähän kirjoitettu CSS-koodi määrittää tarinan ulkoasun." + +#: templates/storyeditview/toolbar.html:5 +msgid "Go to the story list" +msgstr "Siirry tarinaluetteloon" + +#: templates/storyeditview/toolbar.html:19 +msgid "Edit Story JavaScript" +msgstr "Muokkaa tarinan JavaScriptiä" + +#: templates/storyeditview/toolbar.html:23 +msgid "Edit Story Stylesheet" +msgstr "Muokkaa tarinan tyyliohjeita" + +#: templates/storyeditview/toolbar.html:27 +msgid "Change Story Format" +msgstr "Muuta tarinan muotoilua" + +#: templates/storyeditview/toolbar.html:35 +msgid "Snap to Grid" +msgstr "Nappaa kiinni ruudukkoon" + +#: templates/storyeditview/toolbar.html:45 +msgid "View Proofing Copy" +msgstr "Näytä esikatselukopio" + +#: templates/storyeditview/toolbar.html:49 +#: templates/storylistview/storyitemview.html:32 +msgid "Publish to File" +msgstr "Julkaise tiedostoon" + +#: templates/storyeditview/toolbar.html:62 +msgid "Quick Find" +msgstr "Pikahaku" + +#: templates/storyeditview/toolbar.html:63 +msgid "Find and replace across the entire story" +msgstr "Etsi ja korvaa koko tarinasta" + +#: templates/storyeditview/toolbar.html:67 +msgid "Show only story structure" +msgstr "Näytä vain tarinan rakenne" + +#: templates/storyeditview/toolbar.html:71 +msgid "Show only passage titles" +msgstr "Näytä vain kappaleiden otsikot" + +#: templates/storyeditview/toolbar.html:75 +msgid "Show passage titles and excerpts" +msgstr "Näytä kappaleotsikot ja katkelma" + +#: templates/storyeditview/toolbar.html:81 +msgid "Play this story in test mode" +msgstr "Näytä tarina testaustilassa" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +msgid "Test" +msgstr "Testaa" + +#: templates/storyeditview/toolbar.html:88 +msgid "Play this story" +msgstr "Näytä tämä tarina" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +msgid "Play" +msgstr "Näytä" + +#: templates/storyeditview/toolbar.html:95 +msgid "Add a new passage" +msgstr "Lisää uusi kappale" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 +#: js/views/storyeditview/modals/statsmodal.js:75 +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "kappale" +msgstr[1] "kappaletta" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +msgid "by %s" +msgstr "tehnyt %s" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +msgid "License: %s" +msgstr "Lisenssi: %s" + +#: templates/storylistview/formatitem.html:5 +msgid "Are you sure?" +msgstr "Oletko varma?" + +#: templates/storylistview/formatitem.html:6 +msgid "Remove" +msgstr "Poista" + +#: templates/storylistview/formatitem.html:12 +msgid "Remove this format" +msgstr "Poista tämä muotoilu" + +#: templates/storylistview/formatitem.html:14 +msgid "Set this format as default for stories" +msgstr "Aseta tämä muotoilu tarinoiden oletusarvoiseksi muotoiluksi" + +#: templates/storylistview/modals/aboutmodal.html:8 +msgid "About Twine" +msgstr "Tietoja Twinestä" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +msgid "Build" +msgstr "Käännä" + +#: templates/storylistview/modals/aboutmodal.html:21 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine on avoimen lähdekoodin työkalu vuorovaikutteisten ja epälineaaristen " +"tarinoiden kertomiseen." + +#: templates/storylistview/modals/aboutmodal.html:25 +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +"released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Twine 2.0 on julkaistu GPL v3 -lisenssillä, mutta sillä tehdyt tarinat voi julkaista millä " +"tahansa, myös kaupallisella, lisenssillä. Lähdekoodin säilytyspaikka" + +#: templates/storylistview/modals/aboutmodal.html:31 +msgid "Help Twine Grow With A Donation" +msgstr "Auta Twineä kasvamaan lahjoittamalla" + +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +msgid "Code" +msgstr "Koodi" + +#: templates/storylistview/modals/aboutmodal.html:55 +msgid "Libraries" +msgstr "Kirjastot" + +#: templates/storylistview/modals/aboutmodal.html:74 +msgid "Fonts" +msgstr "Kirjasimet" + +#: templates/storylistview/modals/aboutmodal.html:78 +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for Adobe
Nunito was designed by
Vernon Adams" +msgstr "" +"Source Sans Pro:n ja Source Code Pro:n on kehittänyt Paul D. Hunt Robert " +"Slimbachin opastuksella Adobelle
" +"Nuniton on suunnitellut Vernon Adams" + +#: templates/storylistview/modals/aboutmodal.html:82 +msgid "Icons" +msgstr "Kuvakkeet" + +#: templates/storylistview/modals/aboutmodal.html:87 +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Documentin on suunnitellut Noun-projektin Rob Gill" + +#: templates/storylistview/modals/aboutmodal.html:88 +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Questionin on suunnitellut Noun-projektin Henry Ryder" + +#: templates/storylistview/modals/aboutmodal.html:89 +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Smilen on suunnitellut Noun-projektin jelio dimitrov" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +msgid "" +"A new version of Twine, , has been released." +msgstr "Twinestä on julkaistu uusi versio " + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +msgid "Not Right Now" +msgstr "Ei juuri nyt" + +#: templates/storylistview/modals/appupdatemodal.html:21 +msgid "Download" +msgstr "Lataa" + +#: templates/storylistview/modals/donatemodal.html:6 +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is as an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Jos pidät Twinestä yhtä paljon kuin minä, auta Twineä kasvamaan " +"lahjoittamalla. Twine on avoimen lähdekoodin projekti, joka tulee aina " +"olemaan ilmainen — ja avullasi Twine jaktaa kukoistusta." + +#: templates/storylistview/modals/donatemodal.html:10 +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, Twinen alkuperäinen kehittäjä" + +#: templates/storylistview/modals/donatemodal.html:16 +msgid "Donate" +msgstr "Lahjoita" + +#: templates/storylistview/modals/donatemodal.html:17 +msgid "No Thanks" +msgstr "Ei kiitos" + +#: templates/storylistview/modals/donatemodal.html:21 +msgid "This message will only be shown to you once.
" +msgstr "Tämä viesti näytetään sinulle vain tämän yhden kerran." + +#: templates/storylistview/modals/formatsmodal.html:9 +msgid "Story Formats" +msgstr "Tarinan muotoilut" + +#: templates/storylistview/modals/formatsmodal.html:10 +msgid "Proofing Formats" +msgstr "Esikatselumuotoilut" + +#: templates/storylistview/modals/formatsmodal.html:11 +msgid "Add a New Format" +msgstr "Lisää uusi muotoilu" + +#: templates/storylistview/modals/formatsmodal.html:20 +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Tarinan muotoilut ohjaavat tarinan ulkoasua ja toimintaa tarinaa " +"näytettäessä." + +#: templates/storylistview/modals/formatsmodal.html:30 +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Esikatselumuotoilut luovat tarinasta version muokkaamista ja oikolukua " +"varten." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +msgid "To add a story format, enter its address below." +msgstr "Lisää tarinamuotoilu kirjoittamalla alle sen osoite." + +#: templates/storylistview/modals/formatsmodal.html:50 +#: templates/storylistview/storylistview.html:26 +msgid "Add" +msgstr "Lisää" + +#: templates/storylistview/storyitemview.html:24 +msgid "Play Story" +msgstr "Näytä tarina" + +#: templates/storylistview/storyitemview.html:28 +msgid "Test Story" +msgstr "Testaa tarinaa" + +#: templates/storylistview/storyitemview.html:40 +msgid "Duplicate Story" +msgstr "Tee tarinasta kopio" + +#: templates/storylistview/storyitemview.html:46 +msgid "Delete Story" +msgstr "Poista tarina" + +#: templates/storylistview/storylistview.html:5 +msgid "Twine" +msgstr "Twine" + +#: templates/storylistview/storylistview.html:9 +msgid "Create a brand-new story" +msgstr "Tee uusi tarina" + +#: templates/storylistview/storylistview.html:10 +msgid "Story" +msgstr "Tarina" + +#: templates/storylistview/storylistview.html:17 +msgid "What should your story be named?
(You can change this later.)" +msgstr "" +"Minkä nimen haluat antaa tarinalle?
(Voit muuttaa nimeä myöhemmin.)" + +#: templates/storylistview/storylistview.html:34 +msgid "Import a published story or Twine archive" +msgstr "Tuo julkaistu tarina tai Twine-arkisto" + +#: templates/storylistview/storylistview.html:35 +msgid "Import From File" +msgstr "Tuo tiedostosta" + +#: templates/storylistview/storylistview.html:42 +msgid "Import this file:" +msgstr "Tuo tämä tiedosto:" + +#: templates/storylistview/storylistview.html:59 +msgid "Importing..." +msgstr "Tuodaan..." + +#: templates/storylistview/storylistview.html:67 +msgid "Save all stories to a Twine archive file" +msgstr "Tallenna kaikki tarinat Twine-arkistotiedostoon" + +#: templates/storylistview/storylistview.html:68 +msgid "Archive" +msgstr "Arkisto" + +#: templates/storylistview/storylistview.html:73 +msgid "Work with story and proofing formats" +msgstr "Käytettävät tarina- ja esikatselumuotoilut" + +#: templates/storylistview/storylistview.html:74 +msgid "Formats" +msgstr "Muotoilut" + +#: templates/storylistview/storylistview.html:79 +msgid "Change the language Twine uses" +msgstr "Muuta Twinen käyttämää kieltä" + +#: templates/storylistview/storylistview.html:80 +msgid "Language" +msgstr "Kieli" + +#: templates/storylistview/storylistview.html:85 +msgid "Browse online help" +msgstr "Selaa online-ohjeita" + +#: templates/storylistview/storylistview.html:86 +msgid "Help" +msgstr "Ohjeet" + +#: templates/storylistview/storylistview.html:101 +msgid "version" +msgstr "versio" + +#: templates/storylistview/storylistview.html:103 +msgid "Report a bug" +msgstr "Ilmoita bugista" + +#: templates/storylistview/storylistview.html:111 +msgid "Stories" +msgstr "Tarinat" + +#: templates/storylistview/storylistview.html:114 +msgid "Sort By" +msgstr "Lajitteluperuste:" + +#: templates/storylistview/storylistview.html:116 +msgid "Last changed date" +msgstr "Viimeisimmän muutoksen päivämäärä" + +#: templates/storylistview/storylistview.html:117 +msgid "Edit Date" +msgstr "Muokkauspäivämäärä" + +#: templates/storylistview/storylistview.html:120 +msgid "Story name" +msgstr "Tarinan nimi" + +#: templates/storylistview/storylistview.html:121 +msgid "Name" +msgstr "Nimi" + +#: templates/storylistview/storylistview.html:128 +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Twinessä ei ole tallennettuja tarinoita. Aloita luomalla uusi tarina tai tuo " +"tarina tiedostosta." + +#: templates/welcomeview.html:6 +msgid "Hi!" +msgstr "Hei!" + +#: templates/welcomeview.html:10 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twine on avoimen lähdekoodin työkalu vuorovaikutteisten ja epälineaaristen " +"tarinoiden kertomiseen. Sinun on hyvä tietää joitakin asioita ennen " +"aloittamista." + +#: templates/welcomeview.html:14 +msgid "Tell Me More" +msgstr "Kerro lisää" + +#: templates/welcomeview.html:15 +msgid "Skip" +msgstr "Ohita" + +#: templates/welcomeview.html:23 +msgid "New here?" +msgstr "Uusi täällä?" + +#: templates/welcomeview.html:27 +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide " +"and the official wiki in general, are a great place to learn. Keep in mind " +"that some articles on the wiki at large were written for Twine 1, which is a " +"little bit different than this version. But most of the concepts are the " +"same." +msgstr "" +"Jos et ole koskaan käyttänyt Twineä, tervetuloa! Twine 2 -opas ja " +"wiki ovat hyviä paikkoja oppia Twinestä. Pidä mielessä, että jotkut wikin " +"artikkelit on kirjoitettu vanhemmalle Twine1:lle ja ne voivat poiketa tästä " +"versiosta. Suurin osa käsitteistä on kuitenkin samoja." + +#: templates/welcomeview.html:31 +msgid "" +"You can also get help over at the Twine forum, too." +msgstr "" +"Apua voit löytää myös Twinen keskustelupalstalta." + +#: templates/welcomeview.html:35 +msgid "" +"If you have used Twine 1 before, the guide also has details " +"on what has changed in this version. Chief among them is a new default story " +"format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, " +"try using SugarCube instead." +msgstr "" +"Jos olet käyttänyt aiemmin Twine 1:tä, oppaasta löytyy " +"tietoa mitkä asiat ovat muuttuneet tähän versioon. Tärkeimpänä muutoksena on " +"oletusarvoinen tarinamuotoilu Harlowe. Jos pidät enemmän Twine 1 -skriptien " +"syntaksista, kokeile SugarCube-muotoilua." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 +#: templates/welcomeviewnw.html:23 +msgid "OK" +msgstr "OK" + +#: templates/welcomeview.html:47 +msgid "Your work is saved only in your browser." +msgstr "Työsi tallennetaan vain selaimeesi." + +#: templates/welcomeview.html:51 +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Se tarkoittaa ettei sinun tarvitse rekisteröityä käyttääksesi Twine 2:ta. " +"Kaikkea mitä teet ei myöskään tallenneta palvelimille — ne pysyvät " +"vain sinun selaimessasi." + +#: templates/welcomeview.html:55 +msgid "" +"Two very important things to remember, though. Since your work is " +"saved only in your browser, if you clear its saved data, then you'll lose " +"your work! Not good. Remember to use that  Archive button often. You can also publish " +"individual stories to files using the menu on " +"each story in the story list. Both archive and story files can always be re-" +"imported into Twine." +msgstr "" +"Kaksi erittäin tärkeää asiaa, jotka sinun tulee muistaa. Koska työsi " +"tallennetaan vain selaimeesi, jos poistat tallennetut tiedot, menetät kaiken " +"työsi! Ei hyvä. Muista käyttää  " +"Arkisto-painiketta usein. Voit myös julkaista yksittäisiä " +"tarinoita tiedostoon käyttämällä tarinan kohdalla olevaa valikkoa tarinaluettelossa. Sekä arkisto että tiedostoon tallennettu " +"tarina voidaan palauttaa takaisin Twineen." + +#: templates/welcomeview.html:59 +msgid "" +"Secondly, anyone who can use this browser can see and make changes to " +"your work. So if you've got a nosy kid brother, look into setting up a " +"separate profile for yourself." +msgstr "" +"Toiseksi, jokainen joka käyttää selaintasi voi nähdä työsi ja tehdä " +"siihen muutoksia. Jos sinulla on siis nenäkäs pikkuveli, tee " +"tietokoneelle erillinen käyttäjätili itsellesi." + +#: templates/welcomeview.html:71 +msgid "That's it!" +msgstr "Siinä kaikki!" + +#: templates/welcomeview.html:75 +msgid "Thanks for reading, and have fun with Twine." +msgstr "Kiitos että jaksoit lukea ja pidä hauskaa Twinen kanssa." + +#: templates/welcomeview.html:79 +msgid "Go to the Story List" +msgstr "Siirry tarinaluetteloon" + +#: templates/welcomeviewnw.html:7 +msgid "Your work is automatically saved." +msgstr "Työsi tallennetaan automaattisesti" + +#: templates/welcomeviewnw.html:11 +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the Show " +"Library item in the Twine menu." +msgstr "" +"Tiedostot-kansiossa on nyt kansio nimeltä Twine. Sen sisällä on Tarinat-" +"kansio, jonne kaikki työsi tallennetaan. Twine tallentaa työn sitä mukaa kun " +"työskentelet, joten sinun ei tarvitse itse muistaa tallentamista. Voit aina " +"avata tallennuskansion valitsemalla Twine-valikosta Näytä kirjasto." + +#: templates/welcomeviewnw.html:15 +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Koska Twine tallentaa koko ajan työtä, tiedostot tarinakirjastossa ovat " +"lukittuina aina, kun Twine on käytössä." + +#: templates/welcomeviewnw.html:19 +msgid "" +"If you'd like to open a Twine story file you received from someone else, you " +"can import it into your library using the " +"Import From File link in the story list." +msgstr "" +"Jos haluat avata joltakulta muulta saamasi Twine-tarinatiedoston, voit tuoda " +"sen kirjastoon tarinaluettelon Tuo " +"tiedostosta -linkillä." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:226 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” ei voitu tallentaa (%2$s)." + +#. L10n: %s is the error message. +#: js/app.js:283 +#, javascript-format +msgid "An error occurred while publishing your story. (%s)" +msgstr "Tapahtui virhe tarinaa julkaistaessa. (%s)" + +#: js/app.js:314 +msgid "Twine Archive.html" +msgstr "Twine Archive.html" + +#. L10n: An internal error. %s is a bad sort criterion. +#: js/collections/storycollection.js:35 +#, javascript-format +msgid "don't know how to sort stories by %s" +msgstr "en tiedä miten lajitella tarinat lajitteluperusteella %s" + +#: js/models/passage.js:19 +msgid "Untitled Passage" +msgstr "Nimetön kappale" + +#: js/models/passage.js:21 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Napsauta tätä kappaletta ja sitten kynäkuvaketta muokataksesi sitä." + +#: js/models/passage.js:22 +msgid "Double-click this passage to edit it." +msgstr "Kaksoisnapsauta lukua muokataksesi sitä." + +#: js/models/passage.js:78 +msgid "You must give this passage a name." +msgstr "Anna kappaleelle nimi." + +#: js/models/passage.js:85 +#, javascript-format +msgid "" +"There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "" +"On jo olemassa kappale nimeltä \"%s\". Anna kappaleelle sellainen nimi jota " +"ei vielä ole." + +#: js/models/story.js:16 +msgid "Untitled Story" +msgstr "Nimerön tarina" + +#: js/models/story.js:112 +msgid "There is no starting point set for this story." +msgstr "Tälle tarinalle ei ole annettu alkupistettä." + +#: js/models/story.js:115 +msgid "The passage set as starting point for this story does not exist." +msgstr "Tarinan aloituspisteeksi asetettua kappaletta ei ole olemassa." + +#: js/models/storyformat.js:38 +msgid "Untitled Story Format" +msgstr "Nimetön tarinamuotoilu" + +#: js/nwui.js:81 +msgid "Toggle Fullscreen" +msgstr "Kokoruututila" + +#: js/nwui.js:100 +msgid "Quit" +msgstr "Lopeta" + +#: js/nwui.js:115 +msgid "Edit" +msgstr "Muokkaa" + +#: js/nwui.js:120 +msgid "Undo" +msgstr "Kumoa" + +#: js/nwui.js:132 +msgid "Cut" +msgstr "Leikkaa" + +#: js/nwui.js:142 +msgid "Copy" +msgstr "Kopioi" + +#: js/nwui.js:152 +msgid "Paste" +msgstr "Liitä" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 +#: js/views/storyeditview/storyeditview.js:126 +msgid "Delete" +msgstr "Poista" + +#: js/nwui.js:182 +msgid "Show Library" +msgstr "Näytä kirjasto" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:239 +msgid "/Documents" +msgstr "/Tiedostot" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:249 js/nwui.js:250 +msgid "/My\\ Documents" +msgstr "/Omat\\ tiedostot" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:260 js/nwui.js:264 +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:260 +msgid "/Stories" +msgstr "/Tarinat" + +#. L10n: %s is the error message. +#: js/nwui.js:430 +#, javascript-format +msgid "An error occurred while saving your story (%s)." +msgstr "Tapahtui virhe tarinaa tallennettaessa (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:457 +#, javascript-format +msgid "An error occurred while deleting your story (%s)." +msgstr "Tapahtui virhe tarinaa poistettaessa (%s)." + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:527 +#, javascript-format +msgid "An error occurred while locking your library (%s)." +msgstr "Tapahtui virhe kirjastoa lukittaessa (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#: js/nwui.js:556 +#, javascript-format +msgid "An error occurred while unlocking your library (%s)." +msgstr "Tapahtui virhe kirjaston lukitusta poistettaessa (%s)." + +#. L10n: An internal error message related to UI components. +#: js/ui.js:166 +#, javascript-format +msgid "Don't know how to do bubble action %s" +msgstr "En tiedä kuinka laajentaa toiminto %s" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:219 +#, javascript-format +msgid "Don't know how to do collapse action %s" +msgstr "En tiedä kuinka supistaa toiminto %s" + +#. L10n: An internal error when changing locale. +#: js/views/localeview.js:27 +#, javascript-format +msgid "Can't set locale to nonstring: %s" +msgstr "Lokaalia ei voida asettaa ei-merkkijonolle: %s" + +#: js/views/storyeditview/editors/passageeditor.js:120 +#: js/views/storyeditview/storyeditview.js:563 +#, javascript-format +msgid "Editing “%s”" +msgstr "Muokataan \"%s\"" + +#: js/views/storyeditview/editors/passageeditor.js:211 +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "Kappaleeseen tekemiäsi muutosia ei ole vielä tallennettu." + +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d vastaava kappale" +msgstr[1] "%d vastaavaa kappaletta" + +#: js/views/storyeditview/modals/searchmodal.js:102 +msgid "No matching passages found." +msgstr "Vastaavia kappaleita ei löytynyt." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "%d muutos tehtiin" +msgstr[1] "%d muutosta tehtiin" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d kappaleessa" +msgstr[1] "%d kappaleessa" + +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "merkki" +msgstr[1] "merkkiä" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +msgid "Word" +msgid_plural "Words" +msgstr[0] "sana" +msgstr[1] "sanaa" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +msgid "Link" +msgid_plural "Links" +msgstr[0] "linkki" +msgstr[1] "linkkiä" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "rikkinäinen linkki" +msgstr[1] "rikkinäistä linkkiä" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 +#: js/views/storylistview/modals/formatsmodal.js:74 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "Tarinamuotoilua “%1$s” ei voitu ladata (%2$s)." + +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +msgid "Are you sure you want to delete “%s”? " +msgstr "Oletko varma että haluat poistaa kohteen “%s”?" + +#: js/views/storyeditview/passageitemview.js:169 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "(Tätä varmistusviestiä ei näytetä, jos pidät vaihtonäppäintä pohjassa)" + +#. L10n: An internal error related to handling user input. +#: js/views/storyeditview/passageitemview.js:461 +msgid "Don't see either mouse or touch coordinates on event" +msgstr "En näe tapahtumassa hiiren tai kosketuksen koordinaatteja" + +#. L10n: An internal error related to user input. +#: js/views/storyeditview/passageitemview.js:523 +msgid "Couldn't find original touch ID in movement event" +msgstr "En löydä liiketapahtumassa alkuperäistä kosketus ID:tä" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 +#: js/views/storyeditview/storyeditview.js:64 +#, javascript-format +msgid "A problem occurred while saving your changes (%s)." +msgstr "Virhe tapahtui muutoksia tallennettaessa (%s)." + +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +msgid "Are you sure you want to delete this passage?" +msgid_plural "" +"Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "Oletko varma että haluat poistaa tämän kappaleen?" +msgstr[1] "" +"Oletko varma että haluat poistaa nämä %d kappaletta? Toimintoa ei voi kumota." + +#: js/views/storyeditview/storyeditview.js:268 +msgid "This story does not have a starting point. " +msgstr "Tarinalla ei ole alkupistettä." + +#: js/views/storyeditview/storyeditview.js:282 +msgid "" +"Refreshed the playable version of your story in the previously-opened tab or " +"window." +msgstr "" +"Päivitettiin tarinasta näytettävä versio jo avattuun välilehteen tai " +"ikkunaan." + +#: js/views/storyeditview/storyeditview.js:312 +#: js/views/storyeditview/storyeditview.js:352 +#: js/views/storylistview/storyitemview.js:110 +msgid "" +"This story does not have a starting point. Use the icon on a passage to set this." +msgstr "" +"Tarinalla ei ole alkupistettä. Aseta alkupiste käyttämällä kappaleen -kuvaketta." + +#: js/views/storyeditview/storyeditview.js:325 +msgid "" +"Refreshed the test version of your story in the previously-opened tab or " +"window." +msgstr "" +"Päivitettiin tarinan testausversio jo avattuun välilehteen tai ikkunaan." + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a localized date and time +#: js/views/storyeditview/storyeditview.js:573 +#: js/views/storyeditview/toolbar.js:94 +#, javascript-format +msgid "Last saved at %s" +msgstr "Tallennettiin edellisen kerran %s" + +#: js/views/storylistview/modals/formatsmodal.js:137 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "Tarinamuotoilua kohteessa %1$s ei voitu lisätä (%2$s)." + +#. L10n: An internal error related to story formats. +#: js/views/storylistview/modals/formatsmodal.js:246 +msgid "Don't know what kind of format to set as default" +msgstr "En tiedä mikä muotoilu asetetaan oletusarvoiseksi." + +#: js/views/storylistview/storagequota.js:21 +#: js/views/storylistview/storagequota.js:44 +#: js/views/storylistview/storagequota.js:49 +#, javascript-format +msgid "%d%% space available" +msgstr "%d%% tilaa jäljellä" + +#: js/views/storylistview/storyitemview.js:80 +#: js/views/storylistview/storyitemview.js:94 +msgid "" +"This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "" +"Tarinalla ei ole alkupistettä. Muokka tarinaa ja aseta alkupiste käyttämällä " +"kappaleen -kuvaketta." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Oletko varma että haluat poistaa kohteen “%s”? Toimintoa ei voi " +"kumota." + +#: js/views/storylistview/storyitemview.js:125 +msgid "Delete Forever" +msgstr "Poista lopullisesti" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +msgid "What should “%s” be renamed to?" +msgstr "Anna tarinalle “%s” uusi nimi." + +#: js/views/storylistview/storyitemview.js:138 +msgid "Rename" +msgstr "Nimeä uudelleen" + +#: js/views/storylistview/storyitemview.js:155 +msgid "What should the duplicate be named?" +msgstr "Minkä nimiseksi haluat nimetä kopion?" + +#: js/views/storylistview/storyitemview.js:156 +msgid "Duplicate" +msgstr "Kopioi" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +msgid "%s Copy" +msgstr "%s kopio" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "%d tarina tuotiin." +msgstr[1] "%d tarinaa tuotiin." + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d tarina" +msgstr[1] "%d tarinaa" diff --git a/src/locale/po/fr.po b/src/locale/po/fr.po new file mode 100644 index 000000000..10bc53836 --- /dev/null +++ b/src/locale/po/fr.po @@ -0,0 +1,1261 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2016-12-13 09:18+0100\n" +"Last-Translator: Valentin Rocher \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: src/dialogs/about/index.html +msgid "About Twine" +msgstr "À propos de Twine" + +#: src/dialogs/about/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine est un outil open-source pour raconter des histoires interactives et " +"non-linéaires." + +#: src/dialogs/about/index.html +msgid "" +"This application is released under the \\x3ca href=\"http:\\/\\/www.gnu.org/" +"licenses/gpl-3.0.html\">GPL v3\\x3c/a> license, but any work created with it " +"may be released under any terms, including commercial ones." +msgstr "" +"Cette application est distribuée sous la license \\x3ca href=\"https:\\/\\/" +"www.gnu.org/licenses/gpl-3.0.fr.html\">GPL v3\\x3c/a>, mais toute oeuvre " +"créée via ce logiciel peut être distribuée sous n'importe quels termes, y " +"compris commerciaux." + +#: src/dialogs/about/index.html +msgid "Help Twine Grow With A Donation" +msgstr "Aidez Twine à Grandir Grâce À Un Don" + +#: src/dialogs/about/index.html +msgid "Source Code Repository" +msgstr "Dépôt de Code Source" + +#: src/dialogs/about/index.html +msgid "Translations" +msgstr "Traductions" + +#: src/dialogs/about/index.html +msgid "Libraries" +msgstr "Bibliothèques" + +#: src/dialogs/about/index.html +msgid "Fonts" +msgstr "Polices de caractère" + +#: src/dialogs/about/index.html +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for \\x3ca href=\"http:\\/\\/adobe.com/\">Adobe" +"\\x3c/a>\\x3cbr> Nunito was designed by \\x3ca href=\"http:\\/\\/code." +"newtypography.co.uk/\">Vernon Adams\\x3c/a>" +msgstr "" +"Source Sans Pro et Source Code Pro ont été conçus par Paul D. Hunt sous la " +"direction de Robert Slimbach pour \\x3ca href=\"http:\\/\\/adobe.com/" +"\">Adobe\\x3c/a>\\x3cbr>. Nunito a été conçue par \\x3ca href=\"http:\\/\\/" +"code.newtypography.co.uk/\">Vernon Adams\\x3c/a>." + +#: src/dialogs/about/index.html +msgid "Icons" +msgstr "Icônes" + +#: src/dialogs/about/index.html +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Document conçu par Rob Gill pour le Noun Project" + +#: src/dialogs/about/index.html +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Question conçue par Henry Ryder pour le Noun Project" + +#: src/dialogs/about/index.html +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Sourire conçu par jelio dimitrov pour le Noun Project" + +#: src/dialogs/app-donation/index.html +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Si vous aimez Twine autant que moi, pensez à l'aider à grandir via un don. " +"Twine est un projet open source qui sera toujours gratuit — et avec " +"votre aide, Twine continuera à grandir." + +#: src/dialogs/app-donation/index.html +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, créateur de Twine" + +#: src/dialogs/app-donation/index.html +msgid "No Thanks" +msgstr "Non Merci" + +#: src/dialogs/app-donation/index.html +msgid "Donate" +msgstr "Faire un don" + +#: src/dialogs/app-donation/index.html +msgid "" +"This message will only be shown to you once.<br>If you'd like to " +"donate to Twine development in the future, you can do so at <a href=\\" +"\"http:\\/\\/twinery.org/donate\\\" target=\\\"_blank\\\">http://twinery." +"org/donate</a>." +msgstr "" +"Ce message sera affiché une seule fois.<br>Si vous voulez faire une " +"donation pour le développement de Twine un peu plus tard, vous pouvez le " +"faire à l'adresse <a href=\\\"http:\\/\\/twinery.org/donate\\\" target=\\" +"\"_blank\\\">http://twinery.org/donate</a>." + +#: src/dialogs/formats/index.html +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Les formats d'histoire contrôlent l'apparence et le comportement des " +"histoires durant la lecture." + +#: src/dialogs/formats/index.html +msgid "Use as Default" +msgstr "Utiliser par Défaut" + +#: src/dialogs/formats/index.html +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Les formats de correction créent une version des histoires dédiée à " +"l'édition et à la correction." + +#: src/dialogs/formats/index.html +msgid "Use" +msgstr "Utiliser" + +#: src/dialogs/formats/index.html src/story-list-view/list-toolbar/index.js:24 +msgid "Add" +msgstr "Ajouter" + +#: src/dialogs/formats/index.html src/dialogs/story-format/index.html +msgid "Loading..." +msgstr "Chargement..." + +#: src/dialogs/story-format/index.html +msgid "Story Format" +msgstr "Format d'Histoire" + +#: src/dialogs/story-format/index.html +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Un format d'histoire contrôle l'apparence et le comportement de votre " +"histoire durant le jeu" + +#: src/dialogs/story-import/index.html +#: src/story-list-view/list-toolbar/index.html +msgid "Import From File" +msgstr "Importer depuis un Fichier" + +#: src/dialogs/story-import/index.html +msgid "Import this file:" +msgstr "Importer ce fichier :" + +#: src/dialogs/story-import/index.html src/dialogs/confirm/index.js:31 +#: src/dialogs/prompt/index.js:15 +msgid "Cancel" +msgstr "Annuler" + +#: src/dialogs/story-import/index.html +msgid "Working..." +msgstr "En cours..." + +#: src/dialogs/story-import/index.html +msgid "" +"Some stories you are importing already exist in your library. Please choose " +"which to replace. Any other stories in your file will be imported as well." +msgstr "" +"Certaines histoires que vous cherchez à importer existent déjà dans votre " +"bibliothèque. Veuillez choisir celui qui sera remplacé. Toutes les autres " +"histoires dans votre fichier seront aussi importées." + +#: src/dialogs/story-import/index.html +msgid "Don't Import Any Stories" +msgstr "N'importer Aucune Histoire" + +#: src/dialogs/story-search/index.html +msgid "Find and Replace" +msgstr "Chercher et Remplacer" + +#: src/dialogs/story-search/index.html +msgid "Search For" +msgstr "Rechercher" + +#: src/dialogs/story-search/index.html +msgid "Include passage names" +msgstr "Inclure le nom des passages" + +#: src/dialogs/story-search/index.html +msgid "Match case" +msgstr "Respecter la casse" + +#: src/dialogs/story-search/index.html +msgid "Regular expression" +msgstr "Expression régulière" + +#: src/dialogs/story-search/index.html +msgid "Replace With" +msgstr "Remplacer Par" + +#: src/dialogs/story-search/index.html +msgid "Replace All" +msgstr "Remplacer Tout" + +#: src/dialogs/story-search/index.html +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d passage correspondant." +msgstr[1] "%d passages correspondants." + +#: src/dialogs/story-search/index.html +msgid "Searching..." +msgstr "Recherche..." + +#: src/dialogs/story-search/result.html +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d résultat" +msgstr[1] "%d résultats" + +#: src/dialogs/story-search/result.html +msgid "Replace in Passage" +msgstr "Remplacer dans le passage" + +#: src/dialogs/story-stats/index.html +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Story Statistics" +msgstr "Statistiques de l'Histoire" + +#: src/editors/javascript/index.html +msgid "JavaScript" +msgstr "JavaScript" + +#: src/editors/javascript/index.html +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Tout JavaScript ajouté ici sera lancé dès que votre histoire sera ouverte " +"dans un navigateur Web." + +#: src/editors/passage/index.html +msgid "A passage already exists with this name." +msgstr "Un passage existe déjà avec ce nom." + +#: src/editors/passage/tag-editor.html +msgid "Tag" +msgstr "Balise" + +#: src/editors/stylesheet/index.html +msgid "Stylesheet" +msgstr "Feuille de style" + +#: src/editors/stylesheet/index.html +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "" +"Tout CSS ajouté ici remplacera l'apparence par défaut de votre histoire" + +#: src/locale/view/index.html +msgid "Please choose which language you would like to use with Twine." +msgstr "Veuillez choisir le langage à utiliser dans Twine." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Hi!" +msgstr "Salut !" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twine est un outil open-source pour raconter des histoires interactives et " +"non-linéaires. Il y a quelques détails que vous devriez connaître avant de " +"vous lancer." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Tell Me More" +msgstr "En Savoir Plus" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Skip" +msgstr "Passer" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "New here?" +msgstr "Nouveau venu ?" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\" +"\">Twine 2 Guide</a> and the official wiki in general, are a great " +"place to learn. Keep in mind that some articles on the wiki at large were " +"written for Twine 1, which is a little bit different than this version. But " +"most of the concepts are the same." +msgstr "" +"<strong>Si vous n'avez jamais utilisé Twine auparavant,</strong> " +"bienvenue à vous ! Le href=\\\"http://twinery.org/2guide\\\" target=\\" +"\"_blank\\\">Guide de Twine 2</a>, et le wiki officiel en général, " +"sont de bons endroits pour apprendre. Gardez à l'esprit le fait que certains " +"articles du wiki ont été écrits pour Twine 1, qui est un peu différent de " +"cette version. Cependant, la plupart des concepts restent les mêmes." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"<strong>If you have used Twine 1 before,</strong> the guide also " +"has details on what has changed in this version. Chief among them is a new " +"default story format, Harlowe. But if you find you prefer the Twine 1 " +"scripting syntax, try using SugarCube instead." +msgstr "" +"<strong>Si vous avez déjà utilisés Twine 1,</strong> ce guide " +"comprend aussi des détails sur ce qui a changé dans cette version. La " +"différence principale est le nouveau format d'histoire par défaut, Harlowe. " +"Si vous préférez utiliser la syntaxe de script de Twine 1, préférez plutôt " +"SugarCube." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "OK" +msgstr "OK" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "Your work is automatically saved." +msgstr "Votre travail est sauvegardé automatiquement." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the <b>Show " +"Library</b> item in the <b>Twine</b> menu." +msgstr "" +"Il y a maintenant un dossier appellé Twine dans votre dossier Documents. Il " +"contient un dossier Stories, où votre travail sera sauvegardé. Twine " +"sauvegarde au fur et à mesure de votre travail, pour que vous n'ayez pas à " +"vous en rappeler vous-même. Vous pouvez ouvrir le document où vos histoires " +"sont sauvegardées en utilisant le choix <b>Montrer la bibliothèque</" +"b> dans le menu <b>Twine</b>." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Vu que Twine est toujours en train de sauvegarder votre travail, les " +"fichiers dans votre bibliothèque d'histoires seront verrouillés tant que " +"Twine est ouvert." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "That's it!" +msgstr "C'est tout !" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Thanks for reading, and have fun with Twine." +msgstr "Merci d'avoir lu, et amusez-vous bien avec Twine." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Go to the Story List" +msgstr "Aller à la Liste des Histoires" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Test" +msgstr "Test" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play" +msgstr "Lancer" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Passage" +msgstr "Passage" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story JavaScript" +msgstr "Modifier le JavaScript de l'Histoire" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story Stylesheet" +msgstr "Modifier la Feuille de Style de l'Histoire" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Change Story Format" +msgstr "Modifier le Format de l'Histoire" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Rename Story" +msgstr "Renommer l'Histoire" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Snap to Grid" +msgstr "Coller à la Grille" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "View Proofing Copy" +msgstr "Voir Épreuve de Correction" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Publish to File" +msgstr "Publier vers un Fichier" + +#: src/story-list-view/index.html +msgid "Drop a story file to import" +msgstr "Déposer un fichier d'histoire pour l'importer" + +#: src/story-list-view/index.html +msgid "Sort By" +msgstr "Trier Par" + +#: src/story-list-view/index.html +msgid "Edit Date" +msgstr "Date d'édition" + +#: src/story-list-view/index.html +msgid "Name" +msgstr "Nom" + +#: src/story-list-view/index.html +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Il n'y a aucune histoire sauvegardée dans Twine pour le moment. Pour " +"commencer, vous pouvez soit créer une nouvelle histoire soit en importer une " +"depuis un fichier." + +#: src/story-list-view/list-toolbar/index.html src/nw/directories.js:69 +#: src/nw/menus.js:17 src/nw/menus.js:39 +msgid "Twine" +msgstr "Twine" + +#: src/story-list-view/list-toolbar/index.html +msgid "Story" +msgstr "Histoire" + +#: src/story-list-view/list-toolbar/index.html +msgid "Archive" +msgstr "Archive" + +#: src/story-list-view/list-toolbar/index.html +msgid "Formats" +msgstr "Formats" + +#: src/story-list-view/list-toolbar/index.html +msgid "Language" +msgstr "Langue" + +#: src/story-list-view/list-toolbar/index.html +msgid "Help" +msgstr "Aide" + +#: src/story-list-view/list-toolbar/index.html +msgid "version" +msgstr "version" + +#: src/story-list-view/list-toolbar/index.html +msgid "Report a bug" +msgstr "Signaler un bug" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Play Story" +msgstr "Lancer l'Histoire" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Test Story" +msgstr "Tester l'Histoire" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Duplicate Story" +msgstr "Dupliquer l'Histoire" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Delete Story" +msgstr "Supprimer l'Histoire" + +#: src/welcome/index.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\" +"\">Twine 2 Guide</a> and the official wiki in general, are a great " +"place to learn. Keep in mind that some articles on the wiki at larger were " +"written for Twine 1, which is a little bit different than this version. But " +"most of the concepts are the same." +msgstr "" +"<strong>Si vous n'avez jamais utilisé Twine auparavant,</strong> " +"bienvenue à vous ! Le href=\\\"http://twinery.org/2guide\\\" target=\\" +"\"_blank\\\">Guide de Twine 2</a>, et le wiki officiel en général, " +"sont de bons endroits pour apprendre. Gardez à l'esprit le fait que certains " +"articles du wiki ont été écrits pour Twine 1, qui est un peu différent de " +"cette version. Cependant, la plupart des concepts restent les mêmes." + +#: src/welcome/index.html +msgid "Your work is saved only in your browser." +msgstr "Votre travail est sauvegardé uniquement dans votre navigateur." + +#: src/welcome/index.html +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Cela signifie que vous n'avez pas besoin de créer un compte pour utiliser " +"Twine 2, et que tout ce que vous créez n'est pas gardé dans un serveur " +"quelque part, mais reste bien au chaud dans votre navigateur." + +#: src/welcome/index.html +msgid "" +"Two <b>very important</b> things to remember, though. Since your " +"work is saved only in your browser, if you clear its saved data, then you'll " +"lose your work! Not good. Remember to use that <i class=\\\"fa fa-" +"briefcase\\\"></i> <strong>Archive</strong> button " +"often. You can also publish individual stories to files using the <i " +"class=\\\"fa fa-cog\\\"></i> menu on each story in the story list. " +"Both archive and story files can always be re-imported into Twine." +msgstr "" +"Deux choses <b>très importantes</b> à retenir, cependant. Comme " +"votre travail est sauvegardé uniquement dans votre navigateur, si vous " +"supprimez les données sauvegardées, vous perdrez votre travail ! Pas glop. " +"Pensez à utiliser le bouton <i class=\\\"fa fa-briefcase\\\"></i>" +" <strong>Archive</strong> assez souvent. Vous pouvez aussi " +"publier des histoires individuelles en utilisant le menu <i class=\\\"fa " +"fa-cog\\\"></i> sur chaque histoire de la liste d'histoires. Les " +"archives et les fichiers d'histoire peuvent être ré-importés dans Twine." + +#: src/welcome/index.html +msgid "" +"Secondly, <b>anyone who can use this browser can see and make changes " +"to your work</b>. So if you've got a nosy kid brother, look into " +"setting up a separate profile for yourself." +msgstr "" +"De plus, <b>n'importe qui ayant accès à ce navigateur peut voir et " +"changer votre travail</b>. Si vous avez un petit frère fouineur, " +"essayez de créer un profil séparé pour vous-même." + +#: src/data/actions.js:262 +msgid "a story format named “%s” already exists" +msgstr "un format d'histoire nommé “%s” existe déjà" + +#: src/data/publish.js:75 +msgid "There is no starting point set for this story." +msgstr "Il n'y a pas de point de départ défini pour cette histoire." + +#: src/data/publish.js:81 +msgid "The passage set as starting point for this story does not exist." +msgstr "" +"Le passage défini comme point de départ pour cette histoire n'existe pas." + +#: src/data/story-format.js:7 +msgid "Untitled Story Format" +msgstr "Format d'Histoire sans Titre." + +#: src/data/story.js:190 +msgid "Untitled Story" +msgstr "Histoire sans Titre." + +#: src/data/story.js:207 src/story-edit-view/index.js:195 +msgid "Untitled Passage" +msgstr "Passage sans titre" + +#: src/data/story.js:210 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Cliquez sur ce passage, puis sur l'icône du crayon pour le modifier." + +#: src/data/story.js:211 +msgid "Double-click this passage to edit it." +msgstr "Double-cliquez sur ce passage pour le modifier." + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: src/dialogs/app-update/index.js:40 +msgid "" +"A new version of Twine, , has been released." +msgstr "" +"Une nouvelle version de Twine, , vient de " +"sortir." + +#: src/dialogs/app-update/index.js:44 +msgid "Download" +msgstr "Télécharger" + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: src/dialogs/app-update/index.js:51 +msgid "Not Right Now" +msgstr "Pas En Ce Moment" + +#. L10n: %1$s is the name of the story format; %2$s is +#: src/dialogs/formats/index.js:60 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "Le format d'histoire “%1$s” n'a pas pu être chargé (%2$s)." + +#: src/dialogs/formats/index.js:102 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "Le format d'histoire %1$s n'a pas pu être rajouté (%2$s)." + +#. L10n: %s is the name of an author. +#: src/dialogs/formats/item.js:30 +msgid "by %s" +msgstr "par %s" + +#: src/dialogs/formats/item.js:51 +msgid "Are you sure?" +msgstr "Êtes-vous sûr ?" + +#: src/dialogs/formats/item.js:53 +msgid "Remove" +msgstr "Supprimer" + +#: src/dialogs/story-import/index.js:56 +msgid "Don\\'t Replace Any Stories" +msgstr "Ne Remplacer Aucune Histoire" + +#: src/dialogs/story-import/index.js:59 +msgid "Replace %d Story" +msgid_plural "Replace %d Stories" +msgstr[0] "Remplacer %d Histoire" +msgstr[1] "Remplacer %d Histoires" + +#: src/dialogs/story-stats/index.js:37 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Caractère" +msgstr[1] "Caractères" + +#: src/dialogs/story-stats/index.js:51 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Mot" +msgstr[1] "Mots" + +#: src/dialogs/story-stats/index.js:85 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Lien" +msgstr[1] "Liens" + +#: src/dialogs/story-stats/index.js:98 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Lien Brisé" +msgstr[1] "Liens Brisés" + +#: src/editors/passage/index.js:37 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Entrez le texte de votre passage ici. Pour ajouter un lien vers un autre " +"passage, entourez son nom de deux crochets, [[comme ça]]." + +#: src/editors/passage/index.js:181 +msgid "Editing \\u201c%s\\u201d" +msgstr "Édition de \\u201c%s\\u201d" + +#. L10n: %1$s is a filename; %2$s is the error message. +#: src/file/save.js:71 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” n'a pas pu être sauvegardé (%2$s)." + +#. L10n: This is the folder name on OS X, Linux, and recent versions of Windows that a user's documents are stored in, relative to the user's home directory. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. Regardless, this must have a single forward slash (/) as its first character. +#: src/nw/directories.js:38 +msgid "/Documents" +msgstr "/Documents" + +#: src/nw/directories.js:51 +msgid "My\\\\ Documents" +msgstr "Mes\\\\ Documents" + +#: src/nw/directories.js:70 +msgid "Stories" +msgstr "Histoires" + +#: src/nw/menus.js:27 +msgid "Toggle Fullscreen" +msgstr "Passer en Mode Plein Écran." + +#: src/nw/menus.js:44 +msgid "Quit" +msgstr "Quitter" + +#: src/nw/menus.js:61 +msgid "Edit" +msgstr "Modifier" + +#: src/nw/menus.js:66 +msgid "Undo" +msgstr "Annuler" + +#: src/nw/menus.js:79 +msgid "Cut" +msgstr "Couper" + +#: src/nw/menus.js:88 +msgid "Copy" +msgstr "Copier" + +#: src/nw/menus.js:97 +msgid "Paste" +msgstr "Coller" + +#: src/nw/menus.js:106 src/story-edit-view/passage-item/index.js:275 +msgid "Delete" +msgstr "Supprimer" + +#: src/nw/menus.js:118 +msgid "Show Library" +msgstr "Montrer la Bibliothèque" + +#: src/story-edit-view/passage-item/index.js:260 +#: src/story-list-view/story-item/item-menu/index.js:78 +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Êtes-vous sûr de vouloir supprimer “%s” ? Cette action ne peut " +"être annulée." + +#: src/story-edit-view/passage-item/index.js:267 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "" +"(Gardez la touche Maj appuyée lors de la suppression pour ne plus afficher " +"ce message.)" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:46 +#: src/story-list-view/story-item/item-menu/index.js:100 +msgid "What should “%s” be renamed to?" +msgstr "Quel doit être le nouveau nom de “%s” ?" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:51 +#: src/story-list-view/story-item/item-menu/index.js:105 +msgid "Rename" +msgstr "Renommer" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:55 +#: src/story-list-view/story-item/item-menu/index.js:109 +#: src/story-list-view/story-item/item-menu/index.js:128 +msgid "Please enter a name." +msgstr "Veuillez entrer un nom." + +#: src/story-list-view/index.js:79 +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d Histoire" +msgstr[1] "%d Histoires" + +#: src/story-list-view/list-toolbar/index.js:21 +msgid "What should your story be named?
(You can change this later.)" +msgstr "" +"Quel nom voulez-vous utiliser pour votre histoire ?
(Vous pourrez le " +"changer après.)" + +#: src/story-list-view/list-toolbar/index.js:30 +msgid "A story with this name already exists." +msgstr "Une histoire avec ce nom existe déjà." + +#: src/story-list-view/list-toolbar/index.js:60 +msgid "Twine Archive.html" +msgstr "Twine Archive.html" + +#: src/story-list-view/story-item/item-menu/index.js:84 +msgid "Delete Forever" +msgstr "Supprimer pour Toujours" + +#: src/story-list-view/story-item/item-menu/index.js:122 +msgid "What should the duplicate be named?" +msgstr "Quel doit être le nom de la copie ?" + +#: src/story-list-view/story-item/item-menu/index.js:124 +msgid "Duplicate" +msgstr "Dupliquer" + +#: src/story-list-view/story-item/item-menu/index.js:126 +msgid "%s Copy" +msgstr "Copie de %s" + +#: src/ui/quota-gauge/index.js:24 +msgid "%d%% space available" +msgstr "Place restante : %d%%" + +#~ msgid "" +#~ "This message will only be shown to you once.<br>If you'd like to " +#~ "donate to Twine development in the future, you can do so at <a href=" +#~ "\"http:\\/\\/twinery.org/donate\" target=\"_blank\">http://twinery.org/" +#~ "donate</a>." +#~ msgstr "" +#~ "Ce message apparaîtra une seule fois.<br>Si vous voulez faire un " +#~ "don pour le développement de Twine dans le futur, vous pouvez le faire à " +#~ "l'adresse <a href=\"http:\\/\\/twinery.org/donate\" target=\"_blank" +#~ "\">http://twinery.org/donate</a>." + +#~ msgid "Story Formats" +#~ msgstr "Formats d'Histoire" + +#~ msgid "Set this format as default for stories" +#~ msgstr "Choisir ce format comme format par défaut pour toutes les histoires" + +#~ msgid "Remove this format" +#~ msgstr "Supprimer ce format" + +#~ msgid "Expand all search results" +#~ msgstr "Déplier les résultats de recherche" + +#~ msgid "Collapse all search results" +#~ msgstr "Replier tous les résultats de recherche" + +#~ msgid "Replace in this passage" +#~ msgstr "Remplacer dans ce passage" + +#~ msgid "Passage Name" +#~ msgstr "Nom du Passage" + +#~ msgid "Tag name" +#~ msgstr "Nom de la balise" + +#~ msgid "" +#~ "<strong>If you've never used Twine before,</strong> then " +#~ "welcome! The <a href=\"http://twinery.org/2guide\" target=\"_blank" +#~ "\">Twine 2 Guide</a> and the official wiki in general, are a " +#~ "great place to learn. Keep in mind that some articles on the wiki at " +#~ "large were written for Twine 1, which is a little bit different than this " +#~ "version. But most of the concepts are the same." +#~ msgstr "" +#~ "<strong>Si vous n'avez jamais utilisé Twine auparavant,</" +#~ "strong> bienvenue ! Le <a href=\"http://twinery.org/2guide\" target=" +#~ "\"_blank\">Guide de Twine 2</a> et le wiki officiel en général " +#~ "sont de bons endroits pour apprendre. Gardez en tête que certains " +#~ "articles du wiki on été écrits pour Twine 1, qui est un peu différent de " +#~ "cette version. Cependant, la plupart des concepts restent les mêmes." + +#~ msgid "" +#~ "You can also get help over at the <a href=\"http://twinery.org/forum\" " +#~ "target=\"_blank\">Twine forum, too." +#~ msgstr "" +#~ "Vous pouvez aussi obtenir de l'aide dans le <a href=\"http://twinery." +#~ "org/forum\" target=\"_blank\">forum de Twine." + +#~ msgid "Test story starting here" +#~ msgstr "Début de l'histoire de test" + +#~ msgid "Go to the story list" +#~ msgstr "Aller à la liste des histoires" + +#~ msgid "Show only story structure" +#~ msgstr "Montrer uniquement la structure de l'histoire" + +#~ msgid "Show only passage titles" +#~ msgstr "Montrer uniquement le titre des passages" + +#~ msgid "Show passage titles and excerpts" +#~ msgstr "Montrer le titre des passages et les extraits" + +#~ msgid "Play this story in test mode" +#~ msgstr "Lancer cette histoire en mode test" + +#~ msgid "Play this story" +#~ msgstr "Lancer cette histoire" + +#~ msgid "Add a new passage" +#~ msgstr "Ajouter un nouveau passage" + +#~ msgid "Quick Find" +#~ msgstr "Recherche Rapide" + +#~ msgid "Find and replace across the entire story" +#~ msgstr "Chercher et remplacer dans toute l'histoire" + +#~ msgid "Last changed date" +#~ msgstr "Date de dernière modification" + +#~ msgid "Story name" +#~ msgstr "Nom de l'histoire" + +#~ msgid "Create a brand-new story" +#~ msgstr "Créer une histoire toute fraîche" + +#~ msgid "Import a published story or Twine archive" +#~ msgstr "Importer une histoire publiée ou une archive Twine" + +#~ msgid "Save all stories to a Twine archive file" +#~ msgstr "Sauvegarder toutes les histoires dans un fichier d'archive Twine" + +#~ msgid "Work with story and proofing formats" +#~ msgstr "Utiliser les formats d'histoire et de correction" + +#~ msgid "Change the language Twine uses" +#~ msgstr "Changer la langue utilisée par Twine" + +#~ msgid "Browse online help" +#~ msgstr "Parcourir l'aide en ligne" + +#~ msgid "Use light theme" +#~ msgstr "Utiliser le thème clair" + +#~ msgid "Use dark theme" +#~ msgstr "Utiliser le thème sombre" + +#~ msgid "" +#~ "<strong>If you've never used Twine before,</strong> then " +#~ "welcome! The <a href=\"http://twinery.org/2guide\" target=\"_blank" +#~ "\">Twine 2 Guide</a> and the official wiki in general, are a " +#~ "great place to learn. Keep in mind that some articles on the wiki at " +#~ "larger were written for Twine 1, which is a little bit different than " +#~ "this version. But most of the concepts are the same." +#~ msgstr "" +#~ "<strong>Si vous n'avez jamais utilisé Twine auparavant,</" +#~ "strong> bienvenue ! Le <a href=\"http://twinery.org/2guide\" target=" +#~ "\"_blank\">Guide de Twine 2</a> et le wiki officiel en général " +#~ "sont de bons endroits pour apprendre. Gardez en tête que certains " +#~ "articles du wiki on été écrits pour Twine 1, qui est un peu différent de " +#~ "cette version. Cependant, la plupart des concepts restent les mêmes." + +#~ msgid "" +#~ "Two <b>very important</b> things to remember, though. Since " +#~ "your work is saved only in your browser, if you clear its saved data, " +#~ "then you'll lose your work! Not good. Remember to use that <i class=" +#~ "\"fa fa-briefcase\"></i> <strong>Archive</" +#~ "strong> button often. You can also publish individual stories to files " +#~ "using the <i class=\"fa fa-cog\"></i> menu on each story in " +#~ "the story list. Both archive and story files can always be re-imported " +#~ "into Twine." +#~ msgstr "" +#~ "Deux choses <b>très importantes</b> à noter, cependant. Étant " +#~ "donné que votre travail est sauvé uniquement dans votre navigateur, si " +#~ "vous effacez les données de navigation, vous perdez votre travail ! Pas " +#~ "terrible. Pensez à utiliser souvent le bouton <i class=\"fa fa-" +#~ "briefcase\"></i> <strong>Archive</strong>. Vous " +#~ "pouvez aussi exporter des histoires individuelles vers des fichiers en " +#~ "utilisant le <i class=\"fa fa-cog\"></i>menu dans chaque " +#~ "histoire de la liste d'histoire. L'archive et les fichiers d'histoire " +#~ "peuvent toujours être ré-importés dans Twine." + +#~ msgid "Don't Replace Any Stories" +#~ msgstr "Ne Remplacer Aucune Histoire" + +#~ msgid "My\\ Documents" +#~ msgstr "Mes\\ Documents" + +#~ msgid "Delete “%s”" +#~ msgstr "Supprimer “%s”" + +#~ msgid "Edit “%s”" +#~ msgstr "Modifier “%s”" + +#~ msgid "Set “%s” as starting point" +#~ msgstr "Choisir “%s” comme point de départ" + +#~ msgid "What should this story's name be?" +#~ msgstr "Quel nom voulez-vous donnez à cette histoire ?" + +#~ msgid "Save" +#~ msgstr "Sauvegarder" + +#~ msgid "This story was last changed at %s" +#~ msgstr "Cette histoire à été modifiée pour la dernière fois à %s" + +#~ msgid "" +#~ "The IFID for this story is %s. What's an IFID?)" +#~ msgstr "" +#~ "L'IFID pour cette histoire est %s. Qu'est-ce qu'un " +#~ "IFID?)" + +#~ msgid "License: %s" +#~ msgstr "Licence : %s" + +#~ msgid "Build" +#~ msgstr "Version" + +#~ msgid "" +#~ "Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +#~ "released under any terms, including commercial ones. Source Code Repository" +#~ msgstr "" +#~ "Twine 2.0 est distribué sous la licence GPL v3, mais toute œuvre créée via Twine " +#~ "peut être distribuée sous n'importe quels termes, y compris commerciaux. " +#~ "Dépôt du code " +#~ "source" + +#~ msgid "Code" +#~ msgstr "Code" + +#~ msgid "" +#~ "Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under " +#~ "the guidance of Robert Slimbach for Adobe
Nunito was designed by Vernon Adams" +#~ msgstr "" +#~ "Source Sans Pro et Source Code Pro ont été créées par Paul D. Hunt avec " +#~ "l'aide de Robert Slimbach pour Adobe
Nunito a été créée par
Vernon Adams" + +#~ msgid "" +#~ "If you love Twine as much as I do, please consider helping it grow with a " +#~ "donation. Twine is as an open source project that will always be free to " +#~ "use — and with your help, Twine will continue to thrive." +#~ msgstr "" +#~ "Si vous aimez Twine autant que moi, réfléchissez à l'aider via une " +#~ "donation. Twine est un projet open-source qui sera toujours gratuit à " +#~ "utiliser — et avec votre aide, Twine continuera à prospérer." + +#~ msgid "This message will only be shown to you once.
" +#~ msgstr "Ce message n'apparaîtra qu'une seule fois.
" + +#~ msgid "Proofing Formats" +#~ msgstr "Formats de Correction" + +#~ msgid "Add a New Format" +#~ msgstr "Ajouter un Nouveau Format" + +#~ msgid "To add a story format, enter its address below." +#~ msgstr "" +#~ "Pour ajouter un format d'histoire, entrez son adresse web ci-dessous." + +#~ msgid "Importing..." +#~ msgstr "Import en cours..." + +#~ msgid "" +#~ "If you've never used Twine before, then welcome! The Twine 2 Guide and the official wiki in general, are a great place to learn. Keep in " +#~ "mind that some articles on the wiki at large were written for Twine 1, " +#~ "which is a little bit different than this version. But most of the " +#~ "concepts are the same." +#~ msgstr "" +#~ "Si vous n'avez encore jamais utilisé Twine, alors " +#~ "bienvenue ! Le Guide de Twine 2, et le wiki officiel en général, sont de très " +#~ "bons endroits pour apprendre. N'oubliez pas que certains articles du wiki " +#~ "ont été écrits pour Twine 1, qui est un petit peu différent de cette " +#~ "version. La plupart des concepts sont cependant les mêmes." + +#~ msgid "" +#~ "You can also get help over at the Twine forum, too." +#~ msgstr "" +#~ "Vous pouvez aussi obtenir de l'aide sur le forum de Twine." + +#~ msgid "" +#~ "If you have used Twine 1 before, the guide also has " +#~ "details on what has changed in this version. Chief among them is a new " +#~ "default story format, Harlowe. But if you find you prefer the Twine 1 " +#~ "scripting syntax, try using SugarCube instead." +#~ msgstr "" +#~ "Si vous avez déjà utilisé Twine 1, ce guide comporte des " +#~ "détails sur ce qui a changé dans cette version. Le principal est un " +#~ "nouveau format d'histoire, Harlowe. Si vous préférez utiliser la syntaxe " +#~ "de script de Twine 1, essayez d'utiliser SugarCube à la place." + +#~ msgid "" +#~ "Two very important things to remember, though. Since your work is " +#~ "saved only in your browser, if you clear its saved data, then you'll lose " +#~ "your work! Not good. Remember to use that  Archive button often. You can also publish " +#~ "individual stories to files using the menu on " +#~ "each story in the story list. Both archive and story files can always be " +#~ "re-imported into Twine." +#~ msgstr "" +#~ "Deux choses très importantes à noter, cela dit. Étant donné que " +#~ "votre travail est sauvegardé uniquement dans votre navigateur, si vous " +#~ "effacez ses données, vous perdrez votre travail ! Pas glop. N'oubliez pas " +#~ "d'utiliser le bouton  " +#~ "Archive régulièrement. Vous pouvez aussi publier des " +#~ "histoires une par une en utilisant le menu " +#~ "dans chaque histoire de la liste. L'archive et les fichiers d'histoire " +#~ "peuvent être importées de nouveau dans Twine." + +#~ msgid "" +#~ "Secondly, anyone who can use this browser can see and make changes to " +#~ "your work. So if you've got a nosy kid brother, look into setting up " +#~ "a separate profile for yourself." +#~ msgstr "" +#~ "De plus, n'importe qui qui utilise ce navigateur peut voir et changer " +#~ "votre travail. Si vous avez un petit frère fouineur, pensez à vous " +#~ "créer un profil séparé juste pour vous." + +#~ msgid "" +#~ "There's now a folder named Twine in your Documents folder. Inside that is " +#~ "a Stories folder, where all your work will be saved. Twine saves as you " +#~ "work, so you don't have to worry about remembering to save it yourself. " +#~ "You can always open the folder your stories are saved to by using the " +#~ "Show Library item in the Twine menu." +#~ msgstr "" +#~ "Il y a maintenant un dossier nommé Twine dans votre dossier Documents. A " +#~ "l'intérieur vous trouverez un dossier Histoires, où tout votre travail " +#~ "sera sauvegardé. Twine sauvegarde au cours de votre travail, pour que " +#~ "vous n'ayez pas à penser à le sauver vous-même. Vous pouvez toujours " +#~ "ouvrir le dossier où vos histoires sont sauvegardées en utilisant le " +#~ "choix Montrer la Bibliothèque dans le menu Twine" + +#~ msgid "" +#~ "If you'd like to open a Twine story file you received from someone else, " +#~ "you can import it into your library using the Import From File link in the story list." +#~ msgstr "" +#~ "Si vous voulez ouvrir une histoire Twine que vous avez reçu de quelqu'un " +#~ "d'autre, vous pouvez l'importer dans votre bibliothèque en utilisant Importer depuis un Fichier dans la " +#~ "liste des histoires." + +#~ msgid "An error occurred while publishing your story. (%s)" +#~ msgstr "" +#~ "Une erreur est survenue lors de la publication de votre histoire. (%s)" + +#~ msgid "don't know how to sort stories by %s" +#~ msgstr "impossible de trier les histoires par %s" + +#~ msgid "You must give this passage a name." +#~ msgstr "Vous devez donner un nom à ce passage." + +#~ msgid "" +#~ "There is already a passage named \"%s.\" Please give this one a unique " +#~ "name." +#~ msgstr "" +#~ "Il y a déjà un passage nommé \"%s\". Veuillez donner à ce passage un nom " +#~ "unique." + +#~ msgid "/My\\ Documents" +#~ msgstr "/Mes\\ Documents" + +#~ msgid "/Twine" +#~ msgstr "/Twine" + +#~ msgid "/Stories" +#~ msgstr "/Histoires" + +#~ msgid "An error occurred while saving your story (%s)." +#~ msgstr "" +#~ "Une erreur est survenue pendant la sauvegarde de votre histoire (%s)." + +#~ msgid "An error occurred while deleting your story (%s)." +#~ msgstr "" +#~ "Une erreur est survenue pendant la suppression de votre histoire (%s)." + +#~ msgid "An error occurred while locking your library (%s)." +#~ msgstr "" +#~ "Une erreur est survenue pendant le verrouillage de votre bibliothèque " +#~ "(%s)." + +#~ msgid "An error occurred while unlocking your library (%s)." +#~ msgstr "" +#~ "Une erreur est survenue pendant le déverrouillage de votre bibliothèque " +#~ "(%s)." + +#~ msgid "Don't know how to do bubble action %s" +#~ msgstr "Impossible d'effectuer l'action de bulle %s" + +#~ msgid "Don't know how to do collapse action %s" +#~ msgstr "Impossible de replier %s" + +#~ msgid "Can't set locale to nonstring: %s" +#~ msgstr "Impossible de changer la locale vers : %s" + +#~ msgid "Editing “%s”" +#~ msgstr "Modification \"%s\"" + +#~ msgid "Any changes to the passage you're editing haven't been saved yet. " +#~ msgstr "" +#~ "Les changements sur le passage que vous modifiez n'ont pas encore été " +#~ "sauvegardés." + +#~ msgid "No matching passages found." +#~ msgstr "Pas de passages correspondants." + +#~ msgid "%d replacement was made in" +#~ msgid_plural "%d replacements were made in" +#~ msgstr[0] "%d remplacement effectué dans" +#~ msgstr[1] "%d remplacements effectués dans" + +#~ msgid "%d passage" +#~ msgid_plural "%d passages" +#~ msgstr[0] "%d passage" +#~ msgstr[1] "%d passages" + +#~ msgid "%1$s %2$s" +#~ msgstr "%1$s %2$s" + +#~ msgid "Are you sure you want to delete “%s”? " +#~ msgstr "Êtes-vous sûr de vouloir supprimer “%s” ?" + +#~ msgid "Don't see either mouse or touch coordinates on event" +#~ msgstr "" +#~ "Impossible de déterminer les coordonnées de curseur pour l'évènement" + +#~ msgid "Couldn't find original touch ID in movement event" +#~ msgstr "Impossible de trouver la touch ID pour l'évènement" + +#~ msgid "A problem occurred while saving your changes (%s)." +#~ msgstr "" +#~ "Un problème est survenu lors de la sauvegarde des modifications (%s)." + +#~ msgid "Are you sure you want to delete this passage?" +#~ msgid_plural "" +#~ "Are you sure you want to delete these %d passages? This cannot be undone." +#~ msgstr[0] "Êtes-vous sûr de vouloir supprimer %d passage ?" +#~ msgstr[1] "" +#~ "Êtes-vous sûr de vouloir supprimer ces %d passages ? Cette action ne peut " +#~ "être annulée." + +#~ msgid "This story does not have a starting point. " +#~ msgstr "Cette histoire n'a pas de point de départ." + +#~ msgid "" +#~ "Refreshed the playable version of your story in the previously-opened tab " +#~ "or window." +#~ msgstr "" +#~ "Version jouable de votre histoire mise à jour dans la fenêtre ou l'onglet " +#~ "précédemment ouvert(e)." + +#~ msgid "" +#~ "This story does not have a starting point. Use the icon on a passage to set this." +#~ msgstr "" +#~ "Cette histoire n'a pas de point de départ. Utilisez l'icône sur un passage pour en sélectionner un." + +#~ msgid "" +#~ "Refreshed the test version of your story in the previously-opened tab or " +#~ "window." +#~ msgstr "" +#~ "Version de test de votre histoire mise à jour dans la fenêtre ou l'onglet " +#~ "précédemment ouvert(e)." + +#~ msgid "Last saved at %s" +#~ msgstr "Dernière sauvegarde à %s" + +#~ msgid "Don't know what kind of format to set as default" +#~ msgstr "Impossible de déterminer quel format à utiliser par défaut." + +#~ msgid "" +#~ "This story does not have a starting point. Edit this story and use the icon on a passage to set this." +#~ msgstr "" +#~ "Cette histoire n'a pas de point de départ. Modifiez cette histoire et " +#~ "utilisez l'icône sur un passage pour en " +#~ "sélectionner un." + +#~ msgid "%d story was imported." +#~ msgid_plural "%d stories were imported." +#~ msgstr[0] "%d histoire a été importée." +#~ msgstr[1] "%d histoires ont été importées." diff --git a/src/locale/po/it.po b/src/locale/po/it.po new file mode 100644 index 000000000..200eb0959 --- /dev/null +++ b/src/locale/po/it.po @@ -0,0 +1,793 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.11\n" +"Last-Translator: Marco Secchi \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: it\n" + +#: src/dialogs/about/index.html +msgid "About Twine" +msgstr "A Proposito di Twine" + +#: src/dialogs/about/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine è uno strumento open-source per realizzare storie interattive e non " +"lineari." + +#: src/dialogs/about/index.html +msgid "" +"This application is released under the \\x3ca href=\"http:\\/\\/www.gnu.org/" +"licenses/gpl-3.0.html\">GPL v3\\x3c/a> license, but any work created with it " +"may be released under any terms, including commercial ones." +msgstr "" +"Questa applicazione è rilasciata sotto licenza \\x3ca href=\"http:\\/\\/www." +"gnu.org/licenses/gpl-3.0.html\">GPL v3\\x3c/a>, ma ogni lavoro realizzato " +"con essa può essere rilasciato sotto qualsiasi altra condizione, comprese " +"licenze commerciali." + +#: src/dialogs/about/index.html +msgid "Help Twine Grow With A Donation" +msgstr "Aiuta Twine a crescere con una donazione" + +#: src/dialogs/about/index.html +msgid "Source Code Repository" +msgstr "Repository del Codice Sorgente" + +#: src/dialogs/about/index.html +msgid "Translations" +msgstr "Traduzioni" + +#: src/dialogs/about/index.html +msgid "Libraries" +msgstr "Librerie" + +#: src/dialogs/about/index.html +msgid "Fonts" +msgstr "Font" + +#: src/dialogs/about/index.html +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for \\x3ca href=\"http:\\/\\/adobe.com/\">Adobe" +"\\x3c/a>\\x3cbr> Nunito was designed by \\x3ca href=\"http:\\/\\/code." +"newtypography.co.uk/\">Vernon Adams\\x3c/a>" +msgstr "" +"Source Sans Pro e Source Code Pro sono stati realizzati da Paul D. Hunt " +"sotto la supervisione di Robert Slimbach per \\x3ca href=\"http:\\/\\/adobe." +"com/\">Adobe\\x3c/a>\\x3cbr> Nunito è stato realizzato da \\x3ca href=\"http:" +"\\/\\/code.newtypography.co.uk/\">Vernon Adams\\x3c/a>" + +#: src/dialogs/about/index.html +msgid "Icons" +msgstr "Icone" + +#: src/dialogs/about/index.html +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Documento realizzato da Rob Gill di Noun Project" + +#: src/dialogs/about/index.html +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Question realizzato da Henry Ryder di Noun Project" + +#: src/dialogs/about/index.html +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Smile realizzato da jelio dimitrov di Noun Project" + +#: src/dialogs/app-donation/index.html +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Se ti piace Twine quanto piace a me, considera la possibilità di effettuare " +"una donazione. Twine è un progetto open source che sarà sempre gratuito e, " +"con il tuo aiuto, potrà continuare a migliorare.\t" + +#: src/dialogs/app-donation/index.html +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, creatore di Twine" + +#: src/dialogs/app-donation/index.html +msgid "No Thanks" +msgstr "No Grazie" + +#: src/dialogs/app-donation/index.html +msgid "Donate" +msgstr "Donazioni" + +#: src/dialogs/app-donation/index.html +msgid "" +"This message will only be shown to you once.<br>If you'd like to " +"donate to Twine development in the future, you can do so at <a href=\\" +"\"http:\\/\\/twinery.org/donate\\\" target=\\\"_blank\\\">http://twinery." +"org/donate</a>." +msgstr "" +"Questo messaggio verrà mostrato solo una volta.<br>Se, in futuro, " +"vorrai effettuare una donazione per lo sviluppo di Twine, potrai visitare " +"<a href=\\\"http:\\/\\/twinery.org/donate\\\" target=\\\"_blank\\\">" +"http://twinery.org/donate</a>." + +#: src/dialogs/formats/index.html +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"I formati Racconto controllano l’aspetto ed il comportamento delle storie " +"durante l’esecuzione." + +#: src/dialogs/formats/index.html +msgid "Use as Default" +msgstr "Utilizza come Predefinito" + +#: src/dialogs/formats/index.html +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"I formati di test creano una versione dei racconti specifica per il " +"controllo e la modifica." + +#: src/dialogs/formats/index.html +msgid "Use" +msgstr "Utilizza" + +#: src/dialogs/formats/index.html src/story-list-view/list-toolbar/index.js:24 +msgid "Add" +msgstr "Aggiungi" + +#: src/dialogs/formats/index.html src/dialogs/story-format/index.html +msgid "Loading..." +msgstr "In Caricamento…" + +#: src/dialogs/story-format/index.html +msgid "Story Format" +msgstr "Formato Racconto" + +#: src/dialogs/story-format/index.html +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Il Formato Racconto controlla l’aspetto ed il comportamento del racconto " +"stesso durante l’esecuzione." + +#: src/dialogs/story-import/index.html +#: src/story-list-view/list-toolbar/index.html +msgid "Import From File" +msgstr "Importa da File" + +#: src/dialogs/story-import/index.html +msgid "Import this file:" +msgstr "Importa questo file:" + +#: src/dialogs/story-import/index.html src/dialogs/confirm/index.js:31 +#: src/dialogs/prompt/index.js:15 +msgid "Cancel" +msgstr "Annulla" + +#: src/dialogs/story-import/index.html +msgid "Working..." +msgstr "Al lavoro..." + +#: src/dialogs/story-import/index.html +msgid "" +"Some stories you are importing already exist in your library. Please choose " +"which to replace. Any other stories in your file will be imported as well." +msgstr "" +"Alcune storie che stai importando esistono già nella tua libreria. Per " +"favore, scegli quale sostituire. Qualsiasi altro racconto nel tuo file verrà " +"comunque importata." + +#: src/dialogs/story-import/index.html +msgid "Don't Import Any Stories" +msgstr "Non importare nessun Racconto" + +#: src/dialogs/story-search/index.html +msgid "Find and Replace" +msgstr "Trova e sostituisci" + +#: src/dialogs/story-search/index.html +msgid "Search For" +msgstr "Cerca" + +#: src/dialogs/story-search/index.html +msgid "Include passage names" +msgstr "Includi i nomi dei passaggi" + +#: src/dialogs/story-search/index.html +msgid "Match case" +msgstr "Maiuscole/Minuscole" + +#: src/dialogs/story-search/index.html +msgid "Regular expression" +msgstr "Espressione Regolare" + +#: src/dialogs/story-search/index.html +msgid "Replace With" +msgstr "Sostituisci Con" + +#: src/dialogs/story-search/index.html +msgid "Replace All" +msgstr "Sostituisci Tutto" + +#: src/dialogs/story-search/index.html +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d passaggio corrispondente." +msgstr[1] "%d passaggi corrispondenti." + +#: src/dialogs/story-search/index.html +msgid "Searching..." +msgstr "Cerco…" + +#: src/dialogs/story-search/result.html +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d trovato" +msgstr[1] "%d trovati" + +#: src/dialogs/story-search/result.html +msgid "Replace in Passage" +msgstr "Sostituisci nel Passaggio" + +#: src/dialogs/story-stats/index.html +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Story Statistics" +msgstr "Statistiche del Racconto" + +#: src/editors/javascript/index.html +msgid "JavaScript" +msgstr "JavaScript" + +#: src/editors/javascript/index.html +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Qualsiasi codice JavaScript inserito qui verrà immediatamente eseguito " +"quando il tuo Racconto verrà aperto in un Web browser." + +#: src/editors/passage/index.html +msgid "A passage already exists with this name." +msgstr "Esiste già un passaggio con questo nome" + +#: src/editors/passage/tag-editor.html +msgid "Tag" +msgstr "Etichetta" + +#: src/editors/stylesheet/index.html +msgid "Stylesheet" +msgstr "Foglio di Stile" + +#: src/editors/stylesheet/index.html +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "Qualsiasi CSS inserito qui andrà a modificare l’aspetto del racconto." + +#: src/locale/view/index.html +msgid "Please choose which language you would like to use with Twine." +msgstr "Scegli quale lingua utilizzare quando utilizzi Twine." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Hi!" +msgstr "Ciao!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twine è uno strumento open-source per la realizzazione di storie non lineari " +"ed interattive. Ci sono alcune cose che dovresti conoscere prima di " +"cominciare." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Tell Me More" +msgstr "Dimmi di più" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Skip" +msgstr "Salta" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "New here?" +msgstr "Sei nuovo?" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\" +"\">Twine 2 Guide</a> and the official wiki in general, are a great " +"place to learn. Keep in mind that some articles on the wiki at large were " +"written for Twine 1, which is a little bit different than this version. But " +"most of the concepts are the same." +msgstr "" +"<strong>Se non hai mai utilizzato Twine,</strong>, benvenuto! La " +"<a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\\">Guida " +"a Twine 2</a> ed il wiki ufficiale sono degli ottimi punti di " +"partenza. Tieni a mente che alcuni articoli del wiki sono stati scritti per " +"Twine 1, che in alcuni punti è leggermente differente. La maggior parte dei " +"concetti sono comunque gli stessi." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"<strong>If you have used Twine 1 before,</strong> the guide also " +"has details on what has changed in this version. Chief among them is a new " +"default story format, Harlowe. But if you find you prefer the Twine 1 " +"scripting syntax, try using SugarCube instead." +msgstr "" +"<strong>Se hai utilizzato Twine 1 in precedenza,</strong> la " +"guida elenca anche i dettagli di cosa è cambiato in questa versione. Prima " +"di tutto c'è un nuovo formato default per il racconto, Harlowe. Ma se pensi " +"di preferire la sintassi di Twine 1, prova ad utilizzare SugarCube." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "OK" +msgstr "OK" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "Your work is automatically saved." +msgstr "Il tuo lavoro viene salvato automaticamente." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the <b>Show " +"Library</b> item in the <b>Twine</b> menu." +msgstr "" +"Ora c’è una cartella chiamata Twine nella tua cartella Documenti. Al suo " +"interno si trova una cartella chiamata Racconti, dove verranno salvati tutti " +"i tuoi lavori. Twine effettua i salvataggi mentre lavori, quindi non dovrai " +"preoccuparti di farlo manualmente. Potrai sempre aprire la cartella dei " +"salvataggi utilizzando <b>Mostra Libreria</b> nel menu di <" +"b>Twine</b>." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Siccome Twine continua a salvare il tuo lavoro, i file nella tua libreria " +"rimarranno bloccati fino a che Twine resterà aperto." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "That's it!" +msgstr "E’ tutto!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Thanks for reading, and have fun with Twine." +msgstr "Grazie per la lettura, e divertiti con Twine!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Go to the Story List" +msgstr "Vai all’elenco delle Storie" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Test" +msgstr "Testa" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play" +msgstr "Gioca" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Passage" +msgstr "Passaggio" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story JavaScript" +msgstr "Modifica il codice JavaScript del Racconto" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story Stylesheet" +msgstr "Modifica i Fogli Stile del Racconto" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Change Story Format" +msgstr "Cambia il Formato Racconto" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Rename Story" +msgstr "Rinomina Racconto" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Snap to Grid" +msgstr "Blocca sulla griglia" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "View Proofing Copy" +msgstr "Visualizza Copia di Test" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Publish to File" +msgstr "Pubblica come File" + +#: src/story-list-view/index.html +msgid "Drop a story file to import" +msgstr "Trascina un Racconto da importare" + +#: src/story-list-view/index.html +msgid "Sort By" +msgstr "Ordina per" + +#: src/story-list-view/index.html +msgid "Edit Date" +msgstr "Modifica data" + +#: src/story-list-view/index.html +msgid "Name" +msgstr "Nome" + +#: src/story-list-view/index.html +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Al momento non ci sono racconti salvati in Twine. Per cominciare, puoi " +"creare un nuovo racconto oppure importarne uno da file." + +#: src/story-list-view/list-toolbar/index.html src/nw/directories.js:69 +#: src/nw/menus.js:17 src/nw/menus.js:39 +msgid "Twine" +msgstr "Twine" + +#: src/story-list-view/list-toolbar/index.html +msgid "Story" +msgstr "Racconto" + +#: src/story-list-view/list-toolbar/index.html +msgid "Archive" +msgstr "Archivia" + +#: src/story-list-view/list-toolbar/index.html +msgid "Formats" +msgstr "Formati" + +#: src/story-list-view/list-toolbar/index.html +msgid "Language" +msgstr "Lingua" + +#: src/story-list-view/list-toolbar/index.html +msgid "Help" +msgstr "Aiuto" + +#: src/story-list-view/list-toolbar/index.html +msgid "version" +msgstr "versione" + +#: src/story-list-view/list-toolbar/index.html +msgid "Report a bug" +msgstr "Comunica un bug" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Play Story" +msgstr "Esegui Racconto" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Test Story" +msgstr "Testa Racconto" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Duplicate Story" +msgstr "Duplica Racconto" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Delete Story" +msgstr "Elimina Racconto" + +#: src/welcome/index.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\" +"\">Twine 2 Guide</a> and the official wiki in general, are a great " +"place to learn. Keep in mind that some articles on the wiki at larger were " +"written for Twine 1, which is a little bit different than this version. But " +"most of the concepts are the same." +msgstr "" +"<strong>Se non hai mai utilizzato Twine,</strong>, benvenuto! La " +"<a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\\">Guida " +"aTwine 2</a> ed il wiki ufficiale sono degli ottimi punti di partenza. " +"Tieni a mente che alcuni articoli del wiki sono stati scritti per Twine 1, " +"che in alcuni punti è leggermente differente. La maggior parte dei concetti " +"sono comunque gli stessi." + +#: src/welcome/index.html +msgid "Your work is saved only in your browser." +msgstr "Il tuo lavoro verrà salvato solamente nel browser." + +#: src/welcome/index.html +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Questo significa che non è necessario creare un account per utilizzare Twine " +"2, e qualsiasi cosa andrai a creare rimarrà esclusivamente nel tuo browser e " +"non sarà salvata su un server online." + +#: src/welcome/index.html +msgid "" +"Two <b>very important</b> things to remember, though. Since your " +"work is saved only in your browser, if you clear its saved data, then you'll " +"lose your work! Not good. Remember to use that <i class=\\\"fa fa-" +"briefcase\\\"></i> <strong>Archive</strong> button " +"often. You can also publish individual stories to files using the <i " +"class=\\\"fa fa-cog\\\"></i> menu on each story in the story list. " +"Both archive and story files can always be re-imported into Twine." +msgstr "" +"Ci sono due punti <b>molto importanti</b> da ricordare. Siccome " +"il tuo lavoro è salvato nel tuo browser, se elimini i suoi dati salvati, " +"perderai il tuo lavoro! Ricordati di utilizzare spesso il pulsante <i " +"class=\\\"fa fa-briefcase\\\"></i> <strong>Archivia</" +"strong>. Puoi anche pubblicare storie singole tramite file utilizzando il " +"menu <i class=\\\"fa fa-cog\\\"></i> che trovi nell'elenco dei " +"racconti. Sia i file che gli archivi possono essere reimportati in Twine." + +#: src/welcome/index.html +msgid "" +"Secondly, <b>anyone who can use this browser can see and make changes " +"to your work</b>. So if you've got a nosy kid brother, look into " +"setting up a separate profile for yourself." +msgstr "" +"In secondo luogo, <b>chiunque può accedere a questo browser potrà " +"vedere e modificare il tuo lavoro</b>. Se quindi hai un fratello " +"ficcanaso, considera la possibilità di creare un profilo a parte su questo " +"computer." + +#: src/data/actions.js:262 +msgid "a story format named “%s” already exists" +msgstr "Esiste già un formato racconto con nome “%s”" + +#: src/data/publish.js:75 +msgid "There is no starting point set for this story." +msgstr "Non esiste un punto di partenza per questo racconto" + +#: src/data/publish.js:81 +msgid "The passage set as starting point for this story does not exist." +msgstr "" +"Il passaggio selezionato come punto di partenza per questo racconto non " +"esiste." + +#: src/data/story-format.js:7 +msgid "Untitled Story Format" +msgstr "Formato Racconto senza nome" + +#: src/data/story.js:190 +msgid "Untitled Story" +msgstr "Racconto senza titolo" + +#: src/data/story.js:207 src/story-edit-view/index.js:195 +msgid "Untitled Passage" +msgstr "Passaggio senza titolo" + +#: src/data/story.js:210 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "" +"Tappa questo passaggio, dopodiché l’icona della matita per modificarlo." + +#: src/data/story.js:211 +msgid "Double-click this passage to edit it." +msgstr "Clicca due colte questo passaggio per modificarlo." + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: src/dialogs/app-update/index.js:40 +msgid "" +"A new version of Twine, , has been released." +msgstr "" +"E’ stata rilasciata una nuova versione di Twine, ." + +#: src/dialogs/app-update/index.js:44 +msgid "Download" +msgstr "Scarica" + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: src/dialogs/app-update/index.js:51 +msgid "Not Right Now" +msgstr "Non Ora" + +#. L10n: %1$s is the name of the story format; %2$s is +#: src/dialogs/formats/index.js:60 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "" +"Non è stato possibile caricare il formato del racconto “%1$s” " +"(%2$s)." + +#: src/dialogs/formats/index.js:102 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "" +"Non è stato possibile aggiungere il formato del racconto “%1$s” " +"(%2$s)." + +#. L10n: %s is the name of an author. +#: src/dialogs/formats/item.js:30 +msgid "by %s" +msgstr "di %s" + +#: src/dialogs/formats/item.js:51 +msgid "Are you sure?" +msgstr "Sei sicuro?" + +#: src/dialogs/formats/item.js:53 +msgid "Remove" +msgstr "Rimuovi" + +#: src/dialogs/story-import/index.js:56 +msgid "Don\\'t Replace Any Stories" +msgstr "Non sostituire nessun Racconto" + +#: src/dialogs/story-import/index.js:59 +msgid "Replace %d Story" +msgid_plural "Replace %d Stories" +msgstr[0] "Sostituisci %d Racconto" +msgstr[1] "Sostituisci %d Racconti" + +#: src/dialogs/story-stats/index.js:37 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Carattere" +msgstr[1] "Caratteri" + +#: src/dialogs/story-stats/index.js:51 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Parola" +msgstr[1] "Parole" + +#: src/dialogs/story-stats/index.js:85 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Collegamento" +msgstr[1] "Collegamenti" + +#: src/dialogs/story-stats/index.js:98 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Collegamento non funzionante" +msgstr[1] "Collegamenti non funzionanti" + +#: src/editors/passage/index.js:37 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Inserisci qui il corpo del tuo testo. Per collegare ad un altro passaggio, " +"aggiungi due parentesi quadre intorno al nome, [[in questo modo]]." + +#: src/editors/passage/index.js:181 +msgid "Editing \\u201c%s\\u201d" +msgstr "\\u201c%s\\u201d in modifica" + +#. L10n: %1$s is a filename; %2$s is the error message. +#: src/file/save.js:71 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "Non è stato possibile salvare “%1$s” (%2$s)." + +#. L10n: This is the folder name on OS X, Linux, and recent versions of Windows that a user's documents are stored in, relative to the user's home directory. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. Regardless, this must have a single forward slash (/) as its first character. +#: src/nw/directories.js:38 +msgid "/Documents" +msgstr "/Documents" + +#: src/nw/directories.js:51 +msgid "My\\\\ Documents" +msgstr "My\\\\ Documents" + +#: src/nw/directories.js:70 +msgid "Stories" +msgstr "Racconti" + +#: src/nw/menus.js:27 +msgid "Toggle Fullscreen" +msgstr "Aziona Fullscreen" + +#: src/nw/menus.js:44 +msgid "Quit" +msgstr "Chiudi" + +#: src/nw/menus.js:61 +msgid "Edit" +msgstr "Modifica" + +#: src/nw/menus.js:66 +msgid "Undo" +msgstr "Undo" + +#: src/nw/menus.js:79 +msgid "Cut" +msgstr "Taglia" + +#: src/nw/menus.js:88 +msgid "Copy" +msgstr "Copia" + +#: src/nw/menus.js:97 +msgid "Paste" +msgstr "Incolla" + +#: src/nw/menus.js:106 src/story-edit-view/passage-item/index.js:275 +msgid "Delete" +msgstr "Elimina" + +#: src/nw/menus.js:118 +msgid "Show Library" +msgstr "Mostra Libreria" + +#: src/story-edit-view/passage-item/index.js:260 +#: src/story-list-view/story-item/item-menu/index.js:78 +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Sei sicuro di voler eliminare “%s”? Questa azione sarà " +"definitiva." + +#: src/story-edit-view/passage-item/index.js:267 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "" +"(Tieni premuto il tasto Shift quando cancelli per saltare questo messaggio)" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:46 +#: src/story-list-view/story-item/item-menu/index.js:100 +msgid "What should “%s” be renamed to?" +msgstr "Qual’è il nuovo nome per “%s”?" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:51 +#: src/story-list-view/story-item/item-menu/index.js:105 +msgid "Rename" +msgstr "Rinomina" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:55 +#: src/story-list-view/story-item/item-menu/index.js:109 +#: src/story-list-view/story-item/item-menu/index.js:128 +msgid "Please enter a name." +msgstr "Inserisci un nome." + +#: src/story-list-view/index.js:79 +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d Racconto" +msgstr[1] "%d Racconti" + +#: src/story-list-view/list-toolbar/index.js:21 +msgid "What should your story be named?
(You can change this later.)" +msgstr "" +"Qual’è il nome del Racconto?
(successivamente potrà essere modificato)" + +#: src/story-list-view/list-toolbar/index.js:30 +msgid "A story with this name already exists." +msgstr "Esiste già un racconto con questo nome." + +#: src/story-list-view/list-toolbar/index.js:60 +msgid "Twine Archive.html" +msgstr "Twine Archive.html" + +#: src/story-list-view/story-item/item-menu/index.js:84 +msgid "Delete Forever" +msgstr "Elimina per sempre" + +#: src/story-list-view/story-item/item-menu/index.js:122 +msgid "What should the duplicate be named?" +msgstr "Come vuoi chiamare il duplicato?" + +#: src/story-list-view/story-item/item-menu/index.js:124 +msgid "Duplicate" +msgstr "Duplica" + +#: src/story-list-view/story-item/item-menu/index.js:126 +msgid "%s Copy" +msgstr "%s Copia" + +#: src/ui/quota-gauge/index.js:24 +msgid "%d%% space available" +msgstr "%d%% di spazio disponibile" diff --git a/src/locale/po/nl.po b/src/locale/po/nl.po new file mode 100644 index 000000000..f37c285f6 --- /dev/null +++ b/src/locale/po/nl.po @@ -0,0 +1,1152 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Twine\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-04 09:23+0200\n" +"PO-Revision-Date: 2015-07-04 14:05+0200\n" +"Last-Translator: Stefan Peeters \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.2\n" +"Language: nl\n" + +#: templates/localeview.html:4 +msgid "Please choose which language you would like to use with Twine." +msgstr "Selecteer a.u.b. welke taal u wilt gebruiken voor Twine." + +#: templates/localeview.html:12 +msgid "English" +msgstr "Engels" + +#: templates/localeview.html:19 +msgid "Spanish" +msgstr "Spaans" + +#: templates/storyeditview/passageeditmodal.html:8 +msgid "Passage Name" +msgstr "Passage naam" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +msgid "Tag" +msgstr "Label" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +msgid "Tag name" +msgstr "Label naam" + +#: templates/storyeditview/passageeditmodal.html:36 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Vul hier de tekst van je alinea in. Als je naar een andere passage wilt " +"linken zet dan de naam tussen twee vierkante haakjes, [[zoals dit]]." + +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +msgid "Delete “%s”" +msgstr "Verwijder “%s”" + +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +msgid "Edit “%s”" +msgstr "Bewerk “%s”" + +#: templates/storyeditview/passageitemview.html:24 +msgid "Test story starting here" +msgstr "Test verhaal begint hier" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +msgid "Set “%s” as starting point" +msgstr "Zet “%s” als start punt" + +#: templates/storyeditview/renamestorymodal.html:8 +#: templates/storyeditview/toolbar.html:31 +#: templates/storylistview/storyitemview.html:36 +msgid "Rename Story" +msgstr "Verhaal hernoemen" + +#: templates/storyeditview/renamestorymodal.html:14 +msgid "What should this story's name be?" +msgstr "Wat zou de naam van het verhaal moeten zijn?" + +#: templates/storyeditview/renamestorymodal.html:24 +msgid "Please enter a name." +msgstr "Vul a.u.b. een naam in." + +#: templates/storyeditview/renamestorymodal.html:28 +#: templates/storylistview/formatitem.html:7 +#: templates/storylistview/storylistview.html:25 +#: templates/storylistview/storylistview.html:50 +msgid "Cancel" +msgstr "Annuleren" + +#: templates/storyeditview/renamestorymodal.html:29 +msgid "Save" +msgstr "Opslaan" + +#: templates/storyeditview/scripteditmodal.html:8 +msgid "JavaScript" +msgstr "JavaScript" + +#: templates/storyeditview/scripteditmodal.html:14 +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"JavaScript die u hier invoert zal gelijk uitgevoerd worden als uw verhaal in " +"een Web browser wordt geopend" + +#: templates/storyeditview/searchmodal.html:7 +msgid "Find and Replace" +msgstr "Zoek en vervang" + +#: templates/storyeditview/searchmodal.html:12 +msgid "Search For" +msgstr "Zoek naar" + +#: templates/storyeditview/searchmodal.html:18 +msgid "Include passage names" +msgstr "Passage naam insluiten" + +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +msgid "Match case" +msgstr "Hoofdletter gevoelig" + +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +msgid "Regular expression" +msgstr "Reguliere expressie" + +#: templates/storyeditview/searchmodal.html:34 +msgid "Replace With" +msgstr "Verplaatsen met" + +#: templates/storyeditview/searchmodal.html:40 +msgid "Expand all search results" +msgstr "Alle zoekresultaten uitbreiden" + +#: templates/storyeditview/searchmodal.html:44 +msgid "Collapse all search results" +msgstr "Alle zoekresultaten invouwen" + +#: templates/storyeditview/searchmodal.html:49 +msgid "Replace All" +msgstr "Alles vervangen" + +#: templates/storyeditview/searchmodal.html:57 +msgid "Searching..." +msgstr "Zoeken..." + +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d resultaat" +msgstr[1] "%d resultaten" + +#: templates/storyeditview/searchmodalresult.html:22 +msgid "Replace in this passage" +msgstr "In deze passage vervangen" + +#: templates/storyeditview/searchmodalresult.html:23 +msgid "Replace in Passage" +msgstr "Verplaats in passge" + +#: templates/storyeditview/statsmodal.html:8 +#: templates/storyeditview/toolbar.html:39 +msgid "Story Statistics" +msgstr "Verhaal statistieken" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +msgid "This story was last changed at %s" +msgstr "Dit verhaal is als laatst veranderd op %s" + +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +msgid "" +"The IFID for this story is %s. What's an IFID?)" +msgstr "" +"Het IFID van dit verhaal is %s. Wat is een IFID?)" + +#: templates/storyeditview/storyformatmodal.html:7 +msgid "Story Format" +msgstr "Verhaal formaat" + +#: templates/storyeditview/storyformatmodal.html:12 +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Een verhaal formaat bepaalt het uiterlijk en gedrag van het verhaal tijdens " +"het spelen." + +#: templates/storyeditview/storyformatmodal.html:16 +#: templates/storylistview/modals/formatsmodal.html:58 +msgid "Loading..." +msgstr "Laden..." + +#: templates/storyeditview/stylesheeteditmodal.html:8 +msgid "Stylesheet" +msgstr "Stylesheet" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "" +"CSS die hier is ingevoerd zal het standaard uiterlijk van je verhaal " +"overschrijven" + +#: templates/storyeditview/toolbar.html:5 +msgid "Go to the story list" +msgstr "Ga naar de verhaal lijst" + +#: templates/storyeditview/toolbar.html:19 +msgid "Edit Story JavaScript" +msgstr "Pas verhaal JavaScript aan" + +#: templates/storyeditview/toolbar.html:23 +msgid "Edit Story Stylesheet" +msgstr "Pas verhaal StyleSheet aan" + +#: templates/storyeditview/toolbar.html:27 +msgid "Change Story Format" +msgstr "Verander verhaal formaat" + +#: templates/storyeditview/toolbar.html:35 +msgid "Snap to Grid" +msgstr "Uitlijnen op raster" + +#: templates/storyeditview/toolbar.html:45 +msgid "View Proofing Copy" +msgstr "Kijk naar controle kopie" + +#: templates/storyeditview/toolbar.html:49 +#: templates/storylistview/storyitemview.html:32 +msgid "Publish to File" +msgstr "Naar bestand publiceren" + +#: templates/storyeditview/toolbar.html:62 +msgid "Quick Find" +msgstr "Snel zoeken" + +#: templates/storyeditview/toolbar.html:63 +msgid "Find and replace across the entire story" +msgstr "Zoek en verplaats in het hele verhaal" + +#: templates/storyeditview/toolbar.html:67 +msgid "Show only story structure" +msgstr "Laat alleen verhaal structuur zien" + +#: templates/storyeditview/toolbar.html:71 +msgid "Show only passage titles" +msgstr "Laat alleen passage namen zien" + +#: templates/storyeditview/toolbar.html:75 +msgid "Show passage titles and excerpts" +msgstr "Laat passage namen en fragmenten zien" + +#: templates/storyeditview/toolbar.html:81 +msgid "Play this story in test mode" +msgstr "Speel dit verhaal in test modus" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +msgid "Test" +msgstr "Test" + +#: templates/storyeditview/toolbar.html:88 +msgid "Play this story" +msgstr "Speel dit verhaal" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +msgid "Play" +msgstr "Speel" + +#: templates/storyeditview/toolbar.html:95 +msgid "Add a new passage" +msgstr "Voeg een nieuwe passage toe" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 +#: js/views/storyeditview/modals/statsmodal.js:75 +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "Passage" +msgstr[1] "Passages" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +msgid "by %s" +msgstr "door %s" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +msgid "License: %s" +msgstr "Licentie: %s" + +#: templates/storylistview/formatitem.html:5 +msgid "Are you sure?" +msgstr "Weet je het zeker?" + +#: templates/storylistview/formatitem.html:6 +msgid "Remove" +msgstr "Verwijder" + +#: templates/storylistview/formatitem.html:12 +msgid "Remove this format" +msgstr "Verwijder dit formaat" + +#: templates/storylistview/formatitem.html:14 +msgid "Set this format as default for stories" +msgstr "Zet dit formaat als standaard formaat voor verhalen" + +#: templates/storylistview/modals/aboutmodal.html:8 +msgid "About Twine" +msgstr "Over Twine" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +msgid "Build" +msgstr "Versie" + +#: templates/storylistview/modals/aboutmodal.html:25 +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +"released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Twine 2.0 is uitgegeven onder de GPL v3 licentie, maar elk werk wat er mee gemaakt is mag " +"onder alle voorwaarden, inclusief commerciele uitgegeven worden. Source Code Archief" + +#: templates/storylistview/modals/aboutmodal.html:31 +msgid "Help Twine Grow With A Donation" +msgstr "Help Twine te groeien met een donatie" + +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +msgid "Code" +msgstr "Code" + +#: templates/storylistview/modals/aboutmodal.html:55 +msgid "Libraries" +msgstr "Libraries" + +#: templates/storylistview/modals/aboutmodal.html:74 +msgid "Fonts" +msgstr "Lettertypes" + +#: templates/storylistview/modals/aboutmodal.html:78 +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for Adobe
Nunito was designed by
Vernon Adams" +msgstr "" +"Source Sans Pro and Source Code Pro zijn ontworpen door Paul D. Hunt onder " +"begelijding van Robert Slimbach voor Adobe
Nunito is ontworpen door Vernon Adams" + +#: templates/storylistview/modals/aboutmodal.html:82 +msgid "Icons" +msgstr "Iconen" + +#: templates/storylistview/modals/aboutmodal.html:87 +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Document ontworpen door Rob Gill van The Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:88 +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Question ontworpen door Henry Ryder van The Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:89 +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Smile ontworpen door Jelio Dimitrov van The Noun Project" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +msgid "" +"A new version of Twine, , has been released." +msgstr "" +"Een nieuwe versie van Twine, , is uitgebracht." + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +msgid "Not Right Now" +msgstr "Niet op dit moment" + +#: templates/storylistview/modals/appupdatemodal.html:21 +msgid "Download" +msgstr "Download" + +#: templates/storylistview/modals/donatemodal.html:6 +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is as an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Als je zoveel van Twine houd als mij, overweeg dan ulstublieft Twine te " +"helpen groeien met een donatie. Twine is een open souce project dat altijd " +"gratis zal zijn om te gebruiken. En met uw hulp zal Twine blijven bloeien." + +#: templates/storylistview/modals/donatemodal.html:10 +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, Twine maker" + +#: templates/storylistview/modals/donatemodal.html:16 +msgid "Donate" +msgstr "Doneer" + +#: templates/storylistview/modals/donatemodal.html:17 +msgid "No Thanks" +msgstr "Nee bedankt" + +#: templates/storylistview/modals/donatemodal.html:21 +msgid "This message will only be shown to you once.
" +msgstr "Dit bericht zal maar een keer aan je gezien laten worden." + +#: templates/storylistview/modals/formatsmodal.html:9 +msgid "Story Formats" +msgstr "Verhaal formaten" + +#: templates/storylistview/modals/formatsmodal.html:10 +msgid "Proofing Formats" +msgstr "Controle formaten" + +#: templates/storylistview/modals/formatsmodal.html:11 +msgid "Add a New Format" +msgstr "Nieuw formaat toevoegen" + +#: templates/storylistview/modals/formatsmodal.html:20 +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Verhaal formaten passen het uiterlijk en gedrag van verhalen aan tijdens het " +"spelen." + +#: templates/storylistview/modals/formatsmodal.html:30 +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Controle formaten maakt een versie van het verhaal gemaakt voor bewerken en " +"proeflezen." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +msgid "To add a story format, enter its address below." +msgstr "Vul onder een adres in om een verhaal formaat toe te voegen." + +#: templates/storylistview/modals/formatsmodal.html:50 +#: templates/storylistview/storylistview.html:26 +msgid "Add" +msgstr "Voeg toe" + +#: templates/storylistview/storyitemview.html:24 +msgid "Play Story" +msgstr "Speel verhaal" + +#: templates/storylistview/storyitemview.html:28 +msgid "Test Story" +msgstr "Test verhaal" + +#: templates/storylistview/storyitemview.html:40 +msgid "Duplicate Story" +msgstr "Verhaal dupliceren" + +#: templates/storylistview/storyitemview.html:46 +msgid "Delete Story" +msgstr "Verhaal verwijderen" + +#: templates/storylistview/storylistview.html:5 +msgid "Twine" +msgstr "Twine" + +#: templates/storylistview/storylistview.html:9 +msgid "Create a brand-new story" +msgstr "Maak een nieuw verhaal" + +#: templates/storylistview/storylistview.html:10 +msgid "Story" +msgstr "Verhaal" + +#: templates/storylistview/storylistview.html:17 +msgid "What should your story be named?
(You can change this later.)" +msgstr "Hoe moet het verhaal genoemd worden? (Je kunt dit later veranderen.)" + +#: templates/storylistview/storylistview.html:34 +msgid "Import a published story or Twine archive" +msgstr "Importeer een gepubliceerd verhaal of Twine archief" + +#: templates/storylistview/storylistview.html:35 +msgid "Import From File" +msgstr "Importeer vanuit bestand" + +#: templates/storylistview/storylistview.html:42 +msgid "Import this file:" +msgstr "Importeer dit bestand:" + +#: templates/storylistview/storylistview.html:59 +msgid "Importing..." +msgstr "Importeren..." + +#: templates/storylistview/storylistview.html:67 +msgid "Save all stories to a Twine archive file" +msgstr "Sla alle verhalen op naar een Twine archief bestand" + +#: templates/storylistview/storylistview.html:68 +msgid "Archive" +msgstr "Archief" + +#: templates/storylistview/storylistview.html:73 +msgid "Work with story and proofing formats" +msgstr "Werk met verhaal en controle formaten" + +#: templates/storylistview/storylistview.html:74 +msgid "Formats" +msgstr "Formaten" + +#: templates/storylistview/storylistview.html:79 +msgid "Change the language Twine uses" +msgstr "Verander de taal die Twine gebruikt" + +#: templates/storylistview/storylistview.html:80 +msgid "Language" +msgstr "Taal" + +#: templates/storylistview/storylistview.html:85 +msgid "Browse online help" +msgstr "Online hulp raadplegen" + +#: templates/storylistview/storylistview.html:86 +msgid "Help" +msgstr "Help" + +#: templates/storylistview/storylistview.html:101 +msgid "version" +msgstr "versie" + +#: templates/storylistview/storylistview.html:103 +msgid "Report a bug" +msgstr "Een bug raporteren" + +#: templates/storylistview/storylistview.html:111 +msgid "Stories" +msgstr "Verhalen" + +#: templates/storylistview/storylistview.html:114 +msgid "Sort By" +msgstr "Sorteer met" + +#: templates/storylistview/storylistview.html:116 +msgid "Last changed date" +msgstr "Datum van de laatste verandering" + +#: templates/storylistview/storylistview.html:117 +msgid "Edit Date" +msgstr "Bewerk datum" + +#: templates/storylistview/storylistview.html:120 +msgid "Story name" +msgstr "Verhaal naam" + +#: templates/storylistview/storylistview.html:121 +msgid "Name" +msgstr "Naam" + +#: templates/storylistview/storylistview.html:128 +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Er zijn geen opgeslagen verhalen in Twine op dit moment. Om te beginnen kun " +"een nieuw verhaal maken" + +#: templates/welcomeview.html:6 +msgid "Hi!" +msgstr "Hallo!" + +#: templates/welcomeview.html:10 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twine is een open-source programma om interactieve, niet-lineaire verhalen " +"te vertellen. Er zijn een paar dingen die je moet weten voordat je begint." + +#: templates/welcomeview.html:14 +msgid "Tell Me More" +msgstr "Vertel me meer" + +#: templates/welcomeview.html:15 +msgid "Skip" +msgstr "Overslaan" + +#: templates/welcomeview.html:23 +msgid "New here?" +msgstr "Ben je hier nieuw?" + +#: templates/welcomeview.html:27 +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide " +"and the official wiki in general, are a great place to learn. Keep in mind " +"that some articles on the wiki at large were written for Twine 1, which is a " +"little bit different than this version. But most of the concepts are the " +"same." +msgstr "" +"Als je nog nooit Twine hebt gebruikt, welkom! De Twine 2 Handleiding " +"en de officiële wiki, zijn goede plaatsen om te leren werken met Twine. " + +#: templates/welcomeview.html:31 +msgid "" +"You can also get help over at the Twine forum, too." +msgstr "" +"Je kunt ook hulp krijgen op het Twine forum." + +#: templates/welcomeview.html:35 +msgid "" +"If you have used Twine 1 before, the guide also has details " +"on what has changed in this version. Chief among them is a new default story " +"format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, " +"try using SugarCube instead." +msgstr "" +"Als je Twine 1 voorheen hebt gebruikt, dan heeft de " +"handleiding ook details over wat er is veranderd in deze versie. De grootste " +"verandering is dat er een nieuw standaard verhaal formaat is, Harlowe. Maar " +"als je de Twine 1 scripting syntax prefereert probeer dan SugarCube." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 +#: templates/welcomeviewnw.html:23 +msgid "OK" +msgstr "Oke" + +#: templates/welcomeview.html:47 +msgid "Your work is saved only in your browser." +msgstr "Je werk is alleen opgeslagen in de browser." + +#: templates/welcomeview.html:51 +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Dat betekent dat je geen account nodig hebt om Twine 2 te gebruiken, en dat " +"alles wat je maakt wordt niet opgeslagen op een of andere server. Het blijft " +"hier, in je browser." + +#: templates/welcomeview.html:55 +msgid "" +"Two very important things to remember, though. Since your work is " +"saved only in your browser, if you clear its saved data, then you'll lose " +"your work! Not good. Remember to use that  Archive button often. You can also publish " +"individual stories to files using the menu on " +"each story in the story list. Both archive and story files can always be re-" +"imported into Twine." +msgstr "" +"Er zijn wel twee hele belangrijke dingen om te onthouden. Omdat je " +"werk opgeslagen in je browser verlies je als je werk als de browser gegeven " +"wist! Niet goed. Denk er aan om de  " +"Archieveer knop vaak te gebruiken. Je kunt ook individuele " +"verhalen publiceren naar een bestand met het " +"menu op elk verhaal in de verhalen lijst. Archieven en verhaal bestanden " +"kunnen beide opnieuw geïmporteerd worden in Twine." + +#: templates/welcomeview.html:59 +msgid "" +"Secondly, anyone who can use this browser can see and make changes to " +"your work. So if you've got a nosy kid brother, look into setting up a " +"separate profile for yourself." +msgstr "" +"Ten tweede, iedereen die deze browser gebruikt kan je werk zien en hier " +"aanpassingen aan maken<\\b>. Dus als je een nieuwsgierig broertje hebt, kun " +"je proberen een apart profiel voor jezelf op te zetten." + +#: templates/welcomeview.html:71 +msgid "That's it!" +msgstr "Dat is het!" + +#: templates/welcomeview.html:75 +msgid "Thanks for reading, and have fun with Twine." +msgstr "Bedankt voor het lezen en heb veel plezier met Twine." + +#: templates/welcomeview.html:79 +msgid "Go to the Story List" +msgstr "Ga naar de verhaal lijst" + +#: templates/welcomeviewnw.html:7 +msgid "Your work is automatically saved." +msgstr "Je werk wordt automatisch opgeslagen." + +#: templates/welcomeviewnw.html:11 +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the Show " +"Library item in the Twine menu." +msgstr "" +"Er is nou een map genaamd Twine in je Documenten map. In deze map is een map " +"Verhalen waar al je werk opgeslagen zal worden. Twine slaat alles op terwijl " +"je aan het werk bent, dus je hoeft je geen zorgen te maken om je werk op te " +"slaan. Je kunt altijd de map waar je verhalen opgeslagen worden openen met " +"het Bibliotheek laten zien optie in het Twine<\\b> menu." + +#: templates/welcomeviewnw.html:15 +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Omdat Twine je werk continu opslaat zijn de bestanden in je verhaal " +"bibliotheek altijd vergrendeld voor bewerken zolang Twine open is." + +#: templates/welcomeviewnw.html:19 +msgid "" +"If you'd like to open a Twine story file you received from someone else, you " +"can import it into your library using the " +"Import From File link in the story list." +msgstr "" +"Als je een Twine verhaal bestand wilt openen dat je van iemand anders hebt " +"ontvangen, kun je het importeren naar je bibliotheek met de Importeer vanuit bestand link in je verhaal lijst." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:226 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” kon niet opgeslagen worden (%2$s)." + +#. L10n: %s is the error message. +#: js/app.js:283 +#, javascript-format +msgid "An error occurred while publishing your story. (%s)" +msgstr "Een fout is opgetreden tijdens het publiceren van je verhaal.(%s)" + +#: js/app.js:314 +msgid "Twine Archive.html" +msgstr "Twine archief.html" + +#. L10n: An internal error. %s is a bad sort criterion. +#: js/collections/storycollection.js:35 +#, javascript-format +msgid "don't know how to sort stories by %s" +msgstr "kan verhalen niet sorteren met %s" + +#: js/models/passage.js:19 +msgid "Untitled Passage" +msgstr "Naamloze passage" + +#: js/models/passage.js:21 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Druk op deze passage en dan het potlood icoon om het aan te passen." + +#: js/models/passage.js:22 +msgid "Double-click this passage to edit it." +msgstr "Klik twee keer op deze passage om het aan te passen." + +#: js/models/passage.js:78 +msgid "You must give this passage a name." +msgstr "Je moet deze passage een naam geven." + +#: js/models/passage.js:85 +#, javascript-format +msgid "" +"There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "" +"Er is al een passage genaamd \"%s\". Geef deze passage een unieke naam." + +#: js/models/story.js:16 +msgid "Untitled Story" +msgstr "Naamloos verhaal" + +#: js/models/story.js:112 +msgid "There is no starting point set for this story." +msgstr "Er is geen startpunt voor dit verhaal ingesteld." + +#: js/models/story.js:115 +msgid "The passage set as starting point for this story does not exist." +msgstr "" +"De passage die is ingesteld als startpunt voor dit verhaal bestaat niet." + +#: js/models/storyformat.js:38 +msgid "Untitled Story Format" +msgstr "Naamloos Verhaal Formaat" + +#: js/nwui.js:81 +msgid "Toggle Fullscreen" +msgstr "Volledig scherm omschakelen" + +#: js/nwui.js:100 +msgid "Quit" +msgstr "Stoppen" + +#: js/nwui.js:115 +msgid "Edit" +msgstr "Bewerken" + +#: js/nwui.js:120 +msgid "Undo" +msgstr "Ongedaan maken" + +#: js/nwui.js:132 +msgid "Cut" +msgstr "Knippen" + +#: js/nwui.js:142 +msgid "Copy" +msgstr "Kopieren" + +#: js/nwui.js:152 +msgid "Paste" +msgstr "Plakken" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 +#: js/views/storyeditview/storyeditview.js:126 +msgid "Delete" +msgstr "Verwijderen" + +#: js/nwui.js:182 +msgid "Show Library" +msgstr "Bibliotheek laten zien" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:239 +msgid "/Documents" +msgstr "/Documenten" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:249 js/nwui.js:250 +msgid "/My\\ Documents" +msgstr "/Mijn\\ Documenten" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:260 js/nwui.js:264 +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:260 +msgid "/Stories" +msgstr "/Verhalen" + +#. L10n: %s is the error message. +#: js/nwui.js:430 +#, javascript-format +msgid "An error occurred while saving your story (%s)." +msgstr "Er is fout opgestreden tijden het opslaan van je verhaal (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:457 +#, javascript-format +msgid "An error occurred while deleting your story (%s)." +msgstr "Er is een fout opgetreden tijdens het verwijderen van je verhaal(%s)" + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:527 +#, javascript-format +msgid "An error occurred while locking your library (%s)." +msgstr "" +"Er is een fout opgetreden tijdens het vergrendelen van je bibliotheek (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#, javascript-format +msgid "An error occurred while unlocking your library (%s)." +msgstr "" +"Er is een fout opgetreden tijdens het ontgrendelen van je bibliotheek (%s)." + +#. L10n: An internal error message related to UI components. +#: js/ui.js:166 +#, javascript-format +msgid "Don't know how to do bubble action %s" +msgstr "Kan actie %s niet bubbelen" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:219 +#, javascript-format +msgid "Don't know how to do collapse action %s" +msgstr "Kan actie %s niet invouwen" + +#. L10n: An internal error when changing locale. +#: js/views/localeview.js:27 +#, javascript-format +msgid "Can't set locale to nonstring: %s" +msgstr "Kan vertalen niet veranderen naar: %s" + +#: js/views/storyeditview/editors/passageeditor.js:120 +#: js/views/storyeditview/storyeditview.js:563 +#, javascript-format +msgid "Editing “%s”" +msgstr "\"%s\" aan het bewerken" + +#: js/views/storyeditview/editors/passageeditor.js:211 +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "" +"Elke verandering aan de passage die je aan het bewerken bent zijn nog niet " +"opgeslagen." + +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d passage komt overeen." +msgstr[1] "%d passages komen overeen." + +#: js/views/storyeditview/modals/searchmodal.js:102 +msgid "No matching passages found." +msgstr "Geen overeenkomende passages gevonden." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "Er is %d stuk tekst vervangen in" +msgstr[1] "Er zijn %d stukken tekst vervangen in" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d passage" +msgstr[1] "%d passages" + +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Karakter" +msgstr[1] "Karakters" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Woord" +msgstr[1] "Woorden" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Link" +msgstr[1] "Links" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Gebroken link" +msgstr[1] "Gebroken links" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 +#: js/views/storylistview/modals/formatsmodal.js:74 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "Het verhaal formaat %1$s kon niet geladen worden (%2$s)." + +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +msgid "Are you sure you want to delete “%s”? " +msgstr "Weet je zeken dat je %s wilt verwijderen?" + +#: js/views/storyeditview/passageitemview.js:169 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "(Hou de shift toets ingedrukt als je dit bericht wilt overslaan.)" + +#. L10n: An internal error related to handling user input. +#: js/views/storyeditview/passageitemview.js:461 +msgid "Don't see either mouse or touch coordinates on event" +msgstr "Kan geen muis of touch coördinaten zien in event." + +#. L10n: An internal error related to user input. +#: js/views/storyeditview/passageitemview.js:523 +msgid "Couldn't find original touch ID in movement event" +msgstr "Kan het originelen touch ID in bewegings-event niet vinden" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 +#: js/views/storyeditview/storyeditview.js:64 +#, javascript-format +msgid "A problem occurred while saving your changes (%s)." +msgstr "" +"Een probleem is opgetreden tijdens het opslaan van je veranderingen (%s)." + +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +msgid "Are you sure you want to delete this passage?" +msgid_plural "" +"Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "Weet je zeker dat je deze %d passage wilt verwijderen?" +msgstr[1] "" +"Weet je zeker dat je deze %d passages wilt verwijderen? Dit kan niet " +"ongedaan worden?" + +#: js/views/storyeditview/storyeditview.js:268 +msgid "This story does not have a starting point. " +msgstr "Dit verhaal heeft geen start punt." + +#: js/views/storyeditview/storyeditview.js:282 +msgid "" +"Refreshed the playable version of your story in the previously-opened tab or " +"window." +msgstr "" +"De speelbare versie van je verhaal in een voorheen geopende tab of venster " +"is ververst." + +#: js/views/storyeditview/storyeditview.js:312 +#: js/views/storyeditview/storyeditview.js:352 +#: js/views/storylistview/storyitemview.js:110 +msgid "" +"This story does not have a starting point. Use the icon on a passage to set this." +msgstr "" +"Dit verhaal heeft geen start punt. Gebruikt het icoon op een passage om dit in te stellen." + +#: js/views/storyeditview/storyeditview.js:325 +msgid "" +"Refreshed the test version of your story in the previously-opened tab or " +"window." +msgstr "" +"De test versie van je verhaal in een voorheen geopende tab of venster is " +"ververst." + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a localized date and time +#: js/views/storyeditview/storyeditview.js:573 +#: js/views/storyeditview/toolbar.js:94 +#, javascript-format +msgid "Last saved at %s" +msgstr "Laatst opgeslagen op %s" + +#: js/views/storylistview/modals/formatsmodal.js:137 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "Het verhaal formaat van %1$s kon niet toegevoegd worden (%2$s)." + +#. L10n: An internal error related to story formats. +#: js/views/storylistview/modals/formatsmodal.js:246 +msgid "Don't know what kind of format to set as default" +msgstr "Weet niet welk formaat als standaard in te stellen" + +#: js/views/storylistview/storagequota.js:21 +#: js/views/storylistview/storagequota.js:44 +#: js/views/storylistview/storagequota.js:49 +#, javascript-format +msgid "%d%% space available" +msgstr "%d%% ruimte beschikbaar" + +#: js/views/storylistview/storyitemview.js:80 +#: js/views/storylistview/storyitemview.js:94 +msgid "" +"This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "" +"Dit verhaal heeft geen startpunt. Pas dit verhaal aan en gebruik het icoon van een passage om dit in te stellen." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Weet je zeker dat je \"%s\" wilt verwijderen? Dit kan niet ongedaan worden" + +#: js/views/storylistview/storyitemview.js:125 +msgid "Delete Forever" +msgstr "Verwijder voor altijd" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +msgid "What should “%s” be renamed to?" +msgstr "Wat moet de nieuwe naam naam van \"%s\" moeten zijn?" + +#: js/views/storylistview/storyitemview.js:138 +msgid "Rename" +msgstr "Hernoem" + +#: js/views/storylistview/storyitemview.js:155 +msgid "What should the duplicate be named?" +msgstr "Hoe moet de kopie genoemd worden?" + +#: js/views/storylistview/storyitemview.js:156 +msgid "Duplicate" +msgstr "Dupliceer" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +msgid "%s Copy" +msgstr "%s Kopie" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "%d verhaal is geïmporteerd" +msgstr[1] "%d verhalen zijn geïmporteerd" + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d Verhaal" +msgstr[1] "%d Verhalen" diff --git a/src/locale/po/piglatin.po b/src/locale/po/piglatin.po new file mode 100644 index 000000000..e3f2d1e68 --- /dev/null +++ b/src/locale/po/piglatin.po @@ -0,0 +1,1217 @@ +msgid "" +msgstr "" +"Project-Id-Version: node-gettext\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-19 23:45-0500\n" +"PO-Revision-Date: \n" +"Last-Translator: Chris Klimas \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.1\n" + +#: templates/storyeditview/passageeditmodal.html:8 +msgid "Passage Name" +msgstr "Assagepay Amenay" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +msgid "Tag" +msgstr "Agtay" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +msgid "Tag name" +msgstr "Agtay amenay" + +#: templates/storyeditview/passageeditmodal.html:36 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Enterway ethay odybay exttay ofway yourway assagepay erehay. Otay inklay " +"otay anotherway assagepay, utpay otway uaresqay acketsbray aroundway itsway " +"amenay, [[ikelay isthway]]." + +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +msgid "Delete “%s”" +msgstr "Eleteday “%s”" + +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +msgid "Edit “%s”" +msgstr "Editway “%s”" + +#: templates/storyeditview/passageitemview.html:24 +msgid "Test story starting here" +msgstr "Esttay orystay artingstay erehay" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +msgid "Set “%s” as starting point" +msgstr "Etsay “%s” asway artingstay ointpay" + +#: templates/storyeditview/renamestorymodal.html:8 +#: templates/storyeditview/toolbar.html:31 +#: templates/storylistview/storyitemview.html:40 +msgid "Rename Story" +msgstr "Enameray orystay" + +#: templates/storyeditview/renamestorymodal.html:14 +msgid "What should this story's name be?" +msgstr "Atwhay ouldshay isthay ory'sstay amenay ebay?" + +#: templates/storyeditview/renamestorymodal.html:24 +msgid "Please enter a name." +msgstr "Easeplay enterway away amenay." + +#: templates/storyeditview/renamestorymodal.html:28 +#: templates/storylistview/formatitem.html:7 +#: templates/storylistview/storylistview.html:25 +#: templates/storylistview/storylistview.html:50 +msgid "Cancel" +msgstr "Ancelcay" + +#: templates/storyeditview/renamestorymodal.html:29 +msgid "Save" +msgstr "Avesay" + +#: templates/storyeditview/scripteditmodal.html:8 +msgid "JavaScript" +msgstr "AvaScriptjay" + +#: templates/storyeditview/scripteditmodal.html:14 +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Anyway AvaScriptjay enteredway erehay illway immediatelyway \n" +"unray enwhay ouryay orystay isway openedway inway away Ebway \n" +"owserbray." + +#: templates/storyeditview/searchmodal.html:7 +msgid "Find and Replace" +msgstr "Indfay andway Eplaceray" + +#: templates/storyeditview/searchmodal.html:12 +msgid "Search For" +msgstr "Earchsay Orfay" + +#: templates/storyeditview/searchmodal.html:18 +msgid "Include passage names" +msgstr "Includeway assagepay amesnay" + +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +msgid "Match case" +msgstr "Atchmay asecay" + +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +msgid "Regular expression" +msgstr "Egularray expressionway" + +#: templates/storyeditview/searchmodal.html:34 +msgid "Replace With" +msgstr "Eplaceray Ithway" + +#: templates/storyeditview/searchmodal.html:40 +msgid "Expand all search results" +msgstr "Expandway allway earchsay esultsray" + +#: templates/storyeditview/searchmodal.html:44 +msgid "Collapse all search results" +msgstr "Ollapsecay allway earchsay esultsray" + +#: templates/storyeditview/searchmodal.html:49 +msgid "Replace All" +msgstr "Eplaceray Allway" + +#: templates/storyeditview/searchmodal.html:57 +msgid "Searching..." +msgstr "Earchingsay..." + +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d atchmay" +msgstr[1] "%d atchesmay" + +#: templates/storyeditview/searchmodalresult.html:22 +msgid "Replace in this passage" +msgstr "Eplaceray inway isthay assagepay" + +#: templates/storyeditview/searchmodalresult.html:23 +msgid "Replace in Passage" +msgstr "Eplaceray inway Assagepay" + +#: templates/storyeditview/statsmodal.html:8 +#: templates/storyeditview/toolbar.html:39 +msgid "Story Statistics" +msgstr "Orystay Atisticsstay" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +msgid "This story was last changed at %s" +msgstr "Isthay orystay asway astlay angedchay atway %s" + +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +msgid "" +"The IFID for this story is %s. What's an IFID?)" +msgstr "" +"Ethay IFIDWAY orfay isthay orystay isway %s. At'swhay anway " +"IFIDWAY?)" + +#: templates/storyeditview/storyformatmodal.html:7 +msgid "Story Format" +msgstr "Orystay Ormatfay" + +#: templates/storyeditview/storyformatmodal.html:12 +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Away orystay ormatfay ontrolscay ethay appearanceway andway \n" +"ehaviorbay ofway ouryay orystay uringday ayplay." + +#: templates/storyeditview/storyformatmodal.html:16 +#: templates/storylistview/modals/formatsmodal.html:58 +msgid "Loading..." +msgstr "Oadinglay..." + +#: templates/storyeditview/stylesheeteditmodal.html:8 +msgid "Stylesheet" +msgstr "Ylesheetstay" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "" +"Anyway CSS enteredway erehay illway overrideway ethay \n" +"efaultday appearanceway ofway ouryay orystay." + +#: templates/storyeditview/toolbar.html:5 +msgid "Go to the story list" +msgstr "Ogay otay ethay orystay istlay" + +#: templates/storyeditview/toolbar.html:19 +msgid "Edit Story JavaScript" +msgstr "Editway Orystay AvaScriptjay" + +#: templates/storyeditview/toolbar.html:23 +msgid "Edit Story Stylesheet" +msgstr "Editway Orystay Ylesheetstay" + +#: templates/storyeditview/toolbar.html:27 +msgid "Change Story Format" +msgstr "Angechay Orystay Ormatfay" + +#: templates/storyeditview/toolbar.html:35 +msgid "Snap to Grid" +msgstr "Apsnay otay Idgray" + +#: templates/storyeditview/toolbar.html:45 +msgid "View Proofing Copy" +msgstr "Iewvay Oofingpray Opycay" + +#: templates/storyeditview/toolbar.html:49 +#: templates/storylistview/storyitemview.html:36 +msgid "Publish to File" +msgstr "Ublishpay otay Ilefay" + +#: templates/storyeditview/toolbar.html:62 +msgid "Quick Find" +msgstr "Ickquay Indfay" + +#: templates/storyeditview/toolbar.html:63 +msgid "Find and replace across the entire story" +msgstr "Indfay andway eplaceray acrossway ethay entireway orystay" + +#: templates/storyeditview/toolbar.html:67 +msgid "Show only story structure" +msgstr "Owshay onlyway orystay ucturestray" + +#: templates/storyeditview/toolbar.html:71 +msgid "Show only passage titles" +msgstr "Owshay onlyway assagepay itlestay" + +#: templates/storyeditview/toolbar.html:75 +msgid "Show passage titles and excerpts" +msgstr "Owshay assagepay itlestay andway excerptsway" + +#: templates/storyeditview/toolbar.html:81 +msgid "Play this story in test mode" +msgstr "Ayplay isthay orystay inway esttay odemay" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +msgid "Test" +msgstr "Esttay" + +#: templates/storyeditview/toolbar.html:88 +msgid "Play this story" +msgstr "Ayplay isthay orystay" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +msgid "Play" +msgstr "Ayplay" + +#: templates/storyeditview/toolbar.html:95 +msgid "Add a new passage" +msgstr "Addway away ewnay assagepay" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 +#: js/views/storyeditview/modals/statsmodal.js:75 +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "Assagepay" +msgstr[1] "Assagespay" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +msgid "by %s" +msgstr "ybay %s" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +msgid "License: %s" +msgstr "Icenselay: %s" + +#: templates/storylistview/formatitem.html:5 +msgid "Are you sure?" +msgstr "Areway ouyay uresay?" + +#: templates/storylistview/formatitem.html:6 +msgid "Remove" +msgstr "Emoveray" + +#: templates/storylistview/formatitem.html:12 +msgid "Remove this format" +msgstr "Emoveray isthay ormatfay" + +#: templates/storylistview/formatitem.html:14 +msgid "Set this format as default for stories" +msgstr "Etsay isthay ormatfay asway efaultday orfay oriesstay" + +#: templates/storylistview/modals/aboutmodal.html:8 +msgid "About Twine" +msgstr "Aboutway Inetway" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +msgid "Build" +msgstr "Uildbay" + +#: templates/storylistview/modals/aboutmodal.html:21 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Inetway isway anway openway-ourcesay ooltay orfay ellingtay \n" +"interactiveway, onlinearnay oriesstay." + +#: templates/storylistview/modals/aboutmodal.html:25 +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +"released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Inetway 2.0 isway eleasedray underway ethay GPL v3 icenselay, utbay anyway orkway eatedcray " +"ithway itway aymay ebay\n" +" eleasedray underway anyway ermstay, includingway ommercialcay \n" +"onesway. Ourcesay Odecay " +"Epositoryray" + +#: templates/storylistview/modals/aboutmodal.html:31 +msgid "Help Twine Grow With A Donation" +msgstr "Elphay Inetway Owgray Ithway Away Onationday" + +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +msgid "Code" +msgstr "Odecay" + +#: templates/storylistview/modals/aboutmodal.html:55 +msgid "Libraries" +msgstr "Ibrarieslay" + +#: templates/storylistview/modals/aboutmodal.html:74 +msgid "Fonts" +msgstr "Ontsfay" + +#: templates/storylistview/modals/aboutmodal.html:78 +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for Adobe
" +"Nunito was designed by Vernon " +"Adams" +msgstr "" +"Ourcesay Anssay Opray andway Ourcesay Odecay Opray ereway \n" +"esignedday ybay Aulpay D. Unthay underway ethay uidancegay \n" +"ofway Obertray Imbachslay orfay Adobe
" +"Unitonay asway esignedday ybayErnonvay Adamsway" + +#: templates/storylistview/modals/aboutmodal.html:82 +msgid "Icons" +msgstr "Iconsway" + +#: templates/storylistview/modals/aboutmodal.html:87 +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "" +"Ocumentday esignedday ybay Obray Illgay omfray ethay Ounnay \n" +"Ojectpray" + +#: templates/storylistview/modals/aboutmodal.html:88 +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "" +"Estionquay esignedday ybay Enryhay Yderray omfray ethay Ounnay \n" +"Ojectpray" + +#: templates/storylistview/modals/aboutmodal.html:89 +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "" +"Ilesmay esignedday ybay eliojay imitrovday omfray ethay Ounnay \n" +"Ojectpray" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +msgid "" +"A new version of Twine, , has been released." +msgstr "" +"Away ewnay ersionvay ofway Inetway, , ashay " +"eenbay eleasedray." + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +msgid "Not Right Now" +msgstr "Otnay Ightray Ownay" + +#: templates/storylistview/modals/appupdatemodal.html:21 +msgid "Download" +msgstr "Ownloadday" + +#: templates/storylistview/modals/donatemodal.html:6 +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is as an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Ifway ouyay ovelay Inetway asway uchmay asway Iway oday, \n" +"easeplay onsidercay elpinghay itway owgray ithway away \n" +"onationday. Inetway isway asway anway openway ourcesay ojectpray\n" +" atthay illway alwaysway ebay eefray otay useway — \n" +"andway ithway ouryay elphay, Inetway illway ontinuecay otay \n" +"ivethray." + +#: templates/storylistview/modals/donatemodal.html:10 +msgid "Chris Klimas, Twine creator" +msgstr "Ischray Imasklay, Inetway eatorcray" + +#: templates/storylistview/modals/donatemodal.html:16 +msgid "Donate" +msgstr "Onateday" + +#: templates/storylistview/modals/donatemodal.html:17 +msgid "No Thanks" +msgstr "Onay Anksthay" + +#: templates/storylistview/modals/donatemodal.html:21 +msgid "This message will only be shown to you once.
" +msgstr "Isthay essagemay illway onlyway ebay ownshay otay ouyay onceway.
" + +#: templates/storylistview/modals/formatsmodal.html:9 +msgid "Story Formats" +msgstr "Orystay Ormatsfay" + +#: templates/storylistview/modals/formatsmodal.html:10 +msgid "Proofing Formats" +msgstr "Oofingpray Ormatsfay" + +#: templates/storylistview/modals/formatsmodal.html:11 +msgid "Add a New Format" +msgstr "Addway away Ewnay Ormatfay" + +#: templates/storylistview/modals/formatsmodal.html:20 +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Orystay ormatsfay ontrolcay ethay appearanceway andway \n" +"ehaviorbay ofway oriesstay uringday ayplay." + +#: templates/storylistview/modals/formatsmodal.html:30 +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Oofingpray ormatsfay eatecray away ersionsvay ofway oriesstay \n" +"ailoredtay orfay editingway andway oofreadingpray." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +msgid "To add a story format, enter its address below." +msgstr "" +"Otay addway away orystay ormatfay, enterway itsway addressway \n" +"elowbay." + +#: templates/storylistview/modals/formatsmodal.html:50 +#: templates/storylistview/storylistview.html:26 +msgid "Add" +msgstr "Addway" + +#. L10n: An XDate format (http://arshaw.com/xdate/#Formatting) suitable +#. for describing the date and time a story was last edited. +#. L10n: An XDate format (http://arshaw.com/xdate/#Formatting) suitable +#. for describing the date and time a story was last edited. +#: templates/storylistview/storyitemview.html:16 +#: js/views/storyeditview/toolbar.js:94 +msgid "d MMMM yyyy, h:mm tt" +msgstr "d MMMM yyyy, h:mm tt" + +#: templates/storylistview/storyitemview.html:28 +msgid "Play Story" +msgstr "Ayplay Orystay" + +#: templates/storylistview/storyitemview.html:32 +msgid "Test Story" +msgstr "Esttay Orystay" + +#: templates/storylistview/storyitemview.html:44 +msgid "Duplicate Story" +msgstr "Uplicateday Orystay" + +#: templates/storylistview/storyitemview.html:50 +msgid "Delete Story" +msgstr "Eleteday Orystay" + +#: templates/storylistview/storylistview.html:5 +msgid "Twine" +msgstr "Inetway" + +#: templates/storylistview/storylistview.html:9 +msgid "Create a brand-new story" +msgstr "Eatecray away andbray-ewnay orystay" + +#: templates/storylistview/storylistview.html:10 +msgid "Story" +msgstr "Orystay" + +#: templates/storylistview/storylistview.html:17 +msgid "What should your story be named?
(You can change this later.)" +msgstr "" +"Atwhay ouldshay ouryay orystay ebay amednay?
(Ouyay ancay angechay isthay " +"aterlay.)" + +#: templates/storylistview/storylistview.html:34 +msgid "Import a published story or Twine archive" +msgstr "Importway away ublishedpay orystay orway Inetway archiveway" + +#: templates/storylistview/storylistview.html:35 +msgid "Import From File" +msgstr "Importway Omfray Ilefay" + +#: templates/storylistview/storylistview.html:42 +msgid "Import this file:" +msgstr "Importway isthay ilefay:" + +#: templates/storylistview/storylistview.html:59 +msgid "Importing..." +msgstr "Importingway..." + +#: templates/storylistview/storylistview.html:67 +msgid "Save all stories to a Twine archive file" +msgstr "Avesay allway oriesstay otay away Inetway archiveway ilefay" + +#: templates/storylistview/storylistview.html:68 +msgid "Archive" +msgstr "Archiveway" + +#: templates/storylistview/storylistview.html:73 +msgid "Work with story and proofing formats" +msgstr "Orkway ithway orystay andway oofingpray ormatsfay" + +#: templates/storylistview/storylistview.html:74 +msgid "Formats" +msgstr "Ormatsfay" + +#: templates/storylistview/storylistview.html:79 +msgid "Browse online help" +msgstr "Owsebray onlineway elphay" + +#: templates/storylistview/storylistview.html:80 +msgid "Help" +msgstr "Elphay" + +#: templates/storylistview/storylistview.html:95 +msgid "version" +msgstr "ersionvay" + +#: templates/storylistview/storylistview.html:97 +msgid "Report a bug" +msgstr "Eportray away ugbay" + +#: templates/storylistview/storylistview.html:105 +msgid "Stories" +msgstr "Oriesstay" + +#: templates/storylistview/storylistview.html:108 +msgid "Sort By" +msgstr "Ortsay Ybay" + +#: templates/storylistview/storylistview.html:110 +msgid "Last changed date" +msgstr "Astlay angedchay ateday" + +#: templates/storylistview/storylistview.html:111 +msgid "Edit Date" +msgstr "Editway Ateday" + +#: templates/storylistview/storylistview.html:114 +msgid "Story name" +msgstr "Orystay amenay" + +#: templates/storylistview/storylistview.html:115 +msgid "Name" +msgstr "Amenay" + +#: templates/storylistview/storylistview.html:122 +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Erethay areway onay oriesstay avedsay inway Inetway ightray \n" +"ownay. Otay etgay artedstay, ouyay ancay eitherway eatecray away\n" +" ewnay orystay orway importway anway existingway oneway omfray \n" +"away ilefay." + +#: templates/welcomeview.html:6 +msgid "Hi!" +msgstr "Ihay!" + +#: templates/welcomeview.html:10 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Inetway isway anway openway-ourcesay ooltay orfay ellingfay interactiveway, " +"onlinearnay toriesay. Heretay areway away ewfay hingstay ouyay houldsay " +"owknay eforebay ouyay etgay tartedsay." + +#: templates/welcomeview.html:14 +msgid "Tell Me More" +msgstr "Elltay Emay Oremay" + +#: templates/welcomeview.html:15 +msgid "Skip" +msgstr "Kipsay" + +#: templates/welcomeview.html:23 +msgid "New here?" +msgstr "Ewnay erehay?" + +#: templates/welcomeview.html:27 +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide and " +"the official wiki in general, are a great place to learn. Keep in mind that " +"some articles on the wiki at large were written for Twine 1, which is a " +"little bit different than this version. But most of the concepts are the " +"same." +msgstr "" +"Ifway ou'veyay evernay usedway Inetway eforebay, enthay " +"elcomeway! Ethay Inetway 2 Uidegay andway ethay officialway ikiway inway eneralgay, " +"areway away eatgray aceplay otay earnlay. Eepkay inway indmay atthay " +"omesay \n" +"articlesway onway ethay ikiway atway argelay ereway ittenwray orfay Inetway " +"1, ichwhay isway away ittlelay itbay ifferentday anthay isthay ersionvay. " +"Utbay ostmay ofway ethay onceptscay areway ethay amesay." + +#: templates/welcomeview.html:31 +msgid "" +"You can also get help over at the Twine forum, too." +msgstr "" +"Ouyay ancay alsoway etgay elphay overway atway ethay Inetway orumfay, ootay." + +#: templates/welcomeview.html:35 +msgid "" +"If you have used Twine 1 before, the guide also has details " +"on what has changed in this version. Chief among them is a new default story " +"format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, " +"try using SugarCube instead." +msgstr "" +"Ifway ou'veyay evernay usedway Inetway eforebay, enthay " +"elcomeway! Ethay Winetay 2 Uidegay, andway ethay officialway ikiway inway eneralgay, " +"areway away eatgray aceplay otay earnlay. Eepkay inway indmay atthay omesay\n" +"articlesway onway ethay ikiway atway argelay ereway ittenwray orfay Inetway " +"1, ichwhay isway away ittlelay itbay ifferentday anthay isthay ersionvay. " +"Utbay ostmay ofway ethay onceptscay areway ethay amesay." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 +#: templates/welcomeviewnw.html:23 +msgid "OK" +msgstr "OKWAY" + +#: templates/welcomeview.html:47 +msgid "Your work is saved only in your browser." +msgstr "Ouryay orkway isway avedsay onlyway inway ouryay owserbray." + +#: templates/welcomeview.html:51 +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Atthay eansmay ouyay on'tday eednay otay eatecray anway \n" +"accountway otay useway Inetway 2, andway everythingway ouyay \n" +"eatecray isn'tway oredstay onway away erversay omewheresay \n" +"elseway — itway aysstay ightray inway ouryay owserbray." + +#: templates/welcomeview.html:55 +msgid "" +"Two very important things to remember, though. Since your work is " +"saved only in your browser, if you clear its saved data, then you'll lose " +"your work! Not good. Remember to use that  Archive button often. You can also publish " +"individual stories to files using the dropdown menu next to the  Play button in the story editor. Both archive " +"and story files can always be re-imported into Twine." +msgstr "" +"Otway eryvay importantway ingsthay otay ememberray, oughthay. Incesay " +"ouryay orkway isway avedsay onlyway inway ouryay owserbray, ifway ouyay " +"earclay itsway avedsay ataday, enthay ou'llyay oselay ouryay orkway! Otnay " +"oodgay. Ememberray otay useway atthay  " +"Archiveway uttonbay oftenway. Ouyay ancay alsoway ublishpay " +"individualway oriesstay otay ilesfay usingway ethay opdowndray enumay extnay " +"otay ethay  Ayplay uttonbay inway " +"ethay orystay editorway. Othbay archiveway andway orystay ilesfay ancay " +"alwaysway ebay eray-importedway intoway Inetway." + +#: templates/welcomeview.html:59 +msgid "" +"Secondly, anyone who can use this browser can see and make changes to " +"your work. So if you've got a nosy kid brother, look into setting up a " +"separate profile for yourself." +msgstr "" +"Econdlysay, anyoneway owhay ancay useway isthay owserbray ancay eesay " +"andway akemay \n" +"angeschay otay ouryay orkway. Osay ifway ou'veyay otgay away osynay " +"idkay otherbray, ooklay intoway ettingsay upway away eparatesay ofilepray " +"orfay ourselfyay." + +#: templates/welcomeview.html:71 +msgid "That's it!" +msgstr "At'sthay itway!" + +#: templates/welcomeview.html:75 +msgid "Thanks for reading, and have fun with Twine." +msgstr "Anksthay orfay eadingray, andway avehay unfay ithway Inetway." + +#: templates/welcomeview.html:79 +msgid "Go to the Story List" +msgstr "Ogay otay ethay Orystay Istlay" + +#: templates/welcomeviewnw.html:7 +msgid "Your work is automatically saved." +msgstr "Ouryay orkway isway automaticallyway avedsay." + +#: templates/welcomeviewnw.html:11 +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the Show " +"Library item in the Twine menu." +msgstr "" +"Ere'sthay ownay away olderfay amednay Inetway inway ouryay \n" +"Ocumentsday olderfay. Insideway atthay isway away Oriesstay \n" +"olderfay, erewhay allway ouryay orkway illway ebay avedsay. \n" +"Inetway avessay asway ouyay orkway, osay ouyay on'tday avehay \n" +"otay orryway aboutway ememberingray otay avesay itway ourselfyay\n" +". Ouyay ancay alwaysway openway ethay olderfay ouryay oriesstay \n" +"areway avedsay otay ybay usingway ethay Owshay Ibrarylay itemway " +"inway ethay Inetway enumay." + +#: templates/welcomeviewnw.html:15 +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Ecausebay Inetway isway alwaysway avingsay ouryay orkway, ethay \n" +"ilesfay inway ouryay orystay ibrarylay illway ebay ockedlay \n" +"omfray editingway ilewhay Inetway isway openway." + +#: templates/welcomeviewnw.html:19 +msgid "" +"If you'd like to open a Twine story file you received from someone else, you " +"can import it into your library using the " +"Import From File link in the story list." +msgstr "" +"Ifway ou'dyay ikelay otay openway away Inetway orystay ilefay \n" +"ouyay eceivedray omfray omeonesay elseway, ouyay ancay importway\n" +" itway intoway ouryay ibrarylay usingway ethay Importway Omfray Ilefay inklay inway ethay orystay istlay." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:202 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” ouldcay otnay ebay avedsay (%2$s)." + +#. L10n: %s is the error message. +#: js/app.js:259 +#, javascript-format +msgid "An error occurred while publishing your story. (%s)" +msgstr "Anway errorway occurredway ilewhay ublishingpay ouryay orystay. (%s)" + +#: js/app.js:290 +msgid "Twine Archive.html" +msgstr "Inetway Archiveway.html" + +#: js/models/passage.js:19 +msgid "Untitled Passage" +msgstr "Untitledway Assagepay" + +#: js/models/passage.js:21 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "" +"Aptay isthay assagepay, enthay ethay encilpay iconway otay \n" +"editway itway." + +#: js/models/passage.js:22 +msgid "Double-click this passage to edit it." +msgstr "Oubleday-ickclay isthay assagepay otay editway itway." + +#: js/models/passage.js:78 +msgid "You must give this passage a name." +msgstr "Ouyay ustmay ivegay isthay assagepay away amenay." + +#: js/models/passage.js:85 +#, javascript-format +msgid "" +"There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "" +"Erethay isway alreadyway away assagepay amednay \"%s.\" Easeplay\n" +" ivegay isthay oneway away uniqueway amenay." + +#: js/models/story.js:16 +msgid "Untitled Story" +msgstr "Untitledway Orystay" + +#: js/models/story.js:112 +msgid "There is no starting point set for this story." +msgstr "Erethay isway onay artingstay ointpay etsay orfay isthay orystay." + +#: js/models/story.js:115 +msgid "The passage set as starting point for this story does not exist." +msgstr "" +"Ethay assagepay etsay asway artingstay ointpay orfay isthay \n" +"orystay oesday otnay existway." + +#: js/models/storyformat.js:38 +msgid "Untitled Story Format" +msgstr "Untitledway Orystay Ormatfay" + +#: js/nwui.js:81 +msgid "Toggle Fullscreen" +msgstr "Oggletay Ullscreenfay" + +#: js/nwui.js:100 +msgid "Quit" +msgstr "Itquay" + +#: js/nwui.js:115 +msgid "Edit" +msgstr "Editway" + +#: js/nwui.js:120 +msgid "Undo" +msgstr "Undoway" + +#: js/nwui.js:132 +msgid "Cut" +msgstr "Utcay" + +#: js/nwui.js:142 +msgid "Copy" +msgstr "Opycay" + +#: js/nwui.js:152 +msgid "Paste" +msgstr "Astepay" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 +#: js/views/storyeditview/storyeditview.js:126 +msgid "Delete" +msgstr "Eleteday" + +#: js/nwui.js:182 +msgid "Show Library" +msgstr "Owshay Ibrarylay" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:236 +msgid "/Documents" +msgstr "/Documents" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:246 js/nwui.js:247 +msgid "/My\\ Documents" +msgstr "/My\\ Documents" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:257 js/nwui.js:261 +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:257 +msgid "/Stories" +msgstr "/Stories" + +#. L10n: %s is the error message. +#: js/nwui.js:427 +#, javascript-format +msgid "An error occurred while saving your story (%s)." +msgstr "Anway errorway occurredway ilewhay avingsay ouryay orystay (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:454 +#, javascript-format +msgid "An error occurred while deleting your story (%s)." +msgstr "Anway errorway occurredway ilewhay eletingday ouryay orystay (%s)." + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:524 +#, javascript-format +msgid "An error occurred while locking your library (%s)." +msgstr "Anway errorway occurredway ilewhay ockinglay ouryay ibrarylay (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#: js/nwui.js:553 +#, javascript-format +msgid "An error occurred while unlocking your library (%s)." +msgstr "Anway errorway occurredway ilewhay unlockingway ouryay ibrarylay (%s)." + +#: js/views/storyeditview/editors/passageeditor.js:120 +#: js/views/storyeditview/storyeditview.js:563 +#, javascript-format +msgid "Editing “%s”" +msgstr "Editingway “%s”" + +#: js/views/storyeditview/editors/passageeditor.js:211 +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "" +"Anyway angeschay otay ethay assagepay ou'reyay editingway \n" +"aven'thay eenbay avedsay etyay. " + +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d assagepay atchesmay." +msgstr[1] "%d assagespay atchmay." + +#: js/views/storyeditview/modals/searchmodal.js:102 +msgid "No matching passages found." +msgstr "Onay atchingmay assagespay oundfay." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "%d eplacementray asway ademay inway" +msgstr[1] "%d eplacementsray ereway ademay inway" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d assagepay" +msgstr[1] "%d assagespay" + +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Aracterchay" +msgstr[1] "Aracterschay" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Ordway" +msgstr[1] "Ordsway" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Inklay" +msgstr[1] "Inkslay" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Okenbray Inkway" +msgstr[1] "Okenbray Inksway" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 +#: js/views/storylistview/modals/formatsmodal.js:74 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "" +"Ethay orystay ormatfay “%1$s” ouldcay otnay ebay oadedlay (%2$s)." + +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +msgid "Are you sure you want to delete “%s”? " +msgstr "Areway ouyay uresay ouyay antway otay eleteday “%s”? " + +#: js/views/storyeditview/passageitemview.js:169 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "" +"(Oldhay ethay Iftshay eykay enwhay eletingday otay ipskay isthay\n" +" essagemay.)" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 +#: js/views/storyeditview/storyeditview.js:64 +#, javascript-format +msgid "A problem occurred while saving your changes (%s)." +msgstr "Away oblempray occurredway ilewhay avingsay ouryay angeschay (%s)." + +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +msgid "Are you sure you want to delete this passage?" +msgid_plural "" +"Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "Areway ouyay uresay ouyay antway otay eleteday isthay assagepay?" +msgstr[1] "" +"Areway ouyay uresay ouyay antway otay eleteday esethay %d assagespay? Isthay " +"annotcay ebay undoneway." + +#: js/views/storyeditview/storyeditview.js:268 +msgid "This story does not have a starting point. " +msgstr "Isthay orystay oesday otnay avehay away artingstay ointpay. " + +#: js/views/storyeditview/storyeditview.js:282 +msgid "" +"Refreshed the playable version of your story in the previously-opened tab or " +"window." +msgstr "" +"Efreshedray ethay ayableplay ersionvay ofway ouryay orystay \n" +"inway ethay eviouslypray-openedway abtay orway indowway." + +#: js/views/storyeditview/storyeditview.js:312 +#: js/views/storyeditview/storyeditview.js:352 +#: js/views/storylistview/storyitemview.js:110 +msgid "" +"This story does not have a starting point. Use the icon on a passage to set this." +msgstr "" +"Isthay orystay oesday otnay avehay away artingstay ointpay. \n" +"Useway ethay iconway onway away assagepay " +"otay etsay isthay." + +#: js/views/storyeditview/storyeditview.js:325 +msgid "" +"Refreshed the test version of your story in the previously-opened tab or " +"window." +msgstr "" +"Efreshedray ethay esttay ersionvay ofway ouryay orystay inway \n" +"ethay eviouslypray-openedway abtay orway indowway." + +#: js/views/storyeditview/storyeditview.js:573 +msgid "Last saved at" +msgstr "Astlay avedsay atway" + +#: js/views/storyeditview/storyeditview.js:573 +msgid "h:mm TT, M/d/yyyy" +msgstr "h:mm TT, M/d/yyyy" + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a date and time +#: js/views/storyeditview/toolbar.js:98 +#, javascript-format +msgid "Last updated at %s" +msgstr "Astlay updatedway atway %s" + +#: js/views/storylistview/modals/formatsmodal.js:137 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "Ethay orystay ormatfay atway %1$s ouldcay otnay ebay addedway (%2$s)." + +#: js/views/storylistview/storagequota.js:21 +#: js/views/storylistview/storagequota.js:44 +#: js/views/storylistview/storagequota.js:49 +#, javascript-format +msgid "%d%% space available" +msgstr "%d%% acespay availableway" + +#: js/views/storylistview/storyitemview.js:80 +#: js/views/storylistview/storyitemview.js:94 +msgid "" +"This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "" +"Isthay orystay oesday otnay avehay away artingstay ointpay. \n" +"Editway isthay orystay andway useway ethay " +"iconway onway away assagepay otay etsay isthay." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Areway ouyay uresay ouyay antway otay eleteday “%s”? Isthay " +"annotcay ebay undoneway." + +#: js/views/storylistview/storyitemview.js:125 +msgid "Delete Forever" +msgstr "Eleteday Oreverfay" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +msgid "What should “%s” be renamed to?" +msgstr "Atwhay ouldshay “%s” beway enamedray toway?" + +#: js/views/storylistview/storyitemview.js:138 +msgid "Rename" +msgstr "Enameray" + +#: js/views/storylistview/storyitemview.js:155 +msgid "What should the duplicate be named?" +msgstr "Atwhay ouldshay ethay uplicateday beway amednay?" + +#: js/views/storylistview/storyitemview.js:156 +msgid "Duplicate" +msgstr "Uplicateday" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +msgid "%s Copy" +msgstr "%s Opycay" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "%d orystay asway importedway." +msgstr[1] "%d oriesstay ereway importedway." + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d Orystay" +msgstr[1] "%d Oriessay" + +#~ msgid "" +#~ "Twine is an open-source tool for telling interactive, nonlinear stories. " +#~ msgstr "" +#~ "Inetway isway anway openway-ourcesay ooltay orfay ellingtay \n" +#~ "interactiveway, onlinearnay oriesstay. " + +#~ msgid "If you've never used Twine before, then welcome! " +#~ msgstr "" +#~ "Ifway ou'veyay evernay usedway Inetway eforebay, then " +#~ "welcome!" + +#~ msgid "" +#~ "If you have used Twine 1 before, the guide also has " +#~ "details on what has changed in this version. " +#~ msgstr "" +#~ "Ifway ouyay avehay usedway Inetway 1 eforebay, ethay " +#~ "uidegay alsoway ashay etailsday onway atwhay ashay \n" +#~ "angedchay inway isthay ersionvay. " + +#~ msgid "That means you don't need to create an account to use Twine 2, " +#~ msgstr "" +#~ "Atthay eansmay ouyay on'tday eednay otay eatecray anway \n" +#~ "accountway otay useway Inetway 2, " + +#~ msgid "Two very important things to remember, though. " +#~ msgstr "" +#~ "Otway eryvay importantway ingsthay otay ememberray, \n" +#~ "oughthay. " + +#~ msgid "The IFID for this story is %s. " +#~ msgstr "" +#~ "Ethay IFIDWAY orfay isthay orystay isway %s. " + +#~ msgid "There are no stories saved in Twine right now. " +#~ msgstr "" +#~ "Erethay areway onay oriesstay avedsay inway Inetway ightray \n" +#~ "ownay. " + +#~ msgid "h:mm tt, d MMMM yyyy" +#~ msgstr "h:mm tt, d MMMM yyyy" + +#~ msgid "" +#~ "If you've never used Twine before, then welcome! The Twine 2 Guide, " +#~ "and the official wiki in general, are a great place to learn. Keep in " +#~ "mind that some articles on the wiki at large were written for Twine 1, " +#~ "which is a little bit different than this version. But most of the " +#~ "concepts are the same." +#~ msgstr "" +#~ "Ifway ou'veyay evernay usedway Inetway eforebay, enthay " +#~ "elcomeway! Ethay Inetway 2 Uidegay, andway ethay officialway ikiway inway " +#~ "eneralgay, areway away eatgray aceplay otay earnlay. Eepkay inway indmay " +#~ "atthay omesay articlesway onway ethay ikiway atway argelay ereway " +#~ "ittenwray orfay Inetway 1, ichwhay isway away ittlelay itbay ifferentday " +#~ "anthay isthay ersionvay. Utbay ostmay ofway ethay onceptscay areway ethay " +#~ "amesay." diff --git a/src/locale/po/pt-br.po b/src/locale/po/pt-br.po new file mode 100644 index 000000000..f6a58f90d --- /dev/null +++ b/src/locale/po/pt-br.po @@ -0,0 +1,1164 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Twine 2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-05 01:38-0300\n" +"PO-Revision-Date: 2015-07-05 03:15-0300\n" +"Last-Translator: Alliah \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.2\n" +"Language: pt_BR\n" + +#: templates/localeview.html:4 +msgid "Please choose which language you would like to use with Twine." +msgstr "Por favor, escolha o idioma que você gostaria de usar no Twine." + +#: templates/localeview.html:12 +msgid "English" +msgstr "Inglês" + +#: templates/localeview.html:19 +msgid "Spanish" +msgstr "Espanhhol" + +#: templates/storyeditview/passageeditmodal.html:8 +msgid "Passage Name" +msgstr "Nome da Passagem" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +msgid "Tag" +msgstr "Etiqueta" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +msgid "Tag name" +msgstr "Nome da Etiqueta" + +#: templates/storyeditview/passageeditmodal.html:36 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Insira o texto da sua passagem aqui. Para linkar para outra passagem, " +"coloque dois colchetes ao redor do nome da passagem, [[assim]]." + +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +msgid "Delete “%s”" +msgstr "Excluir “%s”" + +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +msgid "Edit “%s”" +msgstr "Editar “%s”" + +#: templates/storyeditview/passageitemview.html:24 +msgid "Test story starting here" +msgstr "Testar a história a partir daqui" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +msgid "Set “%s” as starting point" +msgstr "Definir “%s” como ponto de partida" + +#: templates/storyeditview/renamestorymodal.html:8 +#: templates/storyeditview/toolbar.html:31 +#: templates/storylistview/storyitemview.html:36 +msgid "Rename Story" +msgstr "Renomear História" + +#: templates/storyeditview/renamestorymodal.html:14 +msgid "What should this story's name be?" +msgstr "Qual é o nome dessa história?" + +#: templates/storyeditview/renamestorymodal.html:24 +msgid "Please enter a name." +msgstr "Por favor, insira um nome." + +#: templates/storyeditview/renamestorymodal.html:28 +#: templates/storylistview/formatitem.html:7 +#: templates/storylistview/storylistview.html:25 +#: templates/storylistview/storylistview.html:50 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/storyeditview/renamestorymodal.html:29 +msgid "Save" +msgstr "Salvar" + +#: templates/storyeditview/scripteditmodal.html:8 +msgid "JavaScript" +msgstr "JavaScript" + +#: templates/storyeditview/scripteditmodal.html:14 +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Qualquer JavaScript inserido aqui irá rodar imediatamente quando sua " +"história abrir em um navegador." + +#: templates/storyeditview/searchmodal.html:7 +msgid "Find and Replace" +msgstr "Achar e Substituir" + +#: templates/storyeditview/searchmodal.html:12 +msgid "Search For" +msgstr "Procurar Por" + +#: templates/storyeditview/searchmodal.html:18 +msgid "Include passage names" +msgstr "Incluir Nomes de Passagens" + +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +msgid "Match case" +msgstr "Combinar maiúsculas e minúsculas" + +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +msgid "Regular expression" +msgstr "Expressão regular" + +#: templates/storyeditview/searchmodal.html:34 +msgid "Replace With" +msgstr "Substituir Por" + +#: templates/storyeditview/searchmodal.html:40 +msgid "Expand all search results" +msgstr "Expandir todos os resultados da pesquisa" + +#: templates/storyeditview/searchmodal.html:44 +msgid "Collapse all search results" +msgstr "Colapsar todos os resultados da pesquisa" + +#: templates/storyeditview/searchmodal.html:49 +msgid "Replace All" +msgstr "Substituir Tudo" + +#: templates/storyeditview/searchmodal.html:57 +msgid "Searching..." +msgstr "Procurando" + +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d combinação" +msgstr[1] "%d combinações" + +#: templates/storyeditview/searchmodalresult.html:22 +msgid "Replace in this passage" +msgstr "Substituir nessa passagem" + +#: templates/storyeditview/searchmodalresult.html:23 +msgid "Replace in Passage" +msgstr "Substituir na Passagem" + +#: templates/storyeditview/statsmodal.html:8 +#: templates/storyeditview/toolbar.html:39 +msgid "Story Statistics" +msgstr "Estatísticas da História" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +msgid "This story was last changed at %s" +msgstr "Essa história foi modificada pela última vez em %s" + +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +msgid "" +"The IFID for this story is %s. What's an IFID?)" +msgstr "" +"O IFID para essa história é %s. O que é um IFID?)" + +#: templates/storyeditview/storyformatmodal.html:7 +msgid "Story Format" +msgstr "Formato da História" + +#: templates/storyeditview/storyformatmodal.html:12 +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"O formato da história controla a aparência e o comportamento da sua história " +"durante o jogo." + +#: templates/storyeditview/storyformatmodal.html:16 +#: templates/storylistview/modals/formatsmodal.html:58 +msgid "Loading..." +msgstr "Carregando..." + +#: templates/storyeditview/stylesheeteditmodal.html:8 +msgid "Stylesheet" +msgstr "Folha de Estilos" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "" +"Qualquer CSS inserido aqui irá sobrescrever a aparência padrão da sua " +"história." + +#: templates/storyeditview/toolbar.html:5 +msgid "Go to the story list" +msgstr "Vá para a lista de histórias" + +#: templates/storyeditview/toolbar.html:19 +msgid "Edit Story JavaScript" +msgstr "Editar JavaScript da História" + +#: templates/storyeditview/toolbar.html:23 +msgid "Edit Story Stylesheet" +msgstr "Editar Folha de Estilos da História" + +#: templates/storyeditview/toolbar.html:27 +msgid "Change Story Format" +msgstr "Mudar Formato da História" + +#: templates/storyeditview/toolbar.html:35 +msgid "Snap to Grid" +msgstr "Fixar na Grade" + +#: templates/storyeditview/toolbar.html:45 +msgid "View Proofing Copy" +msgstr "Ver Cópia de Prova" + +#: templates/storyeditview/toolbar.html:49 +#: templates/storylistview/storyitemview.html:32 +msgid "Publish to File" +msgstr "Publicar para Arquivo" + +#: templates/storyeditview/toolbar.html:62 +msgid "Quick Find" +msgstr "Busca Rápida" + +#: templates/storyeditview/toolbar.html:63 +msgid "Find and replace across the entire story" +msgstr "Achar e substituir na história inteira" + +#: templates/storyeditview/toolbar.html:67 +msgid "Show only story structure" +msgstr "Mostrar apenas a estrutura da história" + +#: templates/storyeditview/toolbar.html:71 +msgid "Show only passage titles" +msgstr "Mostrar apenas títulos de passagens" + +#: templates/storyeditview/toolbar.html:75 +msgid "Show passage titles and excerpts" +msgstr "Mostrar títulos de passagens e excertos" + +#: templates/storyeditview/toolbar.html:81 +msgid "Play this story in test mode" +msgstr "Jogar essa história em modo de teste" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +msgid "Test" +msgstr "Testar" + +#: templates/storyeditview/toolbar.html:88 +msgid "Play this story" +msgstr "Jogar essa história" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +msgid "Play" +msgstr "Jogar" + +#: templates/storyeditview/toolbar.html:95 +msgid "Add a new passage" +msgstr "Adicionar nova passagem" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 +#: js/views/storyeditview/modals/statsmodal.js:75 +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "Passagem" +msgstr[1] "Passagens" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +msgid "by %s" +msgstr "por %s" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +msgid "License: %s" +msgstr "Licença: %s" + +#: templates/storylistview/formatitem.html:5 +msgid "Are you sure?" +msgstr "Você tem certeza?" + +#: templates/storylistview/formatitem.html:6 +msgid "Remove" +msgstr "Remover" + +#: templates/storylistview/formatitem.html:12 +msgid "Remove this format" +msgstr "Remover esse formato" + +#: templates/storylistview/formatitem.html:14 +msgid "Set this format as default for stories" +msgstr "Definir esse formato como padrão para histórias" + +#: templates/storylistview/modals/aboutmodal.html:8 +msgid "About Twine" +msgstr "Sobre Twine" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +msgid "Build" +msgstr "Versão" + +#: templates/storylistview/modals/aboutmodal.html:21 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine é uma ferramenta open-source para contar histórias interativas não-" +"lineares." + +#: templates/storylistview/modals/aboutmodal.html:25 +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +"released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Twine 2.0 é publicado sob a licença GPL v3, mas qualquer trabalho criado com ele " +"pode ser publicado sob quaisquer termos, incluindo usos comerciais. Repositório do Código Fonte" + +#: templates/storylistview/modals/aboutmodal.html:31 +msgid "Help Twine Grow With A Donation" +msgstr "Ajude o Twine a Crescer Com Uma Doação" + +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +msgid "Code" +msgstr "Código" + +#: templates/storylistview/modals/aboutmodal.html:55 +msgid "Libraries" +msgstr "Bibliotecas" + +#: templates/storylistview/modals/aboutmodal.html:74 +msgid "Fonts" +msgstr "Fontes" + +#: templates/storylistview/modals/aboutmodal.html:78 +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for Adobe
Nunito was designed by
Vernon Adams" +msgstr "" +"Source Sans Pro e Source Code Pro foram criadas por Paul D. Hunt sob a " +"orientação de Robert Slimbach para a Adobe
Nunito foi criada por Vernon Adams" + +#: templates/storylistview/modals/aboutmodal.html:82 +msgid "Icons" +msgstr "Ícones" + +#: templates/storylistview/modals/aboutmodal.html:87 +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Document projetado por Rob Gill para o Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:88 +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Question projetado por Henry Ryder para o Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:89 +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Smile projetado por jelio dimitrov para o Noun Project" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +msgid "" +"A new version of Twine, , has been released." +msgstr "" +"Uma nova versão do Twine, , foi publicada." + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +msgid "Not Right Now" +msgstr "Agora Não" + +#: templates/storylistview/modals/appupdatemodal.html:21 +msgid "Download" +msgstr "Baixar" + +#: templates/storylistview/modals/donatemodal.html:6 +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is as an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Se você ama o Twine tanto quanto eu, por favor, considere ajudá-lo a crescer " +"fazendo uma doação. O Twine é um projeto open source que será sempre livre " +"para uso — e com a sua ajuda, o Twine continuará a prosperar." + +#: templates/storylistview/modals/donatemodal.html:10 +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, criador do Twine" + +#: templates/storylistview/modals/donatemodal.html:16 +msgid "Donate" +msgstr "Faça uma Doação" + +#: templates/storylistview/modals/donatemodal.html:17 +msgid "No Thanks" +msgstr "Não, obrigado" + +#: templates/storylistview/modals/donatemodal.html:21 +msgid "This message will only be shown to you once.
" +msgstr "Essa mensagem só irá aparecer para você uma vez.
" + +#: templates/storylistview/modals/formatsmodal.html:9 +msgid "Story Formats" +msgstr "Formatos de Histórias" + +#: templates/storylistview/modals/formatsmodal.html:10 +msgid "Proofing Formats" +msgstr "Revisar Formatos" + +#: templates/storylistview/modals/formatsmodal.html:11 +msgid "Add a New Format" +msgstr "Adicionar Novo Formato" + +#: templates/storylistview/modals/formatsmodal.html:20 +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Formatos de histórias controlam a aparência e o comportamento das histórias " +"durante o jogo." + +#: templates/storylistview/modals/formatsmodal.html:30 +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Revisar formatos cria uma versão da história projetada para edição e revisão." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +msgid "To add a story format, enter its address below." +msgstr "Para adicionar um formato de história, insira seu endereço abaixo." + +#: templates/storylistview/modals/formatsmodal.html:50 +#: templates/storylistview/storylistview.html:26 +msgid "Add" +msgstr "Adicionar" + +#: templates/storylistview/storyitemview.html:24 +msgid "Play Story" +msgstr "Jogar História" + +#: templates/storylistview/storyitemview.html:28 +msgid "Test Story" +msgstr "Testar História" + +#: templates/storylistview/storyitemview.html:40 +msgid "Duplicate Story" +msgstr "Duplicar História" + +#: templates/storylistview/storyitemview.html:46 +msgid "Delete Story" +msgstr "Excluir História" + +#: templates/storylistview/storylistview.html:5 +msgid "Twine" +msgstr "Twine" + +#: templates/storylistview/storylistview.html:9 +msgid "Create a brand-new story" +msgstr "Crie uma nova história" + +#: templates/storylistview/storylistview.html:10 +msgid "Story" +msgstr "História" + +#: templates/storylistview/storylistview.html:17 +msgid "What should your story be named?
(You can change this later.)" +msgstr "" +"Qual será o nome da sua história?
(Você pode mudar isso mais tarde.)" + +#: templates/storylistview/storylistview.html:34 +msgid "Import a published story or Twine archive" +msgstr "Importar uma história publicada ou histórico de Twine" + +#: templates/storylistview/storylistview.html:35 +msgid "Import From File" +msgstr "Importar de Arquivo" + +#: templates/storylistview/storylistview.html:42 +msgid "Import this file:" +msgstr "Importar esse arquivo:" + +#: templates/storylistview/storylistview.html:59 +msgid "Importing..." +msgstr "Importando..." + +#: templates/storylistview/storylistview.html:67 +msgid "Save all stories to a Twine archive file" +msgstr "Salvar todas as histórias para um arquivo de histórico do Twine" + +#: templates/storylistview/storylistview.html:68 +msgid "Archive" +msgstr "Histórico" + +#: templates/storylistview/storylistview.html:73 +msgid "Work with story and proofing formats" +msgstr "Trabalhar com formatos de história e revisão" + +#: templates/storylistview/storylistview.html:74 +msgid "Formats" +msgstr "Formatos" + +#: templates/storylistview/storylistview.html:79 +msgid "Change the language Twine uses" +msgstr "Mude o idioma que o Twine usa" + +#: templates/storylistview/storylistview.html:80 +msgid "Language" +msgstr "Idioma" + +#: templates/storylistview/storylistview.html:85 +msgid "Browse online help" +msgstr "Pesquise ajuda online" + +#: templates/storylistview/storylistview.html:86 +msgid "Help" +msgstr "Ajuda" + +#: templates/storylistview/storylistview.html:101 +msgid "version" +msgstr "versão" + +#: templates/storylistview/storylistview.html:103 +msgid "Report a bug" +msgstr "Relatar um bug" + +#: templates/storylistview/storylistview.html:111 +msgid "Stories" +msgstr "Histórias" + +#: templates/storylistview/storylistview.html:114 +msgid "Sort By" +msgstr "Selecionar Por" + +#: templates/storylistview/storylistview.html:116 +msgid "Last changed date" +msgstr "Data da última modificação" + +#: templates/storylistview/storylistview.html:117 +msgid "Edit Date" +msgstr "Editar Data" + +#: templates/storylistview/storylistview.html:120 +msgid "Story name" +msgstr "Nome da história" + +#: templates/storylistview/storylistview.html:121 +msgid "Name" +msgstr "Nome" + +#: templates/storylistview/storylistview.html:128 +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Não há histórias salvas no Twine agora. Para começar, você pode criar uma " +"nova história ou importar uma história existente a partir de um arquivo." + +#: templates/welcomeview.html:6 +msgid "Hi!" +msgstr "Olá!" + +#: templates/welcomeview.html:10 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"O Twine é uma ferramenta open-source para contar histórias interativas e não-" +"lineares. Há algumas coisas que você deveria saber antes de começar." + +#: templates/welcomeview.html:14 +msgid "Tell Me More" +msgstr "Conte-me Mais" + +#: templates/welcomeview.html:15 +msgid "Skip" +msgstr "Pular" + +#: templates/welcomeview.html:23 +msgid "New here?" +msgstr "Novo por aqui?" + +#: templates/welcomeview.html:27 +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide " +"and the official wiki in general, are a great place to learn. Keep in mind " +"that some articles on the wiki at large were written for Twine 1, which is a " +"little bit different than this version. But most of the concepts are the " +"same." +msgstr "" +"Se você nunca usou o Twine antes, então seja bem-vindo(a)! " +"O Guia do Twine " +"2 e a wiki oficial são ótimos lugares para se começar a aprender. Lembre-" +"se de que alguns artigos na wiki foram escritos para o Twine 1, que é um " +"pouco diferente dessa versão. Mas a maioria dos conceitos é igual." + +#: templates/welcomeview.html:31 +msgid "" +"You can also get help over at the Twine forum, too." +msgstr "" +"Você também pode buscar ajuda no fórum do Twine." + +#: templates/welcomeview.html:35 +msgid "" +"If you have used Twine 1 before, the guide also has details " +"on what has changed in this version. Chief among them is a new default story " +"format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, " +"try using SugarCube instead." +msgstr "" +"Se você já usou o Twine 1, o guia também possui detalhes " +"sobre o que mudou nessa versão. A maior mudança é o novo formato padrão de " +"histórias, Harlowe. Mas se você preferir a sintaxe de script do Twine 1, " +"tente usar o SugarCube." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 +#: templates/welcomeviewnw.html:23 +msgid "OK" +msgstr "OK" + +#: templates/welcomeview.html:47 +msgid "Your work is saved only in your browser." +msgstr "Seu trabalho é salvo apenas em seu navegador." + +#: templates/welcomeview.html:51 +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Isso significa que você não precisar criar uma conta para usar o Twine 2, e " +"tudo que você cria não é armazenado em algum servidor remoto — mas " +"permanece no seu navegador." + +#: templates/welcomeview.html:55 +msgid "" +"Two very important things to remember, though. Since your work is " +"saved only in your browser, if you clear its saved data, then you'll lose " +"your work! Not good. Remember to use that  Archive button often. You can also publish " +"individual stories to files using the menu on " +"each story in the story list. Both archive and story files can always be re-" +"imported into Twine." +msgstr "" +"Duas coisas muito importantes para se lembrar. Já que o seu trabalho " +"é salvo apenas no seu navegador, se você limpar os dados salvos, você " +"perderá seu trabalho! Isso não é nada bom. Lembre-se de usar aquele botão de " +" Histórico com " +"frequência. Você também pode publicar histórias individuais para arquivos " +"usando o menu em cada história na lista de " +"histórias. Tanto arquivos de histórias quanto arquivos de históricos podem " +"ser re-importados para o Twine." + +#: templates/welcomeview.html:59 +msgid "" +"Secondly, anyone who can use this browser can see and make changes to " +"your work. So if you've got a nosy kid brother, look into setting up a " +"separate profile for yourself." +msgstr "" +"Em segundo lugar, qualquer pessoa que use esse navegador pode ver e fazer " +"mudanças em seu trabalho. Então, se você possui um irmão pequeno " +"bisbilhoteiro, procure configurar um perfil separado para você." + +#: templates/welcomeview.html:71 +msgid "That's it!" +msgstr "É isso!" + +#: templates/welcomeview.html:75 +msgid "Thanks for reading, and have fun with Twine." +msgstr "Obrigado por ler, e divirta-se com o Twine." + +#: templates/welcomeview.html:79 +msgid "Go to the Story List" +msgstr "Vá para a Lista de Histórias" + +#: templates/welcomeviewnw.html:7 +msgid "Your work is automatically saved." +msgstr "Seu trabalho é salvo automaticamente." + +#: templates/welcomeviewnw.html:11 +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the Show " +"Library item in the Twine menu." +msgstr "" +"Há uma nova pasta chamada Twine em sua pasta de Documentos. Dentro dela, há " +"uma pasta de Histórias, onde todos os seus trabalhos serão salvos. O Twine " +"salva enquanto você trabalha, então não precisa se preocupar em lembrar de " +"salvar manualmente. Você pode abrir a pasta onde suas histórias estão salvas " +"usando o item Mostrar Biblioteca no menu do Twine." + +#: templates/welcomeviewnw.html:15 +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Porque o Twine está sempre salvando seu trabalho, os arquivos em sua " +"biblioteca de histórias estarão trancados para edição enquanto o Twine " +"estiver aberto." + +#: templates/welcomeviewnw.html:19 +msgid "" +"If you'd like to open a Twine story file you received from someone else, you " +"can import it into your library using the " +"Import From File link in the story list." +msgstr "" +"Se você gostaria de abrir um arquivo de uma história de Twine recebido de " +"outra pessoa, você pode importá-lo para sua biblioteca usando o link Importar De Arquivo em sua lista de " +"histórias." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:226 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” não pôde ser salvo (%2$s)." + +#. L10n: %s is the error message. +#: js/app.js:283 +#, javascript-format +msgid "An error occurred while publishing your story. (%s)" +msgstr "Ocorreu um erro na publicação da sua história. (%s)" + +#: js/app.js:314 +msgid "Twine Archive.html" +msgstr "Histórico de Twine.html" + +#. L10n: An internal error. %s is a bad sort criterion. +#: js/collections/storycollection.js:35 +#, javascript-format +msgid "don't know how to sort stories by %s" +msgstr "não sabe como selecionar histórias por %s" + +#: js/models/passage.js:19 +msgid "Untitled Passage" +msgstr "Passagem Sem Nome" + +#: js/models/passage.js:21 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Clique nessa passagem, e então no ícone de lápis para editar." + +#: js/models/passage.js:22 +msgid "Double-click this passage to edit it." +msgstr "Clique duas vezes nessa passagem para editá-la." + +#: js/models/passage.js:78 +msgid "You must give this passage a name." +msgstr "Você precisa dar um nome a essa passagem." + +#: js/models/passage.js:85 +#, javascript-format +msgid "" +"There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "" +"Já existe uma passagem chamada \"%s.\" Por favor, dê um nome único a essa " +"passagem." + +#: js/models/story.js:16 +msgid "Untitled Story" +msgstr "História Sem Nome" + +#: js/models/story.js:112 +msgid "There is no starting point set for this story." +msgstr "Não há ponto de partida configurado para essa história." + +#: js/models/story.js:115 +msgid "The passage set as starting point for this story does not exist." +msgstr "" +"A passagem marcada como ponto de partida para essa história não existe." + +#: js/models/storyformat.js:38 +msgid "Untitled Story Format" +msgstr "Formato de História Sem Nome" + +#: js/nwui.js:81 +msgid "Toggle Fullscreen" +msgstr "Ativar/Desativar Tela Cheia" + +#: js/nwui.js:100 +msgid "Quit" +msgstr "Sair" + +#: js/nwui.js:115 +msgid "Edit" +msgstr "Editar" + +#: js/nwui.js:120 +msgid "Undo" +msgstr "Desfazer" + +#: js/nwui.js:132 +msgid "Cut" +msgstr "Cortar" + +#: js/nwui.js:142 +msgid "Copy" +msgstr "Copiar" + +#: js/nwui.js:152 +msgid "Paste" +msgstr "Colar" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 +#: js/views/storyeditview/storyeditview.js:126 +msgid "Delete" +msgstr "Excluir" + +#: js/nwui.js:182 +msgid "Show Library" +msgstr "Mostrar Biblioteca" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:239 +msgid "/Documents" +msgstr "/Documentos" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:249 js/nwui.js:250 +msgid "/My\\ Documents" +msgstr "/Meus\\ Documentos" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:260 js/nwui.js:264 +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:260 +msgid "/Stories" +msgstr "/Histórias" + +#. L10n: %s is the error message. +#: js/nwui.js:430 +#, javascript-format +msgid "An error occurred while saving your story (%s)." +msgstr "Ocorreu um erro ao salvar sua história (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:457 +#, javascript-format +msgid "An error occurred while deleting your story (%s)." +msgstr "Ocorreu um erro ao excluir sua história (%s)." + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:527 +#, javascript-format +msgid "An error occurred while locking your library (%s)." +msgstr "Ocorreu um erro ao trancar sua biblioteca (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#: js/nwui.js:556 +#, javascript-format +msgid "An error occurred while unlocking your library (%s)." +msgstr "Ocorreu um erro ao destrancar sua biblioteca (%s)." + +#. L10n: An internal error message related to UI components. +#: js/ui.js:166 +#, javascript-format +msgid "Don't know how to do bubble action %s" +msgstr "Não sabe como executar ação bolha %s" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:219 +#, javascript-format +msgid "Don't know how to do collapse action %s" +msgstr "Não sabe como fazer ação de colapso %s" + +#. L10n: An internal error when changing locale. +#: js/views/localeview.js:27 +#, javascript-format +msgid "Can't set locale to nonstring: %s" +msgstr "Não pode estabelecer local nonstring: %s" + +#: js/views/storyeditview/editors/passageeditor.js:120 +#: js/views/storyeditview/storyeditview.js:563 +#, javascript-format +msgid "Editing “%s”" +msgstr "Editando “%s”" + +#: js/views/storyeditview/editors/passageeditor.js:211 +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "" +"Quaisquer mudanças na passagem que você está editando não foram salvas ainda." + +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d passagem combina." +msgstr[1] "%d passagens combinam." + +#: js/views/storyeditview/modals/searchmodal.js:102 +msgid "No matching passages found." +msgstr "Nenhuma combinação de passagem foi encontrada." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "%d substituição foi feita em" +msgstr[1] "%d substituições foram feitas em" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d passagem" +msgstr[1] "%d passagens" + +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Letra" +msgstr[1] "Letras" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Palavra" +msgstr[1] "Palavras" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Link" +msgstr[1] "Links" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Link Quebrado" +msgstr[1] "Links Quebrados" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 +#: js/views/storylistview/modals/formatsmodal.js:74 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "" +"O formato de história “%1$s” não pôde ser carregado (%2$s)." + +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +msgid "Are you sure you want to delete “%s”? " +msgstr "Você tem certeza que quer excluir “%s”?" + +#: js/views/storyeditview/passageitemview.js:169 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "(Pressione a tecla Shift ao excluir para pular essa mensagem.)" + +#. L10n: An internal error related to handling user input. +#: js/views/storyeditview/passageitemview.js:461 +msgid "Don't see either mouse or touch coordinates on event" +msgstr "Não vê coordenadas de mouse ou toque em evento" + +#. L10n: An internal error related to user input. +#: js/views/storyeditview/passageitemview.js:523 +msgid "Couldn't find original touch ID in movement event" +msgstr "Não pôde achar ID de toque original em evento de movimento" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 +#: js/views/storyeditview/storyeditview.js:64 +#, javascript-format +msgid "A problem occurred while saving your changes (%s)." +msgstr "Ocorreu um problema ao salver suas mudanças (%s)." + +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +msgid "Are you sure you want to delete this passage?" +msgid_plural "" +"Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "Você tem certeza que quer excluir essa passagem (%d)?" +msgstr[1] "" +"Você tem certeza que quer excluir essas %d passagens? Isso não pode ser " +"desfeito." + +#: js/views/storyeditview/storyeditview.js:268 +msgid "This story does not have a starting point. " +msgstr "Essa história não possui um ponto de partida." + +#: js/views/storyeditview/storyeditview.js:282 +msgid "" +"Refreshed the playable version of your story in the previously-opened tab or " +"window." +msgstr "" +"Atualize a versão jogável da sua história na aba ou janela previamente " +"aberta." + +#: js/views/storyeditview/storyeditview.js:312 +#: js/views/storyeditview/storyeditview.js:352 +#: js/views/storylistview/storyitemview.js:110 +msgid "" +"This story does not have a starting point. Use the icon on a passage to set this." +msgstr "" +"Essa história não possui um ponto de partida. Use o ícone numa passagem para configurar isso." + +#: js/views/storyeditview/storyeditview.js:325 +msgid "" +"Refreshed the test version of your story in the previously-opened tab or " +"window." +msgstr "" +"Está atualizada a versão de teste da sua história na aba ou janela " +"previamente aberta." + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a localized date and time +#: js/views/storyeditview/storyeditview.js:573 +#: js/views/storyeditview/toolbar.js:94 +#, javascript-format +msgid "Last saved at %s" +msgstr "Salvo pela última vez em %s" + +#: js/views/storylistview/modals/formatsmodal.js:137 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "O formato de história em %1$s não pôde ser adicionado (%2$s)." + +#. L10n: An internal error related to story formats. +#: js/views/storylistview/modals/formatsmodal.js:246 +msgid "Don't know what kind of format to set as default" +msgstr "Não sabe qual tipo de formato configurar como padrão" + +#: js/views/storylistview/storagequota.js:21 +#: js/views/storylistview/storagequota.js:44 +#: js/views/storylistview/storagequota.js:49 +#, javascript-format +msgid "%d%% space available" +msgstr "%d%% de espaço disponível" + +#: js/views/storylistview/storyitemview.js:80 +#: js/views/storylistview/storyitemview.js:94 +msgid "" +"This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "" +"Essa história não possui um ponto de partida. Edite essa história e use o " +"ícone numa passagem para configurar isso." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Você tem certeza que quer excluir “%s”? Isso não pode ser " +"desfeito." + +#: js/views/storylistview/storyitemview.js:125 +msgid "Delete Forever" +msgstr "Excluir Para Sempre" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +msgid "What should “%s” be renamed to?" +msgstr "Qual deve ser o novo nome de “%s”?" + +#: js/views/storylistview/storyitemview.js:138 +msgid "Rename" +msgstr "Renomear" + +#: js/views/storylistview/storyitemview.js:155 +msgid "What should the duplicate be named?" +msgstr "Qual deve ser o nome da duplicação?" + +#: js/views/storylistview/storyitemview.js:156 +msgid "Duplicate" +msgstr "Duplicar" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +msgid "%s Copy" +msgstr "%s Cópia" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "%d história foi importada." +msgstr[1] "%d histórias foram importadas." + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d História" +msgstr[1] "%d Histórias" diff --git a/src/locale/po/pt-pt.po b/src/locale/po/pt-pt.po new file mode 100644 index 000000000..eead4f554 --- /dev/null +++ b/src/locale/po/pt-pt.po @@ -0,0 +1,793 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.11\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: pt_PT\n" + +#: src/dialogs/about/index.html +msgid "About Twine" +msgstr "Sobre o Twine" + +#: src/dialogs/about/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"O Twine é uma ferramenta de código-fonte aberto para contar histórias " +"interativas e não-lineares." + +#: src/dialogs/about/index.html +msgid "" +"This application is released under the \\x3ca href=\"http:\\/\\/www.gnu.org/" +"licenses/gpl-3.0.html\">GPL v3\\x3c/a> license, but any work created with it " +"may be released under any terms, including commercial ones." +msgstr "" +"Esta aplicação foi lançada nos termos da licença \\x3ca href=\"http:\\/\\/" +"www.gnu.org/licenses/gpl-3.0.html\">GPL v3\\x3c/a>, mas as obras criadas com " +"ela podem ser lançadas de acordo com os termos de quaisquer outras licenças, " +"incluindo as de natureza comercial." + +#: src/dialogs/about/index.html +msgid "Help Twine Grow With A Donation" +msgstr "Ajude o Twine a crescer com uma doação" + +#: src/dialogs/about/index.html +msgid "Source Code Repository" +msgstr "Repositório do código-fonte" + +#: src/dialogs/about/index.html +msgid "Translations" +msgstr "Traduções" + +#: src/dialogs/about/index.html +msgid "Libraries" +msgstr "Bibliotecas" + +#: src/dialogs/about/index.html +msgid "Fonts" +msgstr "Fontes" + +#: src/dialogs/about/index.html +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for \\x3ca href=\"http:\\/\\/adobe.com/\">Adobe" +"\\x3c/a>\\x3cbr> Nunito was designed by \\x3ca href=\"http:\\/\\/code." +"newtypography.co.uk/\">Vernon Adams\\x3c/a>" +msgstr "" +"As fontes Source Sans Pro e Source Code Pro foram projetadas por Paul D. " +"Hunt sob a orientação de Robert Slimbach para a \\x3ca href=\"http:\\/\\/" +"adobe.com/\">Adobe\\x3c/a>\\x3cbr>. A fonte Nunito foi projetada por \\x3ca " +"href=\"http:\\/\\/code.newtypography.co.uk/\">Vernon Adams\\x3c/a>" + +#: src/dialogs/about/index.html +msgid "Icons" +msgstr "Ícones" + +#: src/dialogs/about/index.html +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Ícone \"Documento\" projetado por Rob Gill do Noun Project" + +#: src/dialogs/about/index.html +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Ícone \"Pergunta\" projetado por Henry Ryder do Noun Project" + +#: src/dialogs/about/index.html +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Ícone \"Sorriso\" projetado por dimitrov jelio do Noun Project" + +#: src/dialogs/app-donation/index.html +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Se gosta tanto do Twine como eu, então, ajude-o a crescer com uma doação. O " +"Twine é um projeto de código-fonte aberto que será sempre de utilização " +"gratuita — e com a sua ajuda, poderá continuar a prosperar." + +#: src/dialogs/app-donation/index.html +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, o criador do Twine" + +#: src/dialogs/app-donation/index.html +msgid "No Thanks" +msgstr "Não, obrigado" + +#: src/dialogs/app-donation/index.html +msgid "Donate" +msgstr "Doar" + +#: src/dialogs/app-donation/index.html +msgid "" +"This message will only be shown to you once.<br>If you'd like to " +"donate to Twine development in the future, you can do so at <a href=\\" +"\"http:\\/\\/twinery.org/donate\\\" target=\\\"_blank\\\">http://twinery." +"org/donate</a>." +msgstr "" +"Esta mensagem só lhe será apresentada uma única vez.<br>Se quiser " +"fazer fazer um donativo para apoiar o desenvolvimento do Twine no futuro, " +"pode fazê-lo <a href=\\\"http:\\/\\/twinery.org/donate\\\" target=\\" +"\"_blank\\\">http://twinery.org/donate</a>." + +#: src/dialogs/formats/index.html +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Os formatos de história controlam a aparência e o comportamento das " +"histórias durante o jogo." + +#: src/dialogs/formats/index.html +msgid "Use as Default" +msgstr "Usar por defeito" + +#: src/dialogs/formats/index.html +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Os formatos de revisão de texto criam versões das histórias especialmente " +"adaptadas para edição e revisão." + +#: src/dialogs/formats/index.html +msgid "Use" +msgstr "Usar" + +#: src/dialogs/formats/index.html src/story-list-view/list-toolbar/index.js:24 +msgid "Add" +msgstr "Adicionar" + +#: src/dialogs/formats/index.html src/dialogs/story-format/index.html +msgid "Loading..." +msgstr "A carregar..." + +#: src/dialogs/story-format/index.html +msgid "Story Format" +msgstr "Formato de história" + +#: src/dialogs/story-format/index.html +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"O formato de história controla a aparência e o comportamento da história " +"durante o jogo." + +#: src/dialogs/story-import/index.html +#: src/story-list-view/list-toolbar/index.html +msgid "Import From File" +msgstr "Importar do arquivo" + +#: src/dialogs/story-import/index.html +msgid "Import this file:" +msgstr "Importe este arquivo:" + +#: src/dialogs/story-import/index.html src/dialogs/confirm/index.js:31 +#: src/dialogs/prompt/index.js:15 +msgid "Cancel" +msgstr "Cancelar" + +#: src/dialogs/story-import/index.html +msgid "Working..." +msgstr "A processar..." + +#: src/dialogs/story-import/index.html +msgid "" +"Some stories you are importing already exist in your library. Please choose " +"which to replace. Any other stories in your file will be imported as well." +msgstr "" +"Algumas das histórias que está a importar já se encontram na sua biblioteca. " +"Indique-nos as que pretende substituir. Quaisquer outras histórias no seu " +"ficheiro serão também importadas." + +#: src/dialogs/story-import/index.html +msgid "Don't Import Any Stories" +msgstr "Não importar nenhumas histórias" + +#: src/dialogs/story-search/index.html +msgid "Find and Replace" +msgstr "Encontrar e Substituir" + +#: src/dialogs/story-search/index.html +msgid "Search For" +msgstr "Procurar por" + +#: src/dialogs/story-search/index.html +msgid "Include passage names" +msgstr "Incluir os nomes das passagens" + +#: src/dialogs/story-search/index.html +msgid "Match case" +msgstr "Diferenciar maiúsculas de minúsculas" + +#: src/dialogs/story-search/index.html +msgid "Regular expression" +msgstr "Expressão normal" + +#: src/dialogs/story-search/index.html +msgid "Replace With" +msgstr "Substituir por" + +#: src/dialogs/story-search/index.html +msgid "Replace All" +msgstr "Substituir tudo" + +#: src/dialogs/story-search/index.html +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d passagem encontrada." +msgstr[1] "%d passagens encontradas." + +#: src/dialogs/story-search/index.html +msgid "Searching..." +msgstr "A pesquisar..." + +#: src/dialogs/story-search/result.html +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d ocorrência" +msgstr[1] "%d ocorrências" + +#: src/dialogs/story-search/result.html +msgid "Replace in Passage" +msgstr "Substituir na passagem" + +#: src/dialogs/story-stats/index.html +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Story Statistics" +msgstr "Estatísticas da história" + +#: src/editors/javascript/index.html +msgid "JavaScript" +msgstr "JavaScript" + +#: src/editors/javascript/index.html +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Qualquer código de JavaScript aqui introduzido vai correr assim que a " +"história for aberta no navegador." + +#: src/editors/passage/index.html +msgid "A passage already exists with this name." +msgstr "Já existe uma passagem com este nome." + +#: src/editors/passage/tag-editor.html +msgid "Tag" +msgstr "Etiqueta" + +#: src/editors/stylesheet/index.html +msgid "Stylesheet" +msgstr "Folha de estilo" + +#: src/editors/stylesheet/index.html +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "" +"Qualquer fragmento de código CSS introduzido aqui irá alterar a aparência " +"padrão da sua história." + +#: src/locale/view/index.html +msgid "Please choose which language you would like to use with Twine." +msgstr "Quer trabalhar no Twine em que língua?" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Hi!" +msgstr "Olá!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"O Twine é uma ferramenta de código-fonte aberto para contar histórias " +"interativas e não-lineares. Há algumas coisas que é melhor saber antes de " +"começar." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Tell Me More" +msgstr "Quero saber mais" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Skip" +msgstr "Saltar" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "New here?" +msgstr "É a primeira vez aqui?" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\" +"\">Twine 2 Guide</a> and the official wiki in general, are a great " +"place to learn. Keep in mind that some articles on the wiki at large were " +"written for Twine 1, which is a little bit different than this version. But " +"most of the concepts are the same." +msgstr "" +"<strong>Se nunca usou o Twine antes,</strong> então, seja bem-" +"vindo(a)! O <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\" +"\">Guia do Twine 2</a> e a wiki oficial são, normalmente, ótimos " +"recursos para aprender. Tenha presente que muitos dos artigos da wiki foram " +"escritos para o Twine 1, que é um pouco diferente desta versão. Mas a " +"maioria dos conceitos é a mesma." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "" +"<strong>If you have used Twine 1 before,</strong> the guide also " +"has details on what has changed in this version. Chief among them is a new " +"default story format, Harlowe. But if you find you prefer the Twine 1 " +"scripting syntax, try using SugarCube instead." +msgstr "" +"<strong>Se já usou o Twine 1 antes,</strong> o guia poderá dar-" +"lhe mais informações sobre o que mudou nesta nova versão. A principal " +"alteração é o novo formato de história por defeito, o Harlowe. Mas se achar " +"que prefere a sintaxe da linguagem do Twine 1, pode continuar a usar o " +"formato SugarCube." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "OK" +msgstr "OK" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "Your work is automatically saved." +msgstr "O seu trabalho é guardado automaticamente." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the <b>Show " +"Library</b> item in the <b>Twine</b> menu." +msgstr "" +"Foi criada uma pasta chamada Twine na sua pasta de Documentos. Lá dentro " +"está a pasta \"Histórias\", onde todo o seu trabalho será guardado. O Twine " +"vai guardando o documento enquanto trabalha, portanto não tem de se " +"preocupar em guardá-lo. Pode sempre abrir a pasta onde as suas histórias são " +"guardadas, usando o item de <b>Mostrar Biblioteca</b> no menu do " +"<b>Twine</b>." + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Como o Twine está sempre a guardar o seu trabalho, os ficheiros na sua " +"biblioteca de histórias ficarão trancados e não poderão ser editados " +"enquanto o Twine estiver aberto." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "That's it!" +msgstr "E é isto!" + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Thanks for reading, and have fun with Twine." +msgstr "Obrigado pela atenção, e divirta-se com o Twine." + +#: src/nw/patches/welcome-view/replacement-template.html src/welcome/index.html +msgid "Go to the Story List" +msgstr "Ir para a Lista de Histórias" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Test" +msgstr "Testar" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play" +msgstr "Jogar" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Passage" +msgstr "Passagem" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story JavaScript" +msgstr "Editar o código JavaScript da história" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story Stylesheet" +msgstr "Editar a folha de estilos da história" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Change Story Format" +msgstr "Mudar o formato de história" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Rename Story" +msgstr "Mudar o nome da história" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Snap to Grid" +msgstr "Ajustar à grelha" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "View Proofing Copy" +msgstr "Ver uma cópia para revisão" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Publish to File" +msgstr "Publicar como ficheiro" + +#: src/story-list-view/index.html +msgid "Drop a story file to import" +msgstr "Largue aqui um arquivo para o importar" + +#: src/story-list-view/index.html +msgid "Sort By" +msgstr "Dispor por" + +#: src/story-list-view/index.html +msgid "Edit Date" +msgstr "Data da última edição" + +#: src/story-list-view/index.html +msgid "Name" +msgstr "Nome" + +#: src/story-list-view/index.html +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Neste momento, não há histórias gravadas no Twine. Para começar, crie uma " +"nova história ou importe uma de um ficheiro." + +#: src/story-list-view/list-toolbar/index.html src/nw/directories.js:69 +#: src/nw/menus.js:17 src/nw/menus.js:39 +msgid "Twine" +msgstr "Twine" + +#: src/story-list-view/list-toolbar/index.html +msgid "Story" +msgstr "História" + +#: src/story-list-view/list-toolbar/index.html +msgid "Archive" +msgstr "Arquivo" + +#: src/story-list-view/list-toolbar/index.html +msgid "Formats" +msgstr "Formatos" + +#: src/story-list-view/list-toolbar/index.html +msgid "Language" +msgstr "Idioma" + +#: src/story-list-view/list-toolbar/index.html +msgid "Help" +msgstr "Ajuda" + +#: src/story-list-view/list-toolbar/index.html +msgid "version" +msgstr "versão" + +#: src/story-list-view/list-toolbar/index.html +msgid "Report a bug" +msgstr "Reportar um erro" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Play Story" +msgstr "Jogar a história" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Test Story" +msgstr "Testar a história" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Duplicate Story" +msgstr "Duplicar a história" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Delete Story" +msgstr "Apagar a história" + +#: src/welcome/index.html +msgid "" +"<strong>If you've never used Twine before,</strong> then " +"welcome! The <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\" +"\">Twine 2 Guide</a> and the official wiki in general, are a great " +"place to learn. Keep in mind that some articles on the wiki at larger were " +"written for Twine 1, which is a little bit different than this version. But " +"most of the concepts are the same." +msgstr "" +"<strong>Se nunca usou o Twine antes,</strong> então, seja bem-" +"vindo(a)! O <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\" +"\">Guia do Twine 2</a> e a wiki oficial são, normalmente, ótimos " +"recursos para aprender. Tenha presente que muitos dos artigos da wiki foram " +"escritos para o Twine 1, que é um pouco diferente desta versão. Mas a " +"maioria dos conceitos é a mesma." + +#: src/welcome/index.html +msgid "Your work is saved only in your browser." +msgstr "O seu trabalho é gravado apenas no seu navegador." + +#: src/welcome/index.html +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Isto significa que não precisa de criar uma conta para usar o Twine 2 e que " +"tudo o que criar não fica alojado num servidor sabe-se lá onde — mas " +"fica guardado aqui no seu navegador." + +#: src/welcome/index.html +msgid "" +"Two <b>very important</b> things to remember, though. Since your " +"work is saved only in your browser, if you clear its saved data, then you'll " +"lose your work! Not good. Remember to use that <i class=\\\"fa fa-" +"briefcase\\\"></i> <strong>Archive</strong> button " +"often. You can also publish individual stories to files using the <i " +"class=\\\"fa fa-cog\\\"></i> menu on each story in the story list. " +"Both archive and story files can always be re-imported into Twine." +msgstr "" +"Duas coisas <b>muito importantes</b>de que não se deve esquecer. " +"Como o seu trabalho é apenas guardado no navegador, se lhe limpar o " +"histórico ou os dados guardados, vai perder todo o seu trabalho! O que, " +"convenhamos, não é nada bom. Lembre-se de usar o botão do <i class=\\\"fa " +"fa-briefcase\\\"></i> <strong>Arquivo</strong> " +"frequentemente. Também pode passar histórias individuais para ficheiros, " +"usando o menu <i class=\\\"fa fa-cog\\\"></i> em cada história " +"da lista de histórias. Tanto os arquivos como os ficheiros da história podem " +"ser sempre reimportados para o Twine." + +#: src/welcome/index.html +msgid "" +"Secondly, <b>anyone who can use this browser can see and make changes " +"to your work</b>. So if you've got a nosy kid brother, look into " +"setting up a separate profile for yourself." +msgstr "" +"Em segundo lugar, <b>qualquer um que usar este navegador pode ver e " +"fazer alterações ao seu trabalho</b>. Portanto, se tiver um irmãozinho " +"abelhudo, talvez valha a pena aprender a configurar um perfil separado só " +"para si." + +#: src/data/actions.js:262 +msgid "a story format named “%s” already exists" +msgstr "Já existe um formato de história chamado “%s”" + +#: src/data/publish.js:75 +msgid "There is no starting point set for this story." +msgstr "Não foi definido nenhum ponto de partida para esta história." + +#: src/data/publish.js:81 +msgid "The passage set as starting point for this story does not exist." +msgstr "" +"A passagem definida como ponto de partida para esta história não existe." + +#: src/data/story-format.js:7 +msgid "Untitled Story Format" +msgstr "Formato de história sem título" + +#: src/data/story.js:190 +msgid "Untitled Story" +msgstr "História sem título" + +#: src/data/story.js:207 src/story-edit-view/index.js:195 +msgid "Untitled Passage" +msgstr "Passagem sem título" + +#: src/data/story.js:210 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Toque nesta passagem e, em seguida, no ícone do lápis para editá-la." + +#: src/data/story.js:211 +msgid "Double-click this passage to edit it." +msgstr "Faça duplo-clique nesta passagem para editá-la." + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: src/dialogs/app-update/index.js:40 +msgid "" +"A new version of Twine, , has been released." +msgstr "" +"Foi lançada uma nova versão do Twine, a versão ." + +#: src/dialogs/app-update/index.js:44 +msgid "Download" +msgstr "Descarregar" + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: src/dialogs/app-update/index.js:51 +msgid "Not Right Now" +msgstr "Agora não" + +#. L10n: %1$s is the name of the story format; %2$s is +#: src/dialogs/formats/index.js:60 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "" +"O formato de história “%1$s” não pôde ser carregado (%2$s)." + +#: src/dialogs/formats/index.js:102 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "O formato de história em %1$s não pôde ser adicionado (%2$s)." + +#. L10n: %s is the name of an author. +#: src/dialogs/formats/item.js:30 +msgid "by %s" +msgstr "por %s" + +#: src/dialogs/formats/item.js:51 +msgid "Are you sure?" +msgstr "Tem a certeza?" + +#: src/dialogs/formats/item.js:53 +msgid "Remove" +msgstr "Remover" + +#: src/dialogs/story-import/index.js:56 +msgid "Don\\'t Replace Any Stories" +msgstr "Não substituir nenhuma das histórias" + +#: src/dialogs/story-import/index.js:59 +msgid "Replace %d Story" +msgid_plural "Replace %d Stories" +msgstr[0] "Substituir %d história" +msgstr[1] "Substituir %d histórias" + +#: src/dialogs/story-stats/index.js:37 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Caráter" +msgstr[1] "Caraters" + +#: src/dialogs/story-stats/index.js:51 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Palavra" +msgstr[1] "Palavras" + +#: src/dialogs/story-stats/index.js:85 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Ligação" +msgstr[1] "Ligações" + +#: src/dialogs/story-stats/index.js:98 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Ligação quebrada" +msgstr[1] "Ligações quebradas" + +#: src/editors/passage/index.js:37 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Insira o texto da sua passagem aqui. Para fazer uma ligação a outra " +"passagem, ponha colchetes duplos à volta do nome, [[assim]]." + +#: src/editors/passage/index.js:181 +msgid "Editing \\u201c%s\\u201d" +msgstr "A editar \\u201c%s\\u201d" + +#. L10n: %1$s is a filename; %2$s is the error message. +#: src/file/save.js:71 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” não pôde ser guardado (%2$s)." + +#. L10n: This is the folder name on OS X, Linux, and recent versions of Windows that a user's documents are stored in, relative to the user's home directory. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. Regardless, this must have a single forward slash (/) as its first character. +#: src/nw/directories.js:38 +msgid "/Documents" +msgstr "/Documentos" + +#: src/nw/directories.js:51 +msgid "My\\\\ Documents" +msgstr "Meus\\\\ documentos" + +#: src/nw/directories.js:70 +msgid "Stories" +msgstr "Histórias" + +#: src/nw/menus.js:27 +msgid "Toggle Fullscreen" +msgstr "Alternar ecrã completo" + +#: src/nw/menus.js:44 +msgid "Quit" +msgstr "Sair" + +#: src/nw/menus.js:61 +msgid "Edit" +msgstr "Editar" + +#: src/nw/menus.js:66 +msgid "Undo" +msgstr "Desfazer" + +#: src/nw/menus.js:79 +msgid "Cut" +msgstr "Cortar" + +#: src/nw/menus.js:88 +msgid "Copy" +msgstr "Copiar" + +#: src/nw/menus.js:97 +msgid "Paste" +msgstr "Colar" + +#: src/nw/menus.js:106 src/story-edit-view/passage-item/index.js:275 +msgid "Delete" +msgstr "Apagar" + +#: src/nw/menus.js:118 +msgid "Show Library" +msgstr "Mostrar Biblioteca" + +#: src/story-edit-view/passage-item/index.js:260 +#: src/story-list-view/story-item/item-menu/index.js:78 +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Tem a certeza de que quer apagar “%s”? Esta ação não pode ser " +"anulada." + +#: src/story-edit-view/passage-item/index.js:267 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "(Mantenha premida a tecla Shift ao apagar para ignorar esta mensagem.)" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:46 +#: src/story-list-view/story-item/item-menu/index.js:100 +msgid "What should “%s” be renamed to?" +msgstr "Qual deve ser o novo nome de “%s”?" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:51 +#: src/story-list-view/story-item/item-menu/index.js:105 +msgid "Rename" +msgstr "Mudar o nome" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:55 +#: src/story-list-view/story-item/item-menu/index.js:109 +#: src/story-list-view/story-item/item-menu/index.js:128 +msgid "Please enter a name." +msgstr "Indique um nome, por favor." + +#: src/story-list-view/index.js:79 +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d história" +msgstr[1] "%d histórias" + +#: src/story-list-view/list-toolbar/index.js:21 +msgid "What should your story be named?
(You can change this later.)" +msgstr "" +"Como é que a sua história se vai chamar?
(Pode alterar o nome mais tarde.)" + +#: src/story-list-view/list-toolbar/index.js:30 +msgid "A story with this name already exists." +msgstr "Já existe uma história com esse nome." + +#: src/story-list-view/list-toolbar/index.js:60 +msgid "Twine Archive.html" +msgstr "Twine Archive.html" + +#: src/story-list-view/story-item/item-menu/index.js:84 +msgid "Delete Forever" +msgstr "Apagar para sempre" + +#: src/story-list-view/story-item/item-menu/index.js:122 +msgid "What should the duplicate be named?" +msgstr "Que nome quer dar ao duplicado?" + +#: src/story-list-view/story-item/item-menu/index.js:124 +msgid "Duplicate" +msgstr "Duplicar" + +#: src/story-list-view/story-item/item-menu/index.js:126 +msgid "%s Copy" +msgstr "%s Copiar" + +#: src/ui/quota-gauge/index.js:24 +msgid "%d%% space available" +msgstr "espaço disponível: %d%%" diff --git a/src/locale/po/ru.po b/src/locale/po/ru.po new file mode 100755 index 000000000..579231608 --- /dev/null +++ b/src/locale/po/ru.po @@ -0,0 +1,1178 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-06 11:25+0300\n" +"PO-Revision-Date: 2015-08-06 17:15+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.8.4\n" +"Last-Translator: Anton Zhuchkov \n" +"Language: ru_RU\n" + +#: templates/localeview.html:4 +msgid "Please choose which language you would like to use with Twine." +msgstr "Пожалуйста, выберите язык, который вы хотите использовать в Twine." + +#: templates/storyeditview/passageeditmodal.html:8 +msgid "Passage Name" +msgstr "Название параграфа" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +msgid "Tag" +msgstr "Тег" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +msgid "Tag name" +msgstr "Имя тега" + +#: templates/storyeditview/passageeditmodal.html:36 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Наберите здесь содержимое вашего параграфа. Чтобы поставить ссылку на другой " +"параграф, возьмите его имя в двойные квадратные скобки - [[вот так]]." + +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +msgid "Delete “%s”" +msgstr "Удалить “%s”" + +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +msgid "Edit “%s”" +msgstr "Редактировать “%s”" + +#: templates/storyeditview/passageitemview.html:24 +msgid "Test story starting here" +msgstr "Тестовая история начинается здесь" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +msgid "Set “%s” as starting point" +msgstr "Сделать “%s” отправной точкой истории" + +#: templates/storyeditview/renamestorymodal.html:8 +#: templates/storyeditview/toolbar.html:31 +#: templates/storylistview/storyitemview.html:36 +msgid "Rename Story" +msgstr "Переименовать историю" + +#: templates/storyeditview/renamestorymodal.html:14 +msgid "What should this story's name be?" +msgstr "Как будет называться эта история?" + +#: templates/storyeditview/renamestorymodal.html:24 +msgid "Please enter a name." +msgstr "Пожалуйста, введите имя." + +#: templates/storyeditview/renamestorymodal.html:28 +#: templates/storylistview/formatitem.html:7 +#: templates/storylistview/storylistview.html:25 +#: templates/storylistview/storylistview.html:50 +msgid "Cancel" +msgstr "Отмена" + +#: templates/storyeditview/renamestorymodal.html:29 +msgid "Save" +msgstr "Сохранить" + +#: templates/storyeditview/scripteditmodal.html:8 +msgid "JavaScript" +msgstr "JavaScript" + +#: templates/storyeditview/scripteditmodal.html:14 +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Любой JavaScript-код, введённый здесь, будет немедленно исполнен, как только " +"история будет открыта в веб-браузере." + +#: templates/storyeditview/searchmodal.html:7 +msgid "Find and Replace" +msgstr "Найти и заменить" + +#: templates/storyeditview/searchmodal.html:12 +msgid "Search For" +msgstr "Искать" + +#: templates/storyeditview/searchmodal.html:18 +msgid "Include passage names" +msgstr "Включая имена параграфов" + +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +msgid "Match case" +msgstr "Учитывать регистр" + +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +msgid "Regular expression" +msgstr "Регулярное выражение" + +#: templates/storyeditview/searchmodal.html:34 +msgid "Replace With" +msgstr "Заменить на" + +#: templates/storyeditview/searchmodal.html:40 +msgid "Expand all search results" +msgstr "Развернуть все результаты поиска" + +#: templates/storyeditview/searchmodal.html:44 +msgid "Collapse all search results" +msgstr "Свернуть все результаты поиска" + +#: templates/storyeditview/searchmodal.html:49 +msgid "Replace All" +msgstr "Заменить все" + +#: templates/storyeditview/searchmodal.html:57 +msgid "Searching..." +msgstr "Идёт поиск..." + +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d совпадение" +msgstr[1] "%d совпадения" +msgstr[2] "%d совпадений" + +#: templates/storyeditview/searchmodalresult.html:22 +msgid "Replace in this passage" +msgstr "Заменить в этом параграфе" + +#: templates/storyeditview/searchmodalresult.html:23 +msgid "Replace in Passage" +msgstr "Заменить в параграфе" + +#: templates/storyeditview/statsmodal.html:8 +#: templates/storyeditview/toolbar.html:39 +msgid "Story Statistics" +msgstr "Статистика истории" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +msgid "This story was last changed at %s" +msgstr "Эта история последний раз менялась %s" + +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +msgid "" +"The IFID for this story is %s. What's an IFID?)" +msgstr "" +"Код IFID для этой истории: %s. Что такое код IFID? (англ.))" + +#: templates/storyeditview/storyformatmodal.html:7 +msgid "Story Format" +msgstr "Формат истории" + +#: templates/storyeditview/storyformatmodal.html:12 +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Формат истории контролирует внешний вид и поведение вашей истории в процессе " +"игры." + +#: templates/storyeditview/storyformatmodal.html:16 +#: templates/storylistview/modals/formatsmodal.html:58 +msgid "Loading..." +msgstr "Загрузка..." + +#: templates/storyeditview/stylesheeteditmodal.html:8 +msgid "Stylesheet" +msgstr "Таблица стилей" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "" +"Любой CSS, введённый тут, переопределит внешний вид по умолчанию для вашей " +"истории." + +#: templates/storyeditview/toolbar.html:5 +msgid "Go to the story list" +msgstr "Перейти к списку историй" + +#: templates/storyeditview/toolbar.html:19 +msgid "Edit Story JavaScript" +msgstr "Редактировать JavaScript" + +#: templates/storyeditview/toolbar.html:23 +msgid "Edit Story Stylesheet" +msgstr "Редактировать таблицу стилей" + +#: templates/storyeditview/toolbar.html:27 +msgid "Change Story Format" +msgstr "Сменить формат истории" + +#: templates/storyeditview/toolbar.html:35 +msgid "Snap to Grid" +msgstr "Привязать к сетке" + +#: templates/storyeditview/toolbar.html:45 +msgid "View Proofing Copy" +msgstr "Получить копию для вычитки" + +#: templates/storyeditview/toolbar.html:49 +#: templates/storylistview/storyitemview.html:32 +msgid "Publish to File" +msgstr "Опубликовать в файл" + +#: templates/storyeditview/toolbar.html:62 +msgid "Quick Find" +msgstr "Быстрый поиск" + +#: templates/storyeditview/toolbar.html:63 +msgid "Find and replace across the entire story" +msgstr "Поиск и замена во всей истории" + +#: templates/storyeditview/toolbar.html:67 +msgid "Show only story structure" +msgstr "Показать только структуру" + +#: templates/storyeditview/toolbar.html:71 +msgid "Show only passage titles" +msgstr "Показать только имена параграфов" + +#: templates/storyeditview/toolbar.html:75 +msgid "Show passage titles and excerpts" +msgstr "Показать имена параграфов и выдержку" + +#: templates/storyeditview/toolbar.html:81 +msgid "Play this story in test mode" +msgstr "Запустить историю в режиме тестирования" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +msgid "Test" +msgstr "Тестировать" + +#: templates/storyeditview/toolbar.html:88 +msgid "Play this story" +msgstr "Запустить историю" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +msgid "Play" +msgstr "Запустить" + +#: templates/storyeditview/toolbar.html:95 +msgid "Add a new passage" +msgstr "Добавить новый параграф" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 +#: js/views/storyeditview/modals/statsmodal.js:75 +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "Параграф" +msgstr[1] "Параграфа" +msgstr[2] "Параграфов" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +msgid "by %s" +msgstr "автор: %s" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +msgid "License: %s" +msgstr "Лицензия: %s" + +#: templates/storylistview/formatitem.html:5 +msgid "Are you sure?" +msgstr "Вы уверены?" + +#: templates/storylistview/formatitem.html:6 +msgid "Remove" +msgstr "Удалить" + +#: templates/storylistview/formatitem.html:12 +msgid "Remove this format" +msgstr "Удалить этот формат" + +#: templates/storylistview/formatitem.html:14 +msgid "Set this format as default for stories" +msgstr "Установить этот формат по умалчанию для новых историй" + +#: templates/storylistview/modals/aboutmodal.html:8 +msgid "About Twine" +msgstr "О Twine" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +msgid "Build" +msgstr "Сборка" + +#: templates/storylistview/modals/aboutmodal.html:21 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine это инструмент с открытым кодом, предназначенный для создания " +"интерактивных нелинейных историй." + +#: templates/storylistview/modals/aboutmodal.html:25 +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +"released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Twine 2.0 выпущен под лицензией GPL v3, но любая работа, созданная с его помощью, может " +"быть выпущена на любых условиях, включая коммерческое использование. Исходный код Twine" + +#: templates/storylistview/modals/aboutmodal.html:31 +msgid "Help Twine Grow With A Donation" +msgstr "Помочь развитию Twine пожертвованием" + +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +msgid "Code" +msgstr "Код" + +#: templates/storylistview/modals/aboutmodal.html:54 +msgid "Translations" +msgstr "Переводы" + +#: templates/storylistview/modals/aboutmodal.html:61 +msgid "Libraries" +msgstr "Библиотеки" + +#: templates/storylistview/modals/aboutmodal.html:80 +msgid "Fonts" +msgstr "Шрифты" + +#: templates/storylistview/modals/aboutmodal.html:84 +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for Adobe
Nunito was designed by
Vernon Adams" +msgstr "" +"Source Sans Pro и Source Code Pro были разработаны Полом Д. Хантом под " +"руководством Роберта Слимбаха для Adobe
Nunito был разработан
Верноном Адамсом" + +#: templates/storylistview/modals/aboutmodal.html:88 +msgid "Icons" +msgstr "Иконки" + +#: templates/storylistview/modals/aboutmodal.html:93 +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Документ разработан Робом Гиллом из Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:94 +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Вопрос разработан Генри Райдером из Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:95 +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Смайлики разработаны Джелио Димитров из Noun Project" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +msgid "" +"A new version of Twine, , has been released." +msgstr "Вышла новая версия Twine, " + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +msgid "Not Right Now" +msgstr "Не сейчас" + +#: templates/storylistview/modals/appupdatemodal.html:21 +msgid "Download" +msgstr "Скачать" + +#: templates/storylistview/modals/donatemodal.html:6 +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is as an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Если вы любите Twine так же, как я, пожалуйста подумайте о возможности " +"помочь его развитию с помощью пожертвования. Twine — проект с открытым " +"исходным кодом, который всегда будет бесплатным для использования. И с вашей " +"помощью Twine продолжит расти и процветать." + +#: templates/storylistview/modals/donatemodal.html:10 +msgid "Chris Klimas, Twine creator" +msgstr "Крис Климас, создатель Twine" + +#: templates/storylistview/modals/donatemodal.html:16 +msgid "Donate" +msgstr "Пожертвовать" + +#: templates/storylistview/modals/donatemodal.html:17 +msgid "No Thanks" +msgstr "Нет, спасибо" + +#: templates/storylistview/modals/donatemodal.html:21 +msgid "This message will only be shown to you once.
" +msgstr "Это сообщение будет показано только один раз.
" + +#: templates/storylistview/modals/formatsmodal.html:9 +msgid "Story Formats" +msgstr "Форматы историй" + +#: templates/storylistview/modals/formatsmodal.html:10 +msgid "Proofing Formats" +msgstr "Форматы для вычитки" + +#: templates/storylistview/modals/formatsmodal.html:11 +msgid "Add a New Format" +msgstr "Добавить новый формат" + +#: templates/storylistview/modals/formatsmodal.html:20 +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Формат истории управляет внешним видом и поведением истории во время игры." + +#: templates/storylistview/modals/formatsmodal.html:30 +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Формат для вычитки создаёт версию истории, скомпоноранную для редактирования " +"и вычитки." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +msgid "To add a story format, enter its address below." +msgstr "Чтобы добавить формат, введите его URL ниже." + +#: templates/storylistview/modals/formatsmodal.html:50 +#: templates/storylistview/storylistview.html:26 +msgid "Add" +msgstr "Добавить" + +#: templates/storylistview/storyitemview.html:24 +msgid "Play Story" +msgstr "Запустить историю" + +#: templates/storylistview/storyitemview.html:28 +msgid "Test Story" +msgstr "Тестировать историю" + +#: templates/storylistview/storyitemview.html:40 +msgid "Duplicate Story" +msgstr "Сделать дубликат истории" + +#: templates/storylistview/storyitemview.html:46 +msgid "Delete Story" +msgstr "Удалить историю" + +#: templates/storylistview/storylistview.html:5 +msgid "Twine" +msgstr "Twine" + +#: templates/storylistview/storylistview.html:9 +msgid "Create a brand-new story" +msgstr "Создать совершенно новую историю" + +#: templates/storylistview/storylistview.html:10 +msgid "Story" +msgstr "История" + +#: templates/storylistview/storylistview.html:17 +msgid "What should your story be named?
(You can change this later.)" +msgstr "Как будет называться ваша история?
(Вы сможете поменять имя позже.)" + +#: templates/storylistview/storylistview.html:34 +msgid "Import a published story or Twine archive" +msgstr "Импортировать опубликованную историю или архив Twine" + +#: templates/storylistview/storylistview.html:35 +msgid "Import From File" +msgstr "Импортировать из файла" + +#: templates/storylistview/storylistview.html:42 +msgid "Import this file:" +msgstr "Импортировать файл:" + +#: templates/storylistview/storylistview.html:59 +msgid "Importing..." +msgstr "Импорт..." + +#: templates/storylistview/storylistview.html:67 +msgid "Save all stories to a Twine archive file" +msgstr "Сохранить все истории в архивный файл Twine" + +#: templates/storylistview/storylistview.html:68 +msgid "Archive" +msgstr "Архив" + +#: templates/storylistview/storylistview.html:73 +msgid "Work with story and proofing formats" +msgstr "Работа с форматами историй и вычитки" + +#: templates/storylistview/storylistview.html:74 +msgid "Formats" +msgstr "Форматы" + +#: templates/storylistview/storylistview.html:79 +msgid "Change the language Twine uses" +msgstr "Сменить язык, используемый Twine" + +#: templates/storylistview/storylistview.html:80 +msgid "Language" +msgstr "Язык" + +#: templates/storylistview/storylistview.html:85 +msgid "Browse online help" +msgstr "Просмотреть онлайн-справку" + +#: templates/storylistview/storylistview.html:86 +msgid "Help" +msgstr "Помощь" + +#: templates/storylistview/storylistview.html:101 +msgid "version" +msgstr "версия" + +#: templates/storylistview/storylistview.html:103 +msgid "Report a bug" +msgstr "Сообщить об ошибке" + +#: templates/storylistview/storylistview.html:111 +msgid "Stories" +msgstr "Истории" + +#: templates/storylistview/storylistview.html:114 +msgid "Sort By" +msgstr "Сортировать по" + +#: templates/storylistview/storylistview.html:116 +msgid "Last changed date" +msgstr "Дата последнено изменения" + +#: templates/storylistview/storylistview.html:117 +msgid "Edit Date" +msgstr "Дата" + +#: templates/storylistview/storylistview.html:120 +msgid "Story name" +msgstr "Название истории" + +#: templates/storylistview/storylistview.html:121 +msgid "Name" +msgstr "Название" + +#: templates/storylistview/storylistview.html:128 +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Сейчас у вас нет сохранённых историй в Twine. Для начала, вы можете создать " +"новую историю или импортировать уже существующую из файла." + +#: templates/welcomeview.html:6 +msgid "Hi!" +msgstr "Привет!" + +#: templates/welcomeview.html:10 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twine — это инструмент с открытым исходным кодом, предназанченный для " +"создания и рассказывания интерактивных нелинейных историй. Есть несколько " +"вещей, которые вам необходимо знать, прежде чем вы начнёте его использовать." + +#: templates/welcomeview.html:14 +msgid "Tell Me More" +msgstr "Расскажите мне" + +#: templates/welcomeview.html:15 +msgid "Skip" +msgstr "Пропустить" + +#: templates/welcomeview.html:23 +msgid "New here?" +msgstr "Вы новичок?" + +#: templates/welcomeview.html:27 +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide " +"and the official wiki in general, are a great place to learn. Keep in mind " +"that some articles on the wiki at large were written for Twine 1, which is a " +"little bit different than this version. But most of the concepts are the " +"same." +msgstr "" +"Если вам ещё не приходилось пользоваться Twine, добро " +"пожаловать! Руководство Twine 2 и официальная вики в целом — замечательные " +"источники знаний. Имейте в виду, что некоторые статьи на вики в целом были " +"написаны для Twine 1, который слегка отличается от этой версии. Но " +"большинство концепций общие." + +#: templates/welcomeview.html:31 +msgid "" +"You can also get help over at the Twine forum, too." +msgstr "" +"Вы также можете попросить помощи на форуме Twine." + +#: templates/welcomeview.html:35 +msgid "" +"If you have used Twine 1 before, the guide also has details " +"on what has changed in this version. Chief among them is a new default story " +"format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, " +"try using SugarCube instead." +msgstr "" +"Если вы раньше использовали Twine 1, то в руководстве вы " +"найдёте детали того, что изменилось в этой версии. Главное изменение — " +"это новый формат истории, Harlowe. Но если вы предпочитаете синтаксис " +"скриптов, как в Twine 1, попробуйте SugarCube." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 +#: templates/welcomeviewnw.html:23 +msgid "OK" +msgstr "ОК" + +#: templates/welcomeview.html:47 +msgid "Your work is saved only in your browser." +msgstr "Ваша работа сохраняется только в вашем браузере." + +#: templates/welcomeview.html:51 +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Это означает, что вам не надо создавать аккаунт для использования Twine 2, а " +"всё, что вы создаёте, не сохраняется на каком-то сервере — оно " +"остаётся прямо в вашем браузере." + +#: templates/welcomeview.html:55 +msgid "" +"Two very important things to remember, though. Since your work is " +"saved only in your browser, if you clear its saved data, then you'll lose " +"your work! Not good. Remember to use that  Archive button often. You can also publish " +"individual stories to files using the menu on " +"each story in the story list. Both archive and story files can always be re-" +"imported into Twine." +msgstr "" +"Две очень важные вещи, которые нужно запомнить в связи с этим. " +"Поскольку ваша работа сохраняется в браузере, если вы очистите сохранённые в " +"нём данные, то вы потеряете всю свою работу! Не забывайте почаще " +"пользоваться кнопкой  Архив. Вы также можете опубликовать отдельные истории в файлы, используя " +"меню , которое есть на каждой истории в списке. И " +"архив, и файлы историй всегда можно заново импортировать в Twine." + +#: templates/welcomeview.html:59 +msgid "" +"Secondly, anyone who can use this browser can see and make changes to " +"your work. So if you've got a nosy kid brother, look into setting up a " +"separate profile for yourself." +msgstr "" +"Во-вторых, любой, кто пользуется этим браузером, сможет видеть и " +"редактировать вашу работу. Так что если у вас есть не в меру любопытный " +"младший брат, озаботьтесь созданием отдельного профиля в системе для себя." + +#: templates/welcomeview.html:71 +msgid "That's it!" +msgstr "Вот и всё!" + +#: templates/welcomeview.html:75 +msgid "Thanks for reading, and have fun with Twine." +msgstr "Спасибо за внимание, развлекайтесь с Twine." + +#: templates/welcomeview.html:79 +msgid "Go to the Story List" +msgstr "Перейти к списку историй" + +#: templates/welcomeviewnw.html:7 +msgid "Your work is automatically saved." +msgstr "Ваша работа автоматически сохранена." + +#: templates/welcomeviewnw.html:11 +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the Show " +"Library item in the Twine menu." +msgstr "" +"Теперь в вашей папке \"Документы\" есть папка Twine. Внутри неё папка " +"Stories, куда будут сохраняться все ваши работы. Twine сохраняет вашу " +"работу, так что вам нет необходимости заботиться об этом самому. Вы всегда " +"можете открыть папку с сохранёнными историями используя пункт Показать " +"библиотеку из меню Twine." + +#: templates/welcomeviewnw.html:15 +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Поскольку Twine всегда сохраняет вашу работу, файлы в вашей библиотеке будут " +"заблокированы от изменений, пока Twine открыт." + +#: templates/welcomeviewnw.html:19 +msgid "" +"If you'd like to open a Twine story file you received from someone else, you " +"can import it into your library using the " +"Import From File link in the story list." +msgstr "" +"Если вы захотите открыть файл с Twine-историей, который вы получили от кого-" +"то ещё, вы можете импортировать его в вашу библиотеку, используя ссылку Импортировать из файла в списке " +"историй." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:226 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” не может быть сохранён (%2$s)." + +#. L10n: %s is the error message. +#: js/app.js:283 +#, javascript-format +msgid "An error occurred while publishing your story. (%s)" +msgstr "Произошла ошибка при публикации вашей истории. (%s)" + +#: js/app.js:314 +msgid "Twine Archive.html" +msgstr "Twine Archive.html" + +#. L10n: An internal error. %s is a bad sort criterion. +#: js/collections/storycollection.js:35 +#, javascript-format +msgid "don't know how to sort stories by %s" +msgstr "не понимаю, как отсортировать истории по %s" + +#: js/models/passage.js:19 +msgid "Untitled Passage" +msgstr "Безымянный параграф" + +#: js/models/passage.js:21 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "" +"Коснитесь этого параграфа и нажмите иконку с карандашом, чтобы " +"отредактировать его." + +#: js/models/passage.js:22 +msgid "Double-click this passage to edit it." +msgstr "" +"Сделайте двойной щелчок мышью на этом параграфе, чтобы отредактировать его." + +#: js/models/passage.js:78 +msgid "You must give this passage a name." +msgstr "Вы должны как-нибудь назвать этот параграф." + +#: js/models/passage.js:85 +#, javascript-format +msgid "" +"There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "" +"Уже существует параграф с именем \"%s\". Пожалуйста, дайте этому уникальное " +"имя." + +#: js/models/story.js:16 +msgid "Untitled Story" +msgstr "История без названия" + +#: js/models/story.js:112 +msgid "There is no starting point set for this story." +msgstr "Для этой истории не установлена отправная точка." + +#: js/models/story.js:115 +msgid "The passage set as starting point for this story does not exist." +msgstr "" +"Параграф, который назначен отправной точкой этой истории, не существует." + +#: js/models/storyformat.js:38 +msgid "Untitled Story Format" +msgstr "Безымянный формат" + +#: js/nwui.js:81 +msgid "Toggle Fullscreen" +msgstr "Полный экран" + +#: js/nwui.js:100 +msgid "Quit" +msgstr "Выход" + +#: js/nwui.js:115 +msgid "Edit" +msgstr "Редактировать" + +#: js/nwui.js:120 +msgid "Undo" +msgstr "Откат" + +#: js/nwui.js:132 +msgid "Cut" +msgstr "Вырезать" + +#: js/nwui.js:142 +msgid "Copy" +msgstr "Копировать" + +#: js/nwui.js:152 +msgid "Paste" +msgstr "Вставить" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 +#: js/views/storyeditview/storyeditview.js:126 +msgid "Delete" +msgstr "Удалить" + +#: js/nwui.js:182 +msgid "Show Library" +msgstr "Показать библиотеку" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:239 +msgid "/Documents" +msgstr "/Documents" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:249 js/nwui.js:250 +msgid "/My\\ Documents" +msgstr "/My\\ Documents" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:260 js/nwui.js:264 +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:260 +msgid "/Stories" +msgstr "/Stories" + +#. L10n: %s is the error message. +#: js/nwui.js:430 +#, javascript-format +msgid "An error occurred while saving your story (%s)." +msgstr "Произошла ошибка при сохранении истории (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:457 +#, javascript-format +msgid "An error occurred while deleting your story (%s)." +msgstr "Произошла ошибка при удалении истории (%s)." + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:527 +#, javascript-format +msgid "An error occurred while locking your library (%s)." +msgstr "Произошла ошибка при блокировке вашей библиотеки (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#: js/nwui.js:556 +#, javascript-format +msgid "An error occurred while unlocking your library (%s)." +msgstr "Произошла ошибка при разблокировке вашей библиотеки (%s)." + +#. L10n: An internal error message related to UI components. +#: js/ui.js:166 +#, javascript-format +msgid "Don't know how to do bubble action %s" +msgstr "Я не знаю, как сделать пузырь из действия %s" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:219 +#, javascript-format +msgid "Don't know how to do collapse action %s" +msgstr "Я не знаю, как свернуть действие %s" + +#. L10n: An internal error when changing locale. +#: js/views/localeview.js:27 +#, javascript-format +msgid "Can't set locale to nonstring: %s" +msgstr "Не могу установить локаль не строкой: %s" + +#: js/views/storyeditview/editors/passageeditor.js:120 +#: js/views/storyeditview/storyeditview.js:563 +#, javascript-format +msgid "Editing “%s”" +msgstr "Редактирование “%s”" + +#: js/views/storyeditview/editors/passageeditor.js:211 +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "Изменения, которые вы сделали в этом параграфе, пока не сохранены." + +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d параграф найден" +msgstr[1] "%d параграфа найдено" +msgstr[2] "%d параграфов найдено" + +#: js/views/storyeditview/modals/searchmodal.js:102 +msgid "No matching passages found." +msgstr "Не найдено подходящих параграфов." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "%d замена сделана в" +msgstr[1] "%d замены сделано в" +msgstr[2] "%d замен сделано в" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d параграфе" +msgstr[1] "%d параграфах" +msgstr[2] "%d параграфах" + +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "символ" +msgstr[1] "символа" +msgstr[2] "символов" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +msgid "Word" +msgid_plural "Words" +msgstr[0] "слово" +msgstr[1] "слова" +msgstr[2] "слов" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +msgid "Link" +msgid_plural "Links" +msgstr[0] "ссылка" +msgstr[1] "ссылки" +msgstr[2] "ссылок" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "битая ссылка" +msgstr[1] "битые ссылки" +msgstr[2] "битых ссылок" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 +#: js/views/storylistview/modals/formatsmodal.js:74 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "Формат “%1$s” не может быть загружен (%2$s)." + +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +msgid "Are you sure you want to delete “%s”? " +msgstr "Вы действительно хотите удалить “%s”? " + +#: js/views/storyeditview/passageitemview.js:169 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "(Держите Shift при удалении, чтобы не получать это сообщение.)" + +#. L10n: An internal error related to handling user input. +#: js/views/storyeditview/passageitemview.js:461 +msgid "Don't see either mouse or touch coordinates on event" +msgstr "Не вижу координат (мыши или тачскрина) для события" + +#. L10n: An internal error related to user input. +#: js/views/storyeditview/passageitemview.js:523 +msgid "Couldn't find original touch ID in movement event" +msgstr "Не могу найти оригинальный touch ID в событии перемещения" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 +#: js/views/storyeditview/storyeditview.js:64 +#, javascript-format +msgid "A problem occurred while saving your changes (%s)." +msgstr "Возникла проблема при сохранении ваших изменений (%s)." + +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +msgid "Are you sure you want to delete this passage?" +msgid_plural "" +"Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "" +"Вы уверены, что хотите удалить этот %d параграф? Это невозможно отменить." +msgstr[1] "" +"Вы уверены, что хотите удалить эти %d параграфа? Это будет невозможно " +"отменить." +msgstr[2] "" +"Вы уверены, что хотите удалить эти %d параграфов? Это будет невозможно " +"отменить." + +#: js/views/storyeditview/storyeditview.js:268 +msgid "This story does not have a starting point. " +msgstr "У этой истории нет отправной точки." + +#: js/views/storyeditview/storyeditview.js:282 +msgid "" +"Refreshed the playable version of your story in the previously-opened tab or " +"window." +msgstr "" +"Ирабельная версия вашей истории, открытая ранее на закладке или в окне, была " +"обновлена." + +#: js/views/storyeditview/storyeditview.js:312 +#: js/views/storyeditview/storyeditview.js:352 +#: js/views/storylistview/storyitemview.js:110 +msgid "" +"This story does not have a starting point. Use the icon on a passage to set this." +msgstr "" +"У этой истории нет отправной точки. Используйте иконку у параграфа, чтобы назначить её." + +#: js/views/storyeditview/storyeditview.js:325 +msgid "" +"Refreshed the test version of your story in the previously-opened tab or " +"window." +msgstr "" +"Тестовая версия вашей истории, открытая ранее на закладке или в окне, была " +"обновлена." + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a localized date and time +#: js/views/storyeditview/storyeditview.js:573 +#: js/views/storyeditview/toolbar.js:94 +#, javascript-format +msgid "Last saved at %s" +msgstr "Последнее сохранение: %s" + +#: js/views/storylistview/modals/formatsmodal.js:137 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "Формат истории в %1$s не может быть добавлен (%2$s)." + +#. L10n: An internal error related to story formats. +#: js/views/storylistview/modals/formatsmodal.js:246 +msgid "Don't know what kind of format to set as default" +msgstr "Не знаю, какой формат установить по умолчанию." + +#: js/views/storylistview/storagequota.js:21 +#: js/views/storylistview/storagequota.js:44 +#: js/views/storylistview/storagequota.js:49 +#, javascript-format +msgid "%d%% space available" +msgstr "доступно %d%% места" + +#: js/views/storylistview/storyitemview.js:80 +#: js/views/storylistview/storyitemview.js:94 +msgid "" +"This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "" +"У этой истории нет отправной точки. Отредактируйте историю, используйте " +"иконку у параграфа, чтобы назначить отправную " +"точку." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Вы действительно хотите удалить “%s”? Это невозможно будет " +"отменить." + +#: js/views/storylistview/storyitemview.js:125 +msgid "Delete Forever" +msgstr "Удалить навсегда" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +msgid "What should “%s” be renamed to?" +msgstr "Во что переименовать “%s”?" + +#: js/views/storylistview/storyitemview.js:138 +msgid "Rename" +msgstr "Переименовать" + +#: js/views/storylistview/storyitemview.js:155 +msgid "What should the duplicate be named?" +msgstr "Как назвать дубликат?" + +#: js/views/storylistview/storyitemview.js:156 +msgid "Duplicate" +msgstr "Дублировать" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +msgid "%s Copy" +msgstr "Копия %s" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "%d история была импортирована." +msgstr[1] "%d истории была импортирована." +msgstr[2] "%d историй была импортирована." + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d история" +msgstr[1] "%d истории" +msgstr[2] "%d историй" diff --git a/src/locale/po/sv.po b/src/locale/po/sv.po new file mode 100644 index 000000000..c759c7e40 --- /dev/null +++ b/src/locale/po/sv.po @@ -0,0 +1,1163 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-03-09 11:06+0100\n" +"PO-Revision-Date: 2016-03-09 22:36+0100\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.7\n" +"Last-Translator: \n" +"Language: sv_SE\n" + +#: templates/localeview.html:4 +msgid "Please choose which language you would like to use with Twine." +msgstr "Var vänlig och välj vilket språk du vill använda Twine i." + +#: templates/localeview.html:12 +msgid "English" +msgstr "Engelska" + +#: templates/localeview.html:19 +msgid "Spanish" +msgstr "Spanska" + +#: templates/storyeditview/passageeditmodal.html:8 +msgid "Passage Name" +msgstr "Namn på passage" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +msgid "Tag" +msgstr "Ettikett" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +msgid "Tag name" +msgstr "Ettikettsnamn" + +#: templates/storyeditview/passageeditmodal.html:36 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Beskriv din passage här. För att länka till en annan passage, skriv två " +"hakparenteser runt dess namn, [[så här]]." + +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +msgid "Delete “%s”" +msgstr "Ta bort “%s”" + +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +msgid "Edit “%s”" +msgstr "Ändra “%s”" + +#: templates/storyeditview/passageitemview.html:24 +msgid "Test story starting here" +msgstr "Testa historien med början här" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +msgid "Set “%s” as starting point" +msgstr "Sätt “%s” som startpunkt" + +#: templates/storyeditview/renamestorymodal.html:8 +#: templates/storyeditview/toolbar.html:31 +#: templates/storylistview/storyitemview.html:36 +msgid "Rename Story" +msgstr "Ändra namn på historien" + +#: templates/storyeditview/renamestorymodal.html:14 +msgid "What should this story's name be?" +msgstr "Vad ska historien heta?" + +#: templates/storyeditview/renamestorymodal.html:24 +msgid "Please enter a name." +msgstr "Var snäll och skriv ett namn." + +#: templates/storyeditview/renamestorymodal.html:28 +#: templates/storylistview/formatitem.html:7 +#: templates/storylistview/storylistview.html:25 +#: templates/storylistview/storylistview.html:50 +msgid "Cancel" +msgstr "Avbryt" + +#: templates/storyeditview/renamestorymodal.html:29 +msgid "Save" +msgstr "Spara" + +#: templates/storyeditview/scripteditmodal.html:8 +msgid "JavaScript" +msgstr "JavaScript" + +#: templates/storyeditview/scripteditmodal.html:14 +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"JavaScripts som skrivs in här kommer att köras omedelbart när din historia " +"öppnas i en webläsare." + +#: templates/storyeditview/searchmodal.html:7 +msgid "Find and Replace" +msgstr "Sök och ersätt" + +#: templates/storyeditview/searchmodal.html:12 +msgid "Search For" +msgstr "Sök efter" + +#: templates/storyeditview/searchmodal.html:18 +msgid "Include passage names" +msgstr "Inkludera passsagenamn" + +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +msgid "Match case" +msgstr "Matcha stora och små bokstäver" + +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +msgid "Regular expression" +msgstr "Regular expression" + +#: templates/storyeditview/searchmodal.html:34 +msgid "Replace With" +msgstr "Ersätt med" + +#: templates/storyeditview/searchmodal.html:40 +msgid "Expand all search results" +msgstr "Expandera alla sökresultat" + +#: templates/storyeditview/searchmodal.html:44 +msgid "Collapse all search results" +msgstr "Fäll ihop alla sökresultat" + +#: templates/storyeditview/searchmodal.html:49 +msgid "Replace All" +msgstr "Ersätt alla" + +#: templates/storyeditview/searchmodal.html:57 +msgid "Searching..." +msgstr "Söker..." + +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d matchar" +msgstr[1] "%d matchar" + +#: templates/storyeditview/searchmodalresult.html:22 +msgid "Replace in this passage" +msgstr "Ersätt i denna passage" + +#: templates/storyeditview/searchmodalresult.html:23 +msgid "Replace in Passage" +msgstr "Ersätt i passage" + +#: templates/storyeditview/statsmodal.html:8 +#: templates/storyeditview/toolbar.html:39 +msgid "Story Statistics" +msgstr "Statestik för historien" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +msgid "This story was last changed at %s" +msgstr "Denna historia ändrades senast %s" + +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +msgid "" +"The IFID for this story is %s. What's an IFID?)" +msgstr "" +"IFID för denna historia är %s. Vad är IFID?)" + +#: templates/storyeditview/storyformatmodal.html:7 +msgid "Story Format" +msgstr "Historieformat" + +#: templates/storyeditview/storyformatmodal.html:12 +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Historieformatet kontrollerar utseendet och uppförandet hos din historia " +"under spelet." + +#: templates/storyeditview/storyformatmodal.html:16 +#: templates/storylistview/modals/formatsmodal.html:58 +msgid "Loading..." +msgstr "Laddar..." + +#: templates/storyeditview/stylesheeteditmodal.html:8 +msgid "Stylesheet" +msgstr "Stylesheet" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "" +"Om CSS-kod skrivs in här kommer den att gå före det övergipande utseendet " +"för din historia." + +#: templates/storyeditview/toolbar.html:5 +msgid "Go to the story list" +msgstr "Gå till historielistan" + +#: templates/storyeditview/toolbar.html:19 +msgid "Edit Story JavaScript" +msgstr "Ändra historiens JavaScript" + +#: templates/storyeditview/toolbar.html:23 +msgid "Edit Story Stylesheet" +msgstr "Ändra historiens Stylesheet" + +#: templates/storyeditview/toolbar.html:27 +msgid "Change Story Format" +msgstr "Byt historieformat" + +#: templates/storyeditview/toolbar.html:35 +msgid "Snap to Grid" +msgstr "Fäst vid rutnät" + +#: templates/storyeditview/toolbar.html:45 +msgid "View Proofing Copy" +msgstr "Granska korrekturläsningskopia" + +#: templates/storyeditview/toolbar.html:49 +#: templates/storylistview/storyitemview.html:32 +msgid "Publish to File" +msgstr "Publicera till fil" + +#: templates/storyeditview/toolbar.html:62 +msgid "Quick Find" +msgstr "Snabbsök" + +#: templates/storyeditview/toolbar.html:63 +msgid "Find and replace across the entire story" +msgstr "Sök och ersätt genom hela historien" + +#: templates/storyeditview/toolbar.html:67 +msgid "Show only story structure" +msgstr "Visa enbart historiens struktur" + +#: templates/storyeditview/toolbar.html:71 +msgid "Show only passage titles" +msgstr "Visa enbart namn på passagerna" + +#: templates/storyeditview/toolbar.html:75 +msgid "Show passage titles and excerpts" +msgstr "Visa namn och utdrag från passagerna" + +#: templates/storyeditview/toolbar.html:81 +msgid "Play this story in test mode" +msgstr "Spela den här historien i testläge" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +msgid "Test" +msgstr "Testa" + +#: templates/storyeditview/toolbar.html:88 +msgid "Play this story" +msgstr "Spela den här historien" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +msgid "Play" +msgstr "Spela" + +#: templates/storyeditview/toolbar.html:95 +msgid "Add a new passage" +msgstr "Lägg till en ny passage" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 +#: js/views/storyeditview/modals/statsmodal.js:75 +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "Passage" +msgstr[1] "Passager" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +msgid "by %s" +msgstr "av %s" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +msgid "License: %s" +msgstr "Licens: %s" + +#: templates/storylistview/formatitem.html:5 +msgid "Are you sure?" +msgstr "Är du säker?" + +#: templates/storylistview/formatitem.html:6 +msgid "Remove" +msgstr "Ta bort" + +#: templates/storylistview/formatitem.html:12 +msgid "Remove this format" +msgstr "Ta bort detta format" + +#: templates/storylistview/formatitem.html:14 +msgid "Set this format as default for stories" +msgstr "Sätt detta format som grundinställning för historier" + +#: templates/storylistview/modals/aboutmodal.html:8 +msgid "About Twine" +msgstr "Om Twine" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +msgid "Build" +msgstr "Bygg" + +#: templates/storylistview/modals/aboutmodal.html:21 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine är ett verktyg i öppen källkod för att berätta interaktiva, " +"ickelinjära historier." + +#: templates/storylistview/modals/aboutmodal.html:25 +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +"released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Twine 2.0 är publicerat under GPL v3 licensen, men alla verk skapat med det kan " +"publiceras under vilka villkor som helst, även kommersiella. Source Code Repository" + +#: templates/storylistview/modals/aboutmodal.html:31 +msgid "Help Twine Grow With A Donation" +msgstr "Hjälp Twine att växa med en donation" + +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +msgid "Code" +msgstr "Kod" + +#: templates/storylistview/modals/aboutmodal.html:55 +msgid "Libraries" +msgstr "Bibliotek" + +#: templates/storylistview/modals/aboutmodal.html:74 +msgid "Fonts" +msgstr "Fonter" + +#: templates/storylistview/modals/aboutmodal.html:78 +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for Adobe
Nunito was designed by
Vernon Adams" +msgstr "" +"Source Sans Pro och Source Code Pro designades av Paul D. Hunt under " +"överseende av Robert Slimbach för Adobe
Nunito designades av
Vernon Adams" + +#: templates/storylistview/modals/aboutmodal.html:82 +msgid "Icons" +msgstr "Ikoner" + +#: templates/storylistview/modals/aboutmodal.html:87 +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Dokument designat av Rob Gill från the Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:88 +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Fråga designad av Henry Ryder från the Noun Project" + +#: templates/storylistview/modals/aboutmodal.html:89 +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Leende designad av jelio dimitrov från the Noun Project" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +msgid "" +"A new version of Twine, , has been released." +msgstr "En ny version av Twine, , har släppts." + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +msgid "Not Right Now" +msgstr "Inte just nu" + +#: templates/storylistview/modals/appupdatemodal.html:21 +msgid "Download" +msgstr "Ladda ner" + +#: templates/storylistview/modals/donatemodal.html:6 +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is as an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Om du älskar Twine så mycket som jag gör, vänligen överväg att hjälpa den " +"växa med en donation. Twine är ett projekt med öppen källkod och kommer " +"alltid att vara gratis att använda — och med din hjälp kommer Twine " +"att fortsätta utvecklas." + +#: templates/storylistview/modals/donatemodal.html:10 +msgid "Chris Klimas, Twine creator" +msgstr "Chris Klimas, skaparen av Twine" + +#: templates/storylistview/modals/donatemodal.html:16 +msgid "Donate" +msgstr "Donera" + +#: templates/storylistview/modals/donatemodal.html:17 +msgid "No Thanks" +msgstr "Nej tack" + +#: templates/storylistview/modals/donatemodal.html:21 +msgid "This message will only be shown to you once.
" +msgstr "Detta meddelande kommer bara att visas för dig en gång.
" + +#: templates/storylistview/modals/formatsmodal.html:9 +msgid "Story Formats" +msgstr "Historieformat" + +#: templates/storylistview/modals/formatsmodal.html:10 +msgid "Proofing Formats" +msgstr "Korrekturläsningsformat" + +#: templates/storylistview/modals/formatsmodal.html:11 +msgid "Add a New Format" +msgstr "Lägg till ett nytt format" + +#: templates/storylistview/modals/formatsmodal.html:20 +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Historieformat kontrollerar utseendet och uppförandet hos historierna under " +"spelet." + +#: templates/storylistview/modals/formatsmodal.html:30 +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Korrekturläsningsformat skapar en version av historierna formad för att " +"editera och korrekturläsa." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +msgid "To add a story format, enter its address below." +msgstr "För att lägga till ett historieformat, skriv in dess adress nedan." + +#: templates/storylistview/modals/formatsmodal.html:50 +#: templates/storylistview/storylistview.html:26 +msgid "Add" +msgstr "Lägg till" + +#: templates/storylistview/storyitemview.html:24 +msgid "Play Story" +msgstr "Spela historia" + +#: templates/storylistview/storyitemview.html:28 +msgid "Test Story" +msgstr "Testa historia" + +#: templates/storylistview/storyitemview.html:40 +msgid "Duplicate Story" +msgstr "Duplicera historia" + +#: templates/storylistview/storyitemview.html:46 +msgid "Delete Story" +msgstr "Ta bort historia" + +#: templates/storylistview/storylistview.html:5 +msgid "Twine" +msgstr "Twine" + +#: templates/storylistview/storylistview.html:9 +msgid "Create a brand-new story" +msgstr "Skapa en helt ny historia" + +#: templates/storylistview/storylistview.html:10 +msgid "Story" +msgstr "Historia" + +#: templates/storylistview/storylistview.html:17 +msgid "What should your story be named?
(You can change this later.)" +msgstr "Vad ska din historia heta?
(Du kan ändra detta senare.)" + +#: templates/storylistview/storylistview.html:34 +msgid "Import a published story or Twine archive" +msgstr "Importera en publicerad historia eller Twine-arkiv." + +#: templates/storylistview/storylistview.html:35 +msgid "Import From File" +msgstr "Importera från fil" + +#: templates/storylistview/storylistview.html:42 +msgid "Import this file:" +msgstr "Importera denna filen:" + +#: templates/storylistview/storylistview.html:59 +msgid "Importing..." +msgstr "Importerar..." + +#: templates/storylistview/storylistview.html:67 +msgid "Save all stories to a Twine archive file" +msgstr "Spara alla historier till en Twine-arkiv-fil" + +#: templates/storylistview/storylistview.html:68 +msgid "Archive" +msgstr "Arkiv" + +#: templates/storylistview/storylistview.html:73 +msgid "Work with story and proofing formats" +msgstr "Arbeta med historie- och korrekturläsningsformat" + +#: templates/storylistview/storylistview.html:74 +msgid "Formats" +msgstr "Format" + +#: templates/storylistview/storylistview.html:79 +msgid "Change the language Twine uses" +msgstr "Byt det språk Twine använder" + +#: templates/storylistview/storylistview.html:80 +msgid "Language" +msgstr "Språk" + +#: templates/storylistview/storylistview.html:85 +msgid "Browse online help" +msgstr "Leta i onlinehjälp" + +#: templates/storylistview/storylistview.html:86 +msgid "Help" +msgstr "Hjälp" + +#: templates/storylistview/storylistview.html:101 +msgid "version" +msgstr "version" + +#: templates/storylistview/storylistview.html:103 +msgid "Report a bug" +msgstr "Rapportera ett fel" + +#: templates/storylistview/storylistview.html:111 +msgid "Stories" +msgstr "Historier" + +#: templates/storylistview/storylistview.html:114 +msgid "Sort By" +msgstr "Sortera efter" + +#: templates/storylistview/storylistview.html:116 +msgid "Last changed date" +msgstr "Senast ändrad datum" + +#: templates/storylistview/storylistview.html:117 +msgid "Edit Date" +msgstr "Ändra datum" + +#: templates/storylistview/storylistview.html:120 +msgid "Story name" +msgstr "Namn på historien" + +#: templates/storylistview/storylistview.html:121 +msgid "Name" +msgstr "Namn" + +#: templates/storylistview/storylistview.html:128 +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Det finns inga historier sparade i Twine just nu. För att komma igång kan du " +"antingen skapa en ny historia eller importera en existerande från en fil." + +#: templates/welcomeview.html:6 +msgid "Hi!" +msgstr "Hej!" + +#: templates/welcomeview.html:10 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twine är ett verktyg i öppen källkod för att berätta interaktiva, " +"ickelinjära historier. Det är några saker du behöver veta innan du sätter " +"igång." + +#: templates/welcomeview.html:14 +msgid "Tell Me More" +msgstr "Berätta mer" + +#: templates/welcomeview.html:15 +msgid "Skip" +msgstr "Hoppa över" + +#: templates/welcomeview.html:23 +msgid "New here?" +msgstr "Ny här?" + +#: templates/welcomeview.html:27 +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide " +"and the official wiki in general, are a great place to learn. Keep in mind " +"that some articles on the wiki at large were written for Twine 1, which is a " +"little bit different than this version. But most of the concepts are the " +"same." +msgstr "" +"Om du aldrig använt Twine tidigare, välkommen! Twine 2 Guide och " +"den officiella wikin generellt, är bra platser att lära sig på. Kom ihåg att " +"en del av artiklarna på wikin som helhet är skrivna för Twine 1, som är lite " +"annorlunda än denna versionen. Men det mesta av konceptet är samma." + +#: templates/welcomeview.html:31 +msgid "" +"You can also get help over at the Twine forum, too." +msgstr "" +"Du kan också få hjälp på Twine forum" + +#: templates/welcomeview.html:35 +msgid "" +"If you have used Twine 1 before, the guide also has details " +"on what has changed in this version. Chief among them is a new default story " +"format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, " +"try using SugarCube instead." +msgstr "" +"Om du tidigare har använt Twine 1, så har guiden en " +"beskrivning på vad som har ändrats till denna versionen. Den största " +"förändringen är ett nytt förvalt historieformat, Harlowe. Men om du föredrar " +"kodformatet i Twine 1, pröva att byt till SugarCube istället." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 +#: templates/welcomeviewnw.html:23 +msgid "OK" +msgstr "OK" + +#: templates/welcomeview.html:47 +msgid "Your work is saved only in your browser." +msgstr "Ditt arbete sparas enbart i din webläsare." + +#: templates/welcomeview.html:51 +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Det betyder att du inte behöver skapa ett konto för att använda Twine 2 och " +"allt du skapar är inte lagrat på en servern någonstans — det stannar i " +"din egna webläsare." + +#: templates/welcomeview.html:55 +msgid "" +"Two very important things to remember, though. Since your work is " +"saved only in your browser, if you clear its saved data, then you'll lose " +"your work! Not good. Remember to use that  Archive button often. You can also publish " +"individual stories to files using the menu on " +"each story in the story list. Both archive and story files can always be re-" +"imported into Twine." +msgstr "" +"Två väldigt viktiga saker att komma ihåg, dock. Eftersom ditt arbete " +"enbart är sparat i din webläsare förlorar du det om du rensar dess sparade " +"data! Inte bra. Kom ihåg att använda den där  Arkiv-knappen ofta. Du kan också publicera enskilda " +"historier till filer genom att använda menyn på " +"varje historia i historielistan. Både akrive och historiefiler kan alltid " +"återimporteras till Twine." + +#: templates/welcomeview.html:59 +msgid "" +"Secondly, anyone who can use this browser can see and make changes to " +"your work. So if you've got a nosy kid brother, look into setting up a " +"separate profile for yourself." +msgstr "" +"För det andra, vem som helst som använder denna webläsare kan se och göra " +"ändringar i ditt arbete. Så, om du har en snokande lillebror, se till " +"att lägg upp en egen profil till dig." + +#: templates/welcomeview.html:71 +msgid "That's it!" +msgstr "Det var det!" + +#: templates/welcomeview.html:75 +msgid "Thanks for reading, and have fun with Twine." +msgstr "Tack för att du läste och ha så kul med Twine." + +#: templates/welcomeview.html:79 +msgid "Go to the Story List" +msgstr "Gå till historielistan" + +#: templates/welcomeviewnw.html:7 +msgid "Your work is automatically saved." +msgstr "Ditt arbete sparas automatiskt." + +#: templates/welcomeviewnw.html:11 +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the Show " +"Library item in the Twine menu." +msgstr "" +"Det finns nu en mapp som heter Twine i din Dokument-mapp. I den finns en " +"Historier-mapp där allt ditt arbete sparas. Twine sparar medan du arbetar, " +"så du behöver inte beskymra dig över att spara själv. Du kan alltid öppna " +"mappen där dina historier är sparade genom att klicka på Visa bibliotek i Twine-menyn." + +#: templates/welcomeviewnw.html:15 +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Eftersom Twine alltid sparar ditt arbete, så kommer filerna i ditt " +"historiebibliotek att vara låsta medan Twine är startat." + +#: templates/welcomeviewnw.html:19 +msgid "" +"If you'd like to open a Twine story file you received from someone else, you " +"can import it into your library using the " +"Import From File link in the story list." +msgstr "" +"Om du skulle vilja öppna en Twine-historia som du fått på fil från någon " +"annan, så kan du importera den till ditt bibliotek genom att använda Importera från fil-länken i " +"historielistan." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:226 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” kunde inte sparas (%2$s)." + +#. L10n: %s is the error message. +#: js/app.js:283 +#, javascript-format +msgid "An error occurred while publishing your story. (%s)" +msgstr "Ett fel uppstod vid publiceringen av din historia. (%s)" + +#: js/app.js:314 +msgid "Twine Archive.html" +msgstr "Twine Archive.html" + +#. L10n: An internal error. %s is a bad sort criterion. +#: js/collections/storycollection.js:35 +#, javascript-format +msgid "don't know how to sort stories by %s" +msgstr "vet inte hur historierna ska sorteras med %s" + +#: js/models/passage.js:19 +msgid "Untitled Passage" +msgstr "Passage utan namn" + +#: js/models/passage.js:21 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Klicka på den här passagen och sen på penna-ikonen för att ändra den." + +#: js/models/passage.js:22 +msgid "Double-click this passage to edit it." +msgstr "Dubbelklicka på den här passagen för att ändra den." + +#: js/models/passage.js:78 +msgid "You must give this passage a name." +msgstr "Du måste ge den här passagen ett namn." + +#: js/models/passage.js:85 +#, javascript-format +msgid "" +"There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "" +"Det finns redan en passage med namnet \"%s\". Var snäll och den den ett " +"unikt namn." + +#: js/models/story.js:16 +msgid "Untitled Story" +msgstr "Historia utan namn" + +#: js/models/story.js:112 +msgid "There is no starting point set for this story." +msgstr "Det finns ingen startpunkt satt för den här historien." + +#: js/models/story.js:115 +msgid "The passage set as starting point for this story does not exist." +msgstr "" +"Passagen som angetts som startpunkt för den här historien existerar inte." + +#: js/models/storyformat.js:38 +msgid "Untitled Story Format" +msgstr "Historieformat utan namn" + +#: js/nwui.js:81 +msgid "Toggle Fullscreen" +msgstr "Växla till fullskärm" + +#: js/nwui.js:100 +msgid "Quit" +msgstr "Avsluta" + +#: js/nwui.js:115 +msgid "Edit" +msgstr "Ändra" + +#: js/nwui.js:120 +msgid "Undo" +msgstr "Ångra" + +#: js/nwui.js:132 +msgid "Cut" +msgstr "Klipp ut" + +#: js/nwui.js:142 +msgid "Copy" +msgstr "Kopiera" + +#: js/nwui.js:152 +msgid "Paste" +msgstr "Klistra in" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 +#: js/views/storyeditview/storyeditview.js:126 +msgid "Delete" +msgstr "Ta bort" + +#: js/nwui.js:182 +msgid "Show Library" +msgstr "Visa bibliotek" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:239 +msgid "/Documents" +msgstr "/Dokument" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:249 js/nwui.js:250 +msgid "/My\\ Documents" +msgstr "/Mina\\ Dokument" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:260 js/nwui.js:264 +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:260 +msgid "/Stories" +msgstr "/Historier" + +#. L10n: %s is the error message. +#: js/nwui.js:430 +#, javascript-format +msgid "An error occurred while saving your story (%s)." +msgstr "Ett fel uppstod när din historia sparades (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:457 +#, javascript-format +msgid "An error occurred while deleting your story (%s)." +msgstr "Ett fell uppstod när din historia togs bort (%s)." + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:527 +#, javascript-format +msgid "An error occurred while locking your library (%s)." +msgstr "Ett fell uppstod när ditt bibliotek skulle låsas (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#: js/nwui.js:556 +#, javascript-format +msgid "An error occurred while unlocking your library (%s)." +msgstr "Ett fell uppstod när ditt bibliotek skulle låsas upp (%s)." + +#. L10n: An internal error message related to UI components. +#: js/ui.js:166 +#, javascript-format +msgid "Don't know how to do bubble action %s" +msgstr "Vet inte hur man gör en bubbelhandling %s" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:219 +#, javascript-format +msgid "Don't know how to do collapse action %s" +msgstr "Vet inte hur man gör en hopfällningshandling %s" + +#. L10n: An internal error when changing locale. +#: js/views/localeview.js:27 +#, javascript-format +msgid "Can't set locale to nonstring: %s" +msgstr "Kan inte lokalisera en ickesträng: %s" + +#: js/views/storyeditview/editors/passageeditor.js:120 +#: js/views/storyeditview/storyeditview.js:563 +#, javascript-format +msgid "Editing “%s”" +msgstr "Ändra \"%s\"" + +#: js/views/storyeditview/editors/passageeditor.js:211 +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "" +"Eventuella ändringar till den passage du nu editerar har inte sparats än." + +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d passagen matchar." +msgstr[1] "%d passagerna matchar." + +#: js/views/storyeditview/modals/searchmodal.js:102 +msgid "No matching passages found." +msgstr "Inga matchande passager hittade." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "%d byte skedde i" +msgstr[1] "%d byten skedde i" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d passage" +msgstr[1] "%d passager" + +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Tecken" +msgstr[1] "Tecken" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Ord" +msgstr[1] "Ord" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Länk" +msgstr[1] "Länkar" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Bruten länk" +msgstr[1] "Brutna länkar" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 +#: js/views/storylistview/modals/formatsmodal.js:74 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "Historieformatet “%1$s” kunde inte laddas (%2$s)." + +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +msgid "Are you sure you want to delete “%s”? " +msgstr "Är du säker på att du vill ta bort “%s”? " + +#: js/views/storyeditview/passageitemview.js:169 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "" +"(Håll nere Shift-tangenten när du tar bort för att hoppa över det här " +"meddelandet.)" + +#. L10n: An internal error related to handling user input. +#: js/views/storyeditview/passageitemview.js:461 +msgid "Don't see either mouse or touch coordinates on event" +msgstr "Ser varken mus- eller fingerkoordinater på händelse" + +#. L10n: An internal error related to user input. +#: js/views/storyeditview/passageitemview.js:523 +msgid "Couldn't find original touch ID in movement event" +msgstr "Kan inte hitta original-vidröring-ID i rörelsehändelse" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 +#: js/views/storyeditview/storyeditview.js:64 +#, javascript-format +msgid "A problem occurred while saving your changes (%s)." +msgstr "Ett problem uppstod när dina ändringar skulle sparas (%s)." + +# I get this flagged but I cannot see what is wrong with it. +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +msgid "Are you sure you want to delete this passage?" +msgid_plural "" +"Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "Är du säker på att du vill ta bort den här passagen?" +msgstr[1] "" +"Är du säker på att du vill ta bort dessa %d passager? Detta kan inte ångras." + +#: js/views/storyeditview/storyeditview.js:268 +msgid "This story does not have a starting point. " +msgstr "Den här historien saknar startpunkt." + +#: js/views/storyeditview/storyeditview.js:282 +msgid "" +"Refreshed the playable version of your story in the previously-opened tab or " +"window." +msgstr "" +"Uppdatera den spelbara versionen av din historia på den flik eller det " +"fönster du hade den öppen senast." + +#: js/views/storyeditview/storyeditview.js:312 +#: js/views/storyeditview/storyeditview.js:352 +#: js/views/storylistview/storyitemview.js:110 +msgid "" +"This story does not have a starting point. Use the icon on a passage to set this." +msgstr "" +"Den här historien saknar startpunkt. Använd -" +"ikonen på en passage för att sätta den." + +#: js/views/storyeditview/storyeditview.js:325 +msgid "" +"Refreshed the test version of your story in the previously-opened tab or " +"window." +msgstr "" +"Uppdatera den testversionen av din historia på den flik eller det fönster du " +"hade den öppen senast." + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a localized date and time +#: js/views/storyeditview/storyeditview.js:573 +#: js/views/storyeditview/toolbar.js:94 +#, javascript-format +msgid "Last saved at %s" +msgstr "Sparades senast %s" + +#: js/views/storylistview/modals/formatsmodal.js:137 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "Historieformatet på %1$s kunde inte läggas till (%2$s)." + +#. L10n: An internal error related to story formats. +#: js/views/storylistview/modals/formatsmodal.js:246 +msgid "Don't know what kind of format to set as default" +msgstr "Vet inte vilket historieformat som ska vara grundinställning" + +#: js/views/storylistview/storagequota.js:21 +#: js/views/storylistview/storagequota.js:44 +#: js/views/storylistview/storagequota.js:49 +#, javascript-format +msgid "%d%% space available" +msgstr "%d%% utrymme tillgängligt" + +#: js/views/storylistview/storyitemview.js:80 +#: js/views/storylistview/storyitemview.js:94 +msgid "" +"This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "" +"Denna historia saknar startpunkt. Ändra historien och använd -ikonen på en passage för att sätta den." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Är du säker på att du vill ta bort “%s”? Detta kan inte ångras." + +#: js/views/storylistview/storyitemview.js:125 +msgid "Delete Forever" +msgstr "Ta bort för alltid" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +msgid "What should “%s” be renamed to?" +msgstr "Vad kommer “%s” att få för nytt namn?" + +#: js/views/storylistview/storyitemview.js:138 +msgid "Rename" +msgstr "Ge nytt namn" + +#: js/views/storylistview/storyitemview.js:155 +msgid "What should the duplicate be named?" +msgstr "Vad ska kopian ha för namn?" + +#: js/views/storylistview/storyitemview.js:156 +msgid "Duplicate" +msgstr "Duplicera" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +msgid "%s Copy" +msgstr "%s Kopiera" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "%d historien importerades." +msgstr[1] "%d historierna importerades." + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d Historia" +msgstr[1] "%d Historier" diff --git a/src/locale/po/template.pot b/src/locale/po/template.pot new file mode 100644 index 000000000..d6a579326 --- /dev/null +++ b/src/locale/po/template.pot @@ -0,0 +1,653 @@ +msgid "" +msgstr "" + +#: src/dialogs/about/index.html +msgid "About Twine" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" + +#: src/dialogs/about/index.html +msgid "This application is released under the \\x3ca href=\"http:\\/\\/www.gnu.org/licenses/gpl-3.0.html\">GPL v3\\x3c/a> license, but any work created with it may be released under any terms, including commercial ones." +msgstr "" + +#: src/dialogs/about/index.html +msgid "Help Twine Grow With A Donation" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Source Code Repository" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Translations" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Libraries" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Fonts" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the guidance of Robert Slimbach for \\x3ca href=\"http:\\/\\/adobe.com/\">Adobe\\x3c/a>\\x3cbr> Nunito was designed by \\x3ca href=\"http:\\/\\/code.newtypography.co.uk/\">Vernon Adams\\x3c/a>" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Icons" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "" + +#: src/dialogs/about/index.html +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "" + +#: src/dialogs/app-donation/index.html +msgid "If you love Twine as much as I do, please consider helping it grow with a donation. Twine is an open source project that will always be free to use — and with your help, Twine will continue to thrive." +msgstr "" + +#: src/dialogs/app-donation/index.html +msgid "Chris Klimas, Twine creator" +msgstr "" + +#: src/dialogs/app-donation/index.html +msgid "No Thanks" +msgstr "" + +#: src/dialogs/app-donation/index.html +msgid "Donate" +msgstr "" + +#: src/dialogs/app-donation/index.html +msgid "This message will only be shown to you once.<br>If you'd like to donate to Twine development in the future, you can do so at <a href=\\\"http:\\/\\/twinery.org/donate\\\" target=\\\"_blank\\\">http://twinery.org/donate</a>." +msgstr "" + +#: src/dialogs/formats/index.html +msgid "Story formats control the appearance and behavior of stories during play." +msgstr "" + +#: src/dialogs/formats/index.html +msgid "Use as Default" +msgstr "" + +#: src/dialogs/formats/index.html +msgid "Proofing formats create a versions of stories tailored for editing and proofreading." +msgstr "" + +#: src/dialogs/formats/index.html +msgid "Use" +msgstr "" + +#: src/dialogs/formats/index.html +#: src/story-list-view/list-toolbar/index.js:24 +msgid "Add" +msgstr "" + +#: src/dialogs/formats/index.html +#: src/dialogs/story-format/index.html +msgid "Loading..." +msgstr "" + +#: src/dialogs/story-format/index.html +msgid "Story Format" +msgstr "" + +#: src/dialogs/story-format/index.html +msgid "A story format controls the appearance and behavior of your story during play." +msgstr "" + +#: src/dialogs/story-import/index.html +#: src/story-list-view/list-toolbar/index.html +msgid "Import From File" +msgstr "" + +#: src/dialogs/story-import/index.html +msgid "Import this file:" +msgstr "" + +#: src/dialogs/story-import/index.html +#: src/dialogs/confirm/index.js:31 +#: src/dialogs/prompt/index.js:15 +msgid "Cancel" +msgstr "" + +#: src/dialogs/story-import/index.html +msgid "Working..." +msgstr "" + +#: src/dialogs/story-import/index.html +msgid "Some stories you are importing already exist in your library. Please choose which to replace. Any other stories in your file will be imported as well." +msgstr "" + +#: src/dialogs/story-import/index.html +msgid "Don't Import Any Stories" +msgstr "" + +#: src/dialogs/story-search/index.html +msgid "Find and Replace" +msgstr "" + +#: src/dialogs/story-search/index.html +msgid "Search For" +msgstr "" + +#: src/dialogs/story-search/index.html +msgid "Include passage names" +msgstr "" + +#: src/dialogs/story-search/index.html +msgid "Match case" +msgstr "" + +#: src/dialogs/story-search/index.html +msgid "Regular expression" +msgstr "" + +#: src/dialogs/story-search/index.html +msgid "Replace With" +msgstr "" + +#: src/dialogs/story-search/index.html +msgid "Replace All" +msgstr "" + +#: src/dialogs/story-search/index.html +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "" +msgstr[1] "" + +#: src/dialogs/story-search/index.html +msgid "Searching..." +msgstr "" + +#: src/dialogs/story-search/result.html +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "" +msgstr[1] "" + +#: src/dialogs/story-search/result.html +msgid "Replace in Passage" +msgstr "" + +#: src/dialogs/story-stats/index.html +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Story Statistics" +msgstr "" + +#: src/editors/javascript/index.html +msgid "JavaScript" +msgstr "" + +#: src/editors/javascript/index.html +msgid "Any JavaScript entered here will immediately run when your story is opened in a Web browser." +msgstr "" + +#: src/editors/passage/index.html +msgid "A passage already exists with this name." +msgstr "" + +#: src/editors/passage/tag-editor.html +msgid "Tag" +msgstr "" + +#: src/editors/stylesheet/index.html +msgid "Stylesheet" +msgstr "" + +#: src/editors/stylesheet/index.html +msgid "Any CSS entered here will override the default appearance of your story." +msgstr "" + +#: src/locale/view/index.html +msgid "Please choose which language you would like to use with Twine." +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "Hi!" +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "Twine is an open-source tool for telling interactive, nonlinear stories. There are a few things you should know before you get started." +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "Tell Me More" +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "Skip" +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "New here?" +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "<strong>If you've never used Twine before,</strong> then welcome! The <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\\">Twine 2 Guide</a> and the official wiki in general, are a great place to learn. Keep in mind that some articles on the wiki at large were written for Twine 1, which is a little bit different than this version. But most of the concepts are the same." +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "<strong>If you have used Twine 1 before,</strong> the guide also has details on what has changed in this version. Chief among them is a new default story format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, try using SugarCube instead." +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +#: src/welcome/index.html +msgid "OK" +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "Your work is automatically saved." +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "There's now a folder named Twine in your Documents folder. Inside that is a Stories folder, where all your work will be saved. Twine saves as you work, so you don't have to worry about remembering to save it yourself. You can always open the folder your stories are saved to by using the <b>Show Library</b> item in the <b>Twine</b> menu." +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +msgid "Because Twine is always saving your work, the files in your story library will be locked from editing while Twine is open." +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "That's it!" +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "Thanks for reading, and have fun with Twine." +msgstr "" + +#: src/nw/patches/welcome-view/replacement-template.html +#: src/welcome/index.html +msgid "Go to the Story List" +msgstr "" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Test" +msgstr "" + +#: src/story-edit-view/story-toolbar/index.html +msgid "Play" +msgstr "" + +#. L10n: Word in the sense of individual words in a sentence. This does not actually include the count, as it is used in a table. +#: src/story-edit-view/story-toolbar/index.html +#: src/dialogs/story-stats/index.js:86 +msgid "Passage" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story JavaScript" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Edit Story Stylesheet" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Change Story Format" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Rename Story" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "Snap to Grid" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +msgid "View Proofing Copy" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.html +#: src/story-list-view/story-item/item-menu/index.html +msgid "Publish to File" +msgstr "" + +#: src/story-list-view/index.html +msgid "Drop a story file to import" +msgstr "" + +#: src/story-list-view/index.html +msgid "Sort By" +msgstr "" + +#: src/story-list-view/index.html +msgid "Edit Date" +msgstr "" + +#: src/story-list-view/index.html +msgid "Name" +msgstr "" + +#: src/story-list-view/index.html +msgid "There are no stories saved in Twine right now. To get started, you can either create a new story or import an existing one from a file." +msgstr "" + +#: src/story-list-view/list-toolbar/index.html +#: src/nw/directories.js:69 +#: src/nw/menus.js:17 +#: src/nw/menus.js:39 +msgid "Twine" +msgstr "" + +#: src/story-list-view/list-toolbar/index.html +msgid "Story" +msgstr "" + +#: src/story-list-view/list-toolbar/index.html +msgid "Archive" +msgstr "" + +#: src/story-list-view/list-toolbar/index.html +msgid "Formats" +msgstr "" + +#: src/story-list-view/list-toolbar/index.html +msgid "Language" +msgstr "" + +#: src/story-list-view/list-toolbar/index.html +msgid "Help" +msgstr "" + +#: src/story-list-view/list-toolbar/index.html +msgid "version" +msgstr "" + +#: src/story-list-view/list-toolbar/index.html +msgid "Report a bug" +msgstr "" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Play Story" +msgstr "" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Test Story" +msgstr "" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Duplicate Story" +msgstr "" + +#: src/story-list-view/story-item/item-menu/index.html +msgid "Delete Story" +msgstr "" + +#: src/welcome/index.html +msgid "<strong>If you've never used Twine before,</strong> then welcome! The <a href=\\\"http://twinery.org/2guide\\\" target=\\\"_blank\\\">Twine 2 Guide</a> and the official wiki in general, are a great place to learn. Keep in mind that some articles on the wiki at larger were written for Twine 1, which is a little bit different than this version. But most of the concepts are the same." +msgstr "" + +#: src/welcome/index.html +msgid "Your work is saved only in your browser." +msgstr "" + +#: src/welcome/index.html +msgid "That means you don't need to create an account to use Twine 2, and everything you create isn't stored on a server somewhere else — it stays right in your browser." +msgstr "" + +#: src/welcome/index.html +msgid "Two <b>very important</b> things to remember, though. Since your work is saved only in your browser, if you clear its saved data, then you'll lose your work! Not good. Remember to use that <i class=\\\"fa fa-briefcase\\\"></i> <strong>Archive</strong> button often. You can also publish individual stories to files using the <i class=\\\"fa fa-cog\\\"></i> menu on each story in the story list. Both archive and story files can always be re-imported into Twine." +msgstr "" + +#: src/welcome/index.html +msgid "Secondly, <b>anyone who can use this browser can see and make changes to your work</b>. So if you've got a nosy kid brother, look into setting up a separate profile for yourself." +msgstr "" + +#: src/data/actions.js:272 +msgid "a more recent version of the story format “%s” is already installed" +msgstr "" + +#: src/data/publish.js:75 +msgid "There is no starting point set for this story." +msgstr "" + +#: src/data/publish.js:81 +msgid "The passage set as starting point for this story does not exist." +msgstr "" + +#: src/data/story-format.js:7 +msgid "Untitled Story Format" +msgstr "" + +#: src/data/story.js:190 +msgid "Untitled Story" +msgstr "" + +#: src/data/story.js:207 +#: src/story-edit-view/index.js:218 +msgid "Untitled Passage" +msgstr "" + +#: src/data/story.js:210 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "" + +#: src/data/story.js:211 +msgid "Double-click this passage to edit it." +msgstr "" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: src/dialogs/app-update/index.js:40 +msgid "A new version of Twine, , has been released." +msgstr "" + +#: src/dialogs/app-update/index.js:44 +msgid "Download" +msgstr "" + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: src/dialogs/app-update/index.js:51 +msgid "Not Right Now" +msgstr "" + +#. L10n: %1$s is the name of the story format; %2$s is +#: src/dialogs/formats/index.js:63 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "" + +#: src/dialogs/formats/index.js:105 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "" + +#. L10n: %s is the name of an author. +#: src/dialogs/formats/item.js:30 +msgid "by %s" +msgstr "" + +#: src/dialogs/formats/item.js:51 +msgid "Are you sure?" +msgstr "" + +#: src/dialogs/formats/item.js:53 +msgid "Remove" +msgstr "" + +#: src/dialogs/story-import/index.js:56 +msgid "Don\\'t Replace Any Stories" +msgstr "" + +#: src/dialogs/story-import/index.js:59 +msgid "Replace %d Story" +msgid_plural "Replace %d Stories" +msgstr[0] "" +msgstr[1] "" + +#. L10n: Character in the sense of individual letters in a word. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js:40 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "" +msgstr[1] "" + +#. L10n: Word in the sense of individual words in a sentence. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js:55 +msgid "Word" +msgid_plural "Words" +msgstr[0] "" +msgstr[1] "" + +#. L10n: Links in the sense of hypertext links. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js:104 +msgid "Link" +msgid_plural "Links" +msgstr[0] "" +msgstr[1] "" + +#. L10n: Links in the sense of hypertext links. This does not actually include the count, as it is used in a table. +#: src/dialogs/story-stats/index.js:119 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "" +msgstr[1] "" + +#: src/editors/passage/index.js:38 +msgid "Enter the body text of your passage here. To link to another passage, put two square brackets around its name, [[like this]]." +msgstr "" + +#: src/editors/passage/index.js:182 +msgid "Editing \\u201c%s\\u201d" +msgstr "" + +#. L10n: %1$s is a filename; %2$s is the error message. +#: src/file/save.js:71 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of Windows that a user's documents are stored in, relative to the user's home directory. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. +#: src/nw/directories.js:37 +msgid "Documents" +msgstr "" + +#. L10n: This is the folder name on Windows XP that a user's documents are stored in, relative to the user's home directory. This is used if a folder with the name given by the translation key '/Documents' does not exist. If you need to use a space in this name, then it should have two backslashes (\\) in front of it. +#: src/nw/directories.js:51 +msgid "My\\\\ Documents" +msgstr "" + +#: src/nw/directories.js:70 +msgid "Stories" +msgstr "" + +#: src/nw/menus.js:27 +msgid "Toggle Fullscreen" +msgstr "" + +#: src/nw/menus.js:44 +msgid "Quit" +msgstr "" + +#: src/nw/menus.js:61 +msgid "Edit" +msgstr "" + +#: src/nw/menus.js:66 +msgid "Undo" +msgstr "" + +#: src/nw/menus.js:79 +msgid "Cut" +msgstr "" + +#: src/nw/menus.js:88 +msgid "Copy" +msgstr "" + +#: src/nw/menus.js:97 +msgid "Paste" +msgstr "" + +#: src/nw/menus.js:106 +#: src/story-edit-view/passage-item/index.js:334 +msgid "Delete" +msgstr "" + +#: src/nw/menus.js:118 +msgid "Show Library" +msgstr "" + +#: src/story-edit-view/passage-item/index.js:319 +#: src/story-list-view/story-item/item-menu/index.js:78 +msgid "Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" + +#: src/story-edit-view/passage-item/index.js:326 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:46 +#: src/story-list-view/story-item/item-menu/index.js:100 +msgid "What should “%s” be renamed to?" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:51 +#: src/story-list-view/story-item/item-menu/index.js:105 +msgid "Rename" +msgstr "" + +#: src/story-edit-view/story-toolbar/story-menu/index.js:55 +#: src/story-list-view/story-item/item-menu/index.js:109 +#: src/story-list-view/story-item/item-menu/index.js:128 +msgid "Please enter a name." +msgstr "" + +#: src/story-list-view/index.js:79 +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "" +msgstr[1] "" + +#: src/story-list-view/list-toolbar/index.js:21 +msgid "What should your story be named?
(You can change this later.)" +msgstr "" + +#: src/story-list-view/list-toolbar/index.js:30 +msgid "A story with this name already exists." +msgstr "" + +#: src/story-list-view/list-toolbar/index.js:62 +msgid "Twine Archive.html" +msgstr "" + +#: src/story-list-view/story-item/item-menu/index.js:84 +msgid "Delete Forever" +msgstr "" + +#: src/story-list-view/story-item/item-menu/index.js:122 +msgid "What should the duplicate be named?" +msgstr "" + +#: src/story-list-view/story-item/item-menu/index.js:124 +msgid "Duplicate" +msgstr "" + +#: src/story-list-view/story-item/item-menu/index.js:126 +msgid "%s Copy" +msgstr "" + +#: src/ui/quota-gauge/index.js:24 +msgid "%d%% space available" +msgstr "" diff --git a/src/locale/po/tr.po b/src/locale/po/tr.po new file mode 100755 index 000000000..ff2f8575e --- /dev/null +++ b/src/locale/po/tr.po @@ -0,0 +1,1164 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-30 00:06-0400\n" +"PO-Revision-Date: 2017-08-01 13:11+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.3\n" +"Last-Translator: H. Utku Maden \n" +"Language: tr_TR\n" +"X-Poedit-Bookmarks: -1,131,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: templates/localeview.html:4 +msgid "Please choose which language you would like to use with Twine." +msgstr "Lütfen, Twine için kullanmak istediğiniz dili seçin." + +#: templates/localeview.html:12 +msgid "English" +msgstr "İngilizce" + +#: templates/localeview.html:19 +msgid "Spanish" +msgstr "İspanyolca" + +#: templates/storyeditview/passageeditmodal.html:8 +msgid "Passage Name" +msgstr "Bölüm Adı" + +#. L10n: this is the noun form, as in tags you would apply to content. +#: templates/storyeditview/passageeditmodal.html:22 +msgid "Tag" +msgstr "Etiket" + +#. L10n: A noun, i.e. what a tag is named. +#: templates/storyeditview/passageeditmodal.html:28 +msgid "Tag name" +msgstr "Etiket adı" + +#: templates/storyeditview/passageeditmodal.html:36 +msgid "" +"Enter the body text of your passage here. To link to another passage, put " +"two square brackets around its name, [[like this]]." +msgstr "" +"Bölümün metnini buraya girin. Başka bir bölüme bağlantı yapmak için [[bunun " +"gibi]] iki köşeli parantez kullanın." + +# Turkish follows the "Subject Object Verb" word order and can be altered on long sentences, for poetic reasons. The colon (:) effectively puts the verb to the end of the sentence, thus making it far more suited for a tooltip. +#. L10n: %s is the name of the thing to be deleted. +#: templates/storyeditview/passageitemview.html:16 +#, php-format +msgid "Delete “%s”" +msgstr "Sil: “%s”" + +# Turkish follows the "Subject Object Verb" word order and can be altered on long sentences, for poetic reasons. The colon (:) effectively puts the verb to the end of the sentence, thus making it far more suited for a tooltip. +#. L10n: %s is the name of the thing to be edited. +#: templates/storyeditview/passageitemview.html:21 +#, php-format +msgid "Edit “%s”" +msgstr "Düzenle: “%s”" + +#: templates/storyeditview/passageitemview.html:24 +msgid "Test story starting here" +msgstr "Öyküyü denemeye buradan başla" + +#. L10n: %s is a name of a passage +#: templates/storyeditview/passageitemview.html:28 +#, php-format +msgid "Set “%s” as starting point" +msgstr "“%s” bölümünü öykü başlangıcı olarak ayarla" + +#: templates/storyeditview/renamestorymodal.html:8 +#: templates/storyeditview/toolbar.html:31 +#: templates/storylistview/storyitemview.html:36 +msgid "Rename Story" +msgstr "Öyküyü yeniden adlandır" + +#: templates/storyeditview/renamestorymodal.html:14 +msgid "What should this story's name be?" +msgstr "Öykünün adını ne koymak istersiniz?" + +#: templates/storyeditview/renamestorymodal.html:24 +msgid "Please enter a name." +msgstr "Lütfen bir isim girin." + +#: templates/storyeditview/renamestorymodal.html:28 +#: templates/storylistview/formatitem.html:7 +#: templates/storylistview/storylistview.html:25 +#: templates/storylistview/storylistview.html:50 +msgid "Cancel" +msgstr "İptal" + +#: templates/storyeditview/renamestorymodal.html:29 +msgid "Save" +msgstr "Kaydet" + +#: templates/storyeditview/scripteditmodal.html:8 +msgid "JavaScript" +msgstr "JavaScript" + +# The word "istisnasız" (trans: without exception, exceptionless ~adjective/adverb) was used instead of any as the word "herhangi" cannot be used for this purpose. +#: templates/storyeditview/scripteditmodal.html:14 +msgid "" +"Any JavaScript entered here will immediately run when your story is opened " +"in a Web browser." +msgstr "" +"Buraya girdiğiniz JavaScript kodu; öykü bir İnternet tarayıcısında " +"açıldığında istisnasız çalıştırılacaktır." + +#: templates/storyeditview/searchmodal.html:7 +msgid "Find and Replace" +msgstr "Bul ve Değiştir" + +#: templates/storyeditview/searchmodal.html:12 +msgid "Search For" +msgstr "Şunu Ara" + +#: templates/storyeditview/searchmodal.html:18 +msgid "Include passage names" +msgstr "Aramaya bölüm adlarını da kat" + +# I hope these fit in the dialog. Turkish prefers verbs sentences over noun sentences. +#. L10n: As in uppercase or lowercase letters. +#: templates/storyeditview/searchmodal.html:23 +msgid "Match case" +msgstr "Büyük Küçük harf eşleştir" + +# *I hope these fit in the dialog. Turkish prefers verbs sentences over noun sentences. +# *As a programmer myself I know what it is however, I have never heard anyone use regular expressions in day to day life, thus do not know how to translate it. With the help of Wikipedia, I narrowed it down to "Düzenli İfade". But doubting anyone knew that, I included regular expressions in the button. +#. L10n: A technical term, see https://en.wikipedia.org/wiki/Regular_expression. +#: templates/storyeditview/searchmodal.html:29 +msgid "Regular expression" +msgstr "\"Düzenli İfade\" Kullan (Regular Expressions)" + +#: templates/storyeditview/searchmodal.html:34 +msgid "Replace With" +msgstr "Şununla Değiştir" + +#: templates/storyeditview/searchmodal.html:40 +msgid "Expand all search results" +msgstr "Tüm sonuçları genişlet" + +#: templates/storyeditview/searchmodal.html:44 +msgid "Collapse all search results" +msgstr "Tüm sonuçları daralt" + +#: templates/storyeditview/searchmodal.html:49 +msgid "Replace All" +msgstr "Hepsini Değiştir" + +#: templates/storyeditview/searchmodal.html:57 +msgid "Searching..." +msgstr "Aranıyor..." + +# Turkish does not do double plurals. When there is a number, the plural suffix -ler/-lar is not necceseray. +#. L10n: %d is a number of text matches after a search. +#: templates/storyeditview/searchmodalresult.html:13 +#, php-format +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d eşleşme" +msgstr[1] "%d eşleşme" + +#: templates/storyeditview/searchmodalresult.html:22 +msgid "Replace in this passage" +msgstr "Bu bölümde değiştir" + +#: templates/storyeditview/searchmodalresult.html:23 +msgid "Replace in Passage" +msgstr "Bölümde Değiştir" + +#: templates/storyeditview/statsmodal.html:8 +#: templates/storyeditview/toolbar.html:39 +msgid "Story Statistics" +msgstr "Öykü İstatistikleri" + +#: templates/storyeditview/statsmodal.html:38 +#, php-format +msgid "This story was last changed at %s" +msgstr "Öykü en son şu tarih ve saatte değiştirildi: %s" + +# : used to prevent usage of number dependant suffixes. +#. L10n: %s is the IFID of the story. Please keep the element around it. +#: templates/storyeditview/statsmodal.html:45 +#, php-format +msgid "" +"The IFID for this story is %s. What's an IFID?)" +msgstr "" +"Bu öykünün IFID'si: %s. IFID nedir?)" + +#: templates/storyeditview/storyformatmodal.html:7 +msgid "Story Format" +msgstr "Öykü Biçimi" + +#: templates/storyeditview/storyformatmodal.html:12 +msgid "" +"A story format controls the appearance and behavior of your story during " +"play." +msgstr "" +"Öykü biçimleri; öykünün okunurken nasıl göründüğünü ve davrandığını belirler." + +#: templates/storyeditview/storyformatmodal.html:16 +#: templates/storylistview/modals/formatsmodal.html:58 +msgid "Loading..." +msgstr "Yükleniyor..." + +#: templates/storyeditview/stylesheeteditmodal.html:8 +msgid "Stylesheet" +msgstr "Stil Şablonu" + +#: templates/storyeditview/stylesheeteditmodal.html:14 +msgid "" +"Any CSS entered here will override the default appearance of your story." +msgstr "Buraya girdiğiniz CSS kodu öykünün varsayılan görünümünü değiştirir." + +#: templates/storyeditview/toolbar.html:5 +msgid "Go to the story list" +msgstr "Öykü listesine git" + +#: templates/storyeditview/toolbar.html:19 +msgid "Edit Story JavaScript" +msgstr "Öykünün JavaScript kodunu düzenle" + +#: templates/storyeditview/toolbar.html:23 +msgid "Edit Story Stylesheet" +msgstr "Öykünün Stil Şablonunu Düzenle" + +#: templates/storyeditview/toolbar.html:27 +msgid "Change Story Format" +msgstr "Öykü Biçimini Değiştir" + +#: templates/storyeditview/toolbar.html:35 +msgid "Snap to Grid" +msgstr "Kılavuz Izgaraya Uy" + +#: templates/storyeditview/toolbar.html:45 +msgid "View Proofing Copy" +msgstr "Yazım Denetleme Nüshasına Bak" + +#: templates/storyeditview/toolbar.html:49 +#: templates/storylistview/storyitemview.html:32 +msgid "Publish to File" +msgstr "Dosyaya Yayımla" + +#: templates/storyeditview/toolbar.html:62 +msgid "Quick Find" +msgstr "Hızlı Arama" + +#: templates/storyeditview/toolbar.html:63 +msgid "Find and replace across the entire story" +msgstr "Bütün öyküde bir tümce bulup onu başka bir tümceyle değiştir" + +#: templates/storyeditview/toolbar.html:67 +msgid "Show only story structure" +msgstr "Sadece öykü yapısını göster" + +#: templates/storyeditview/toolbar.html:71 +msgid "Show only passage titles" +msgstr "Sadece bölüm başlıklarını göster" + +#: templates/storyeditview/toolbar.html:75 +msgid "Show passage titles and excerpts" +msgstr "Bölüm başlığını ve metnini göster" + +#: templates/storyeditview/toolbar.html:81 +msgid "Play this story in test mode" +msgstr "Öyküyü deneme biçiminde oku" + +#. L10n: The verb form, to try something or to check it for problems. +#: templates/storyeditview/toolbar.html:84 +msgid "Test" +msgstr "Dene" + +#: templates/storyeditview/toolbar.html:88 +msgid "Play this story" +msgstr "Bu öyküyü oku" + +#. L10n: The verb form, as in playing a game. +#: templates/storyeditview/toolbar.html:91 +msgid "Play" +msgstr "Oku" + +#: templates/storyeditview/toolbar.html:95 +msgid "Add a new passage" +msgstr "Yeni bölüm ekle" + +#. L10n: This does not actually show the count here, as it is used in a table. +#: templates/storyeditview/toolbar.html:96 +#: js/views/storyeditview/modals/statsmodal.js:75 +msgid "Passage" +msgid_plural "Passages" +msgstr[0] "Bölüm" +msgstr[1] "Bölümler" + +#. L10n: %s is the name of an author. +#: templates/storyformatdetail.html:26 +#, php-format +msgid "by %s" +msgstr "%s tarafından yazıldı" + +#. L10n: %s is the name of a software license. +#: templates/storyformatdetail.html:39 +#, php-format +msgid "License: %s" +msgstr "Yazılım Lisansı: %s" + +#: templates/storylistview/formatitem.html:5 +msgid "Are you sure?" +msgstr "Emin misiniz?" + +#: templates/storylistview/formatitem.html:6 +msgid "Remove" +msgstr "Kaldır" + +#: templates/storylistview/formatitem.html:12 +msgid "Remove this format" +msgstr "Bu biçimi kaldır" + +#: templates/storylistview/formatitem.html:14 +msgid "Set this format as default for stories" +msgstr "Öyküler için bu biçimi varsayılan yap" + +#: templates/storylistview/modals/aboutmodal.html:8 +msgid "About Twine" +msgstr "Twine Hakkında" + +#. L10n: This is the noun form, to describe a version of the software. e.g. 'I am using Twine build 123' +#: templates/storylistview/modals/aboutmodal.html:14 +msgid "Build" +msgstr "Yapım" + +#: templates/storylistview/modals/aboutmodal.html:21 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories." +msgstr "" +"Twine, kullanıcı etkileşimli ve örgülü hikayeler anlatmaya yarayan açık " +"kaynaklı bir araçtır." + +#: templates/storylistview/modals/aboutmodal.html:25 +msgid "" +"Twine 2.0 is released under the GPL v3 license, but any work created with it may be " +"released under any terms, including commercial ones. Source Code Repository" +msgstr "" +"Twine 2 GPL v3 " +"lisansı ile piyasaya sürülmüştür, fakat bu araçla yaratılan her eser (ticari " +"eserler dahil) istenilen her koşulla yayımlanabilir. Kaynak Kod Deposu" + +#: templates/storylistview/modals/aboutmodal.html:31 +msgid "Help Twine Grow With A Donation" +msgstr "Twine'ın Büyümesine Bağış Yaparak Katkıda Bulunun" + +# As this is only used for the about screen, I added "authors" to make it less vague for Turkish users. +#. L10n: This is the noun form, as program code. +#: templates/storylistview/modals/aboutmodal.html:39 +msgid "Code" +msgstr "Kod Yazarları" + +# Again as this is used for the about screen, I made it less vague for Turkish users. +#: templates/storylistview/modals/aboutmodal.html:55 +msgid "Libraries" +msgstr "Kullanılan Kütüphaneler" + +# This time it's the actual term. +#: templates/storylistview/modals/aboutmodal.html:74 +msgid "Fonts" +msgstr "Yazı Tipleri" + +#: templates/storylistview/modals/aboutmodal.html:78 +msgid "" +"Source Sans Pro and Source Code Pro were designed by Paul D. Hunt under the " +"guidance of Robert Slimbach for Adobe
Nunito was designed by
Vernon Adams" +msgstr "" +"Source Sans Pro ve Source Code Pro; Paul D. Hunt tarafından, Robert Slimbach " +"rehberliğinde Adobe için " +"tasarlanmıştır
Nunito Vernon Adams tarafından tasarlanmıştır" + +#: templates/storylistview/modals/aboutmodal.html:82 +msgid "Icons" +msgstr "İkonlar" + +#: templates/storylistview/modals/aboutmodal.html:87 +msgid "Document designed by Rob Gill from the Noun Project" +msgstr "Noun Projesinden Rob Gill tarafından tasarlanan Document" + +#: templates/storylistview/modals/aboutmodal.html:88 +msgid "Question designed by Henry Ryder from the Noun Project" +msgstr "Noun Projesinden Henry Ryder tarafından tasarlanan Question" + +#: templates/storylistview/modals/aboutmodal.html:89 +msgid "Smile designed by jelio dimitrov from the Noun Project" +msgstr "Noun Projesinden Jelio Dimitrov tarafından tasarlanan Smile" + +#. L10n: The will have a version number, i.e. 2.0.6, interpolated into it. +#: templates/storylistview/modals/appupdatemodal.html:10 +msgid "" +"A new version of Twine, , has been released." +msgstr "Yeni bir Twine sürümü, , mevcut." + +#. L10n: A polite rejection of a request, in the sense that the answer may change in the future. +#: templates/storylistview/modals/appupdatemodal.html:18 +msgid "Not Right Now" +msgstr "Şu An Değil" + +#: templates/storylistview/modals/appupdatemodal.html:21 +msgid "Download" +msgstr "İndir" + +#: templates/storylistview/modals/donatemodal.html:6 +msgid "" +"If you love Twine as much as I do, please consider helping it grow with a " +"donation. Twine is as an open source project that will always be free to use " +"— and with your help, Twine will continue to thrive." +msgstr "" +"Twine'ı benim sevdiğim kadar sevdiyseniz, lütfen bağışta bulunarak " +"büyümesine yardımcı olun. Twine açık kaynaklı bir projedir ve kullanması her " +"zaman bedava olacaktır. Ve yardımınızla Twine yaşamaya devam edecektir." + +#: templates/storylistview/modals/donatemodal.html:10 +msgid "Chris Klimas, Twine creator" +msgstr "Twine'ın yaratıcısı, Chris Klimas" + +#: templates/storylistview/modals/donatemodal.html:16 +msgid "Donate" +msgstr "Bağış Yap" + +#: templates/storylistview/modals/donatemodal.html:17 +msgid "No Thanks" +msgstr "Hayır, Teşekkürler" + +#: templates/storylistview/modals/donatemodal.html:21 +msgid "This message will only be shown to you once.
" +msgstr "Bu mesaj, size sadece bir kez gösterilecektir.
" + +#: templates/storylistview/modals/formatsmodal.html:9 +msgid "Story Formats" +msgstr "Öykü Biçimleri" + +#: templates/storylistview/modals/formatsmodal.html:10 +msgid "Proofing Formats" +msgstr "Yazım Denetleme Biçimleri" + +#: templates/storylistview/modals/formatsmodal.html:11 +msgid "Add a New Format" +msgstr "Yeni Biçim Ekle" + +#: templates/storylistview/modals/formatsmodal.html:20 +msgid "" +"Story formats control the appearance and behavior of stories during play." +msgstr "" +"Öykü biçimleri hikayenin okuma sırasında nasıl göründüğünü ve davrandığını " +"belirler." + +#: templates/storylistview/modals/formatsmodal.html:30 +msgid "" +"Proofing formats create a versions of stories tailored for editing and " +"proofreading." +msgstr "" +"Yazım denetleme biçimleri öykünün düzenlenmesi ve gözden geçirilmesi için " +"bir sürüm oluşturur." + +#. L10n: Address in the sense of a URL. +#: templates/storylistview/modals/formatsmodal.html:42 +msgid "To add a story format, enter its address below." +msgstr "Öykü biçimi eklemek için biçimin internet adresini aşağı girin." + +#: templates/storylistview/modals/formatsmodal.html:50 +#: templates/storylistview/storylistview.html:26 +msgid "Add" +msgstr "Ekle" + +#: templates/storylistview/storyitemview.html:24 +msgid "Play Story" +msgstr "Öyküyü Oku" + +#: templates/storylistview/storyitemview.html:28 +msgid "Test Story" +msgstr "Öyküyü Dene" + +#: templates/storylistview/storyitemview.html:40 +msgid "Duplicate Story" +msgstr "Öykünün Kopyasını Yap" + +#: templates/storylistview/storyitemview.html:46 +msgid "Delete Story" +msgstr "Öyküyü Sil" + +#: templates/storylistview/storylistview.html:5 +msgid "Twine" +msgstr "Twine" + +#: templates/storylistview/storylistview.html:9 +msgid "Create a brand-new story" +msgstr "Yeni bir öykü yarat" + +#: templates/storylistview/storylistview.html:10 +msgid "Story" +msgstr "Öykü" + +#: templates/storylistview/storylistview.html:17 +msgid "What should your story be named?
(You can change this later.)" +msgstr "Öykünün adını ne koymak istersiniz?
(Sonra değiştirebilirsiniz.)" + +#: templates/storylistview/storylistview.html:34 +msgid "Import a published story or Twine archive" +msgstr "Yayımlanmış bir öyküyü veya Twine arşivini içe aktar" + +#: templates/storylistview/storylistview.html:35 +msgid "Import From File" +msgstr "Dosyadan İçe Aktar" + +#: templates/storylistview/storylistview.html:42 +msgid "Import this file:" +msgstr "Bu dosyadan içe aktar:" + +#: templates/storylistview/storylistview.html:59 +msgid "Importing..." +msgstr "İçe Aktarılıyor..." + +#: templates/storylistview/storylistview.html:67 +msgid "Save all stories to a Twine archive file" +msgstr "Bütün öyküleri bir Twine arşiv dosyasına kaydet" + +#: templates/storylistview/storylistview.html:68 +msgid "Archive" +msgstr "Arşiv" + +#: templates/storylistview/storylistview.html:73 +msgid "Work with story and proofing formats" +msgstr "Hikaye ve yazım denetim biçimlerini düzenle" + +#: templates/storylistview/storylistview.html:74 +msgid "Formats" +msgstr "Biçimler" + +#: templates/storylistview/storylistview.html:79 +msgid "Change the language Twine uses" +msgstr "Twine'ın kullandığı dili değiştirin" + +#: templates/storylistview/storylistview.html:80 +msgid "Language" +msgstr "Dil" + +#: templates/storylistview/storylistview.html:85 +msgid "Browse online help" +msgstr "Çevrimiçi yardıma göz atın" + +#: templates/storylistview/storylistview.html:86 +msgid "Help" +msgstr "Yardım" + +#: templates/storylistview/storylistview.html:101 +msgid "version" +msgstr "sürüm" + +#: templates/storylistview/storylistview.html:103 +msgid "Report a bug" +msgstr "Hata raporlayın" + +#: templates/storylistview/storylistview.html:111 +msgid "Stories" +msgstr "Öyküler" + +#: templates/storylistview/storylistview.html:114 +msgid "Sort By" +msgstr "Sırala" + +#: templates/storylistview/storylistview.html:116 +msgid "Last changed date" +msgstr "En son değişikliğin olduğu tarih" + +#: templates/storylistview/storylistview.html:117 +msgid "Edit Date" +msgstr "Son Değiştirme Tarihi" + +#: templates/storylistview/storylistview.html:120 +msgid "Story name" +msgstr "Öykü adı" + +#: templates/storylistview/storylistview.html:121 +msgid "Name" +msgstr "Ad" + +#: templates/storylistview/storylistview.html:128 +msgid "" +"There are no stories saved in Twine right now. To get started, you can " +"either create a new story or import an existing one from a file." +msgstr "" +"Şu an Twine'da kayıtlı hiçbir öykü yok. Başlamak için yeni bir öykü yaratın " +"veya var olan bir öyküyü içe aktarın." + +#: templates/welcomeview.html:6 +msgid "Hi!" +msgstr "Merhaba!" + +#: templates/welcomeview.html:10 +msgid "" +"Twine is an open-source tool for telling interactive, nonlinear stories. " +"There are a few things you should know before you get started." +msgstr "" +"Twine, kullanıcı etkileşimli ve örgülü hikayeler anlatmaya yarayan açık " +"kaynaklı bir araçtır. Başlamadan önce bilmeniz gereken birkaç şey var." + +#: templates/welcomeview.html:14 +msgid "Tell Me More" +msgstr "Devam Et" + +#: templates/welcomeview.html:15 +msgid "Skip" +msgstr "Atla" + +#: templates/welcomeview.html:23 +msgid "New here?" +msgstr "Yeni misiniz?" + +#: templates/welcomeview.html:27 +msgid "" +"If you've never used Twine before, then welcome! The Twine 2 Guide " +"and the official wiki in general, are a great place to learn. Keep in mind " +"that some articles on the wiki at large were written for Twine 1, which is a " +"little bit different than this version. But most of the concepts are the " +"same." +msgstr "" +"Eğer daha önce Twine'ı kullanmadıysanız hoş geldiniz. Twine 2 Rehberi " +"ve resmi wiki sayfası genelde öğrenmek için iyidir. Bazı makalelerin Twine 1 " +"için yazıldığını aklınızda bulundurun, çünkü o sürüm bu sürümden biraz " +"farklı. Fakat çoğu konsept aynı." + +#: templates/welcomeview.html:31 +msgid "" +"You can also get help over at the Twine forum, too." +msgstr "" +"Twine Forumu'dan da yardım alabilirsiniz." + +#: templates/welcomeview.html:35 +msgid "" +"If you have used Twine 1 before, the guide also has details " +"on what has changed in this version. Chief among them is a new default story " +"format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, " +"try using SugarCube instead." +msgstr "" +"Eğer Twine 1'ı daha önce kullandıysanız, rehberde bu " +"sürümde değişen detaylar da var. En önemli değişiklik yeni bir öykü biçimi " +"var, Harlowe. Eğer Twine 1 kod biçimini tercih ediyorsanız SugarCube'u " +"deneyin." + +#: templates/welcomeview.html:39 templates/welcomeview.html:63 +#: templates/welcomeviewnw.html:23 +msgid "OK" +msgstr "Tamam" + +#: templates/welcomeview.html:47 +msgid "Your work is saved only in your browser." +msgstr "Eserleriniz sadece internet tarayıcınıza kaydedilir." + +#: templates/welcomeview.html:51 +msgid "" +"That means you don't need to create an account to use Twine 2, and " +"everything you create isn't stored on a server somewhere else — it " +"stays right in your browser." +msgstr "" +"Bu, Twine 2'yi kullanmak için bir hesap oluşturmanız gerekmemektedir; ve " +"yarattığınız hiçbir şey bir sunucuda saklanmamaktadır, internet " +"tarayıcınızda kalır." + +#: templates/welcomeview.html:55 +msgid "" +"Two very important things to remember, though. Since your work is " +"saved only in your browser, if you clear its saved data, then you'll lose " +"your work! Not good. Remember to use that  Archive button often. You can also publish " +"individual stories to files using the menu on " +"each story in the story list. Both archive and story files can always be re-" +"imported into Twine." +msgstr "" +"Hatırlamanız gereken çok önemli iki şey var. Öyküleriniz sadece " +"tarayıcınızda kaydedildiği için kayıtlarını silerseniz bütün çalışmalarınızı " +"kaybedersiniz. Bu iyi değil elbette.  " +"Arşiv düğmesini sık sık kullanmayı unutmayın. Ayrıca " +"öykülerinizi menüsünü kullanarak " +"yayımlayabilirsiniz. Arşiv ve öykü dosyalarını Twine'a içe aktarabilirsiniz." + +#: templates/welcomeview.html:59 +msgid "" +"Secondly, anyone who can use this browser can see and make changes to " +"your work. So if you've got a nosy kid brother, look into setting up a " +"separate profile for yourself." +msgstr "" +"İkincisi, bu tarayıcıyı kullanan herkes çalışmalarınızı görebilir ve " +"değiştirebilir. Eğer küçük bir kardeşiniz varsa ona ayrı bir hesap " +"açmayı araştırın." + +#: templates/welcomeview.html:71 +msgid "That's it!" +msgstr "Tamamdır!" + +#: templates/welcomeview.html:75 +msgid "Thanks for reading, and have fun with Twine." +msgstr "Okuduğunuz için teşekkürler, Twine'ı güle güle kullanın." + +#: templates/welcomeview.html:79 +msgid "Go to the Story List" +msgstr "Öykü listesine git" + +#: templates/welcomeviewnw.html:7 +msgid "Your work is automatically saved." +msgstr "Çalışmalarınız otomatik olarak kaydedilir." + +# Are the folders localized? +#: templates/welcomeviewnw.html:11 +msgid "" +"There's now a folder named Twine in your Documents folder. Inside that is a " +"Stories folder, where all your work will be saved. Twine saves as you work, " +"so you don't have to worry about remembering to save it yourself. You can " +"always open the folder your stories are saved to by using the Show " +"Library item in the Twine menu." +msgstr "" +"Artık \"Belgelerim\" dosyasında Twine adlı bir dosya var. Onun içinde " +"Öyküler dosyası var, orada bütün çalışmalarınız kaydedilir.. Twine " +"öykülerinizi otomatik olarak kaydeder, bu yüzden kaydetmeyi hatırlamanız " +"gerekmez. Öykülerinizin kaydedildiği dosyayı her an görmek için Twine " +"menüsünden Kütüphaneyi Göster düğmesine basabilirsiniz." + +#: templates/welcomeviewnw.html:15 +msgid "" +"Because Twine is always saving your work, the files in your story library " +"will be locked from editing while Twine is open." +msgstr "" +"Twine hikayelerinizi sürekli kaydettiği için kütüphanedeki bütün dosyalar " +"Twine açık olduğu sürece kilitli olacaktır." + +#: templates/welcomeviewnw.html:19 +msgid "" +"If you'd like to open a Twine story file you received from someone else, you " +"can import it into your library using the " +"Import From File link in the story list." +msgstr "" +"Eğer başkasından aldığınız bir Twine öyküsünü açmak isterseniz Dosyadan İçe Aktar düğmesiyle öyküyü içe " +"aktarabilirsiniz." + +#. L10n: %1$s is a filename; %2$s is the error message. +#: js/app.js:226 +msgid "“%1$s” could not be saved (%2$s)." +msgstr "“%1$s” dosyası kaydedilemedi. (%2$s)" + +#. L10n: %s is the error message. +#: js/app.js:283 +#, javascript-format +msgid "An error occurred while publishing your story. (%s)" +msgstr "Öykünüz yayımlanırken bir hata oluştu. (%s)" + +#: js/app.js:314 +msgid "Twine Archive.html" +msgstr "Twine Arşivi.html" + +#. L10n: An internal error. %s is a bad sort criterion. +#: js/collections/storycollection.js:35 +#, javascript-format +msgid "don't know how to sort stories by %s" +msgstr "öyküleri %s bakımından nasıl sıralayacağımı bilmiyorum" + +#: js/models/passage.js:19 +msgid "Untitled Passage" +msgstr "Adsız Bölüm" + +#: js/models/passage.js:21 +msgid "Tap this passage, then the pencil icon to edit it." +msgstr "Önce bu bölüme, sonra kaleme basarak bölümü düzenleyebilirsiniz." + +#: js/models/passage.js:22 +msgid "Double-click this passage to edit it." +msgstr "Bölümü düzenlemek için çift tıklayın." + +#: js/models/passage.js:78 +msgid "You must give this passage a name." +msgstr "Bu bölüme bir ad vermelisiniz." + +#: js/models/passage.js:85 +#, javascript-format +msgid "" +"There is already a passage named \"%s.\" Please give this one a unique name." +msgstr "" +"\"%s\" adlı bir bölüm zaten var. Bölüme kendine has bir isim vermelisiniz." + +#: js/models/story.js:16 +msgid "Untitled Story" +msgstr "Adsız Öykü" + +#: js/models/story.js:112 +msgid "There is no starting point set for this story." +msgstr "Bu öykü için belirli bir başlangıç noktası yok." + +#: js/models/story.js:115 +msgid "The passage set as starting point for this story does not exist." +msgstr "Bu öykünün başlangıç noktası olarak seçilen bölüm yok." + +#: js/models/storyformat.js:38 +msgid "Untitled Story Format" +msgstr "Adsız Öykü Biçimi" + +# Is there a way we could make it "Make Fullscreen", "Close Fullscreen"? There isn't a word for toggle in Turkish. +#: js/nwui.js:81 +msgid "Toggle Fullscreen" +msgstr "Tam Ekran Kipi Aç/Kapa" + +#: js/nwui.js:100 +msgid "Quit" +msgstr "Çık" + +#: js/nwui.js:115 +msgid "Edit" +msgstr "Düzen" + +#: js/nwui.js:120 +msgid "Undo" +msgstr "Geri Al" + +#: js/nwui.js:132 +msgid "Cut" +msgstr "Kes" + +#: js/nwui.js:142 +msgid "Copy" +msgstr "Kopyala" + +#: js/nwui.js:152 +msgid "Paste" +msgstr "Yapıştır" + +#: js/nwui.js:162 js/views/storyeditview/passageitemview.js:171 +#: js/views/storyeditview/storyeditview.js:126 +msgid "Delete" +msgstr "Sil" + +#: js/nwui.js:182 +msgid "Show Library" +msgstr "Kütüphaneyi Göster" + +#. L10n: This is the folder name on OS X, Linux, and recent versions of +#. Windows that a user's documents are stored in, relative to the +#. user's home directory. If you need to use a space in this name, +#. then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first +#. character. +#: js/nwui.js:239 +msgid "/Documents" +msgstr "/Belgeler" + +#. L10n: This is the folder name on Windows XP that a user's +#. documents are stored in, relative to the user's home directory. +#. This is used if a folder with the name given by the translation +#. key '/Documents' does not exist. If you need to use a space in +#. this name, then it should have two backslashes (\\) in front of it. +#. Regardless, this must have a single forward slash (/) as its first character. +#: js/nwui.js:249 js/nwui.js:250 +msgid "/My\\ Documents" +msgstr "/Belgelerim" + +#. L10n: '/Twine' is a suitable name for Twine-related files to exist +#. under on the user's hard drive. '/Stories' is a suitable name for +#. story files specifically. If you need to use a space in this name, +#. then it should have two backslashes in front of it. Regardless, +#. this must have a single forward slash (/) as its first character. +#: js/nwui.js:260 js/nwui.js:264 +msgid "/Twine" +msgstr "/Twine" + +#: js/nwui.js:260 +msgid "/Stories" +msgstr "/Öyküler" + +#. L10n: %s is the error message. +#: js/nwui.js:430 +#, javascript-format +msgid "An error occurred while saving your story (%s)." +msgstr "Öykünüzü kaydederken bir hata oluştu (%s)." + +#. L10n: %s is the error message. +#: js/nwui.js:457 +#, javascript-format +msgid "An error occurred while deleting your story (%s)." +msgstr "Öykünüzü silerken bir hata oluştu (%s)." + +#. L10n: Locking in the sense of preventing changes to a file. %s is the error message. +#: js/nwui.js:527 +#, javascript-format +msgid "An error occurred while locking your library (%s)." +msgstr "Kütüphaneniz kilitlenirken bir hata oluştu (%s)." + +#. L10n: Unlocking in the sense of allowing changes to a file. %s is the error message. +#: js/nwui.js:556 +#, javascript-format +msgid "An error occurred while unlocking your library (%s)." +msgstr "Kütüphanenin kilidi açılırken bir hata oluştu (%s)" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:166 +#, javascript-format +msgid "Don't know how to do bubble action %s" +msgstr "Balon eylemi %s nasıl yapılır bilmiyorum" + +#. L10n: An internal error message related to UI components. +#: js/ui.js:219 +#, javascript-format +msgid "Don't know how to do collapse action %s" +msgstr "Daralma eylemi %s nasıl yapılır bilmiyorum" + +#. L10n: An internal error when changing locale. +#: js/views/localeview.js:27 +#, javascript-format +msgid "Can't set locale to nonstring: %s" +msgstr "Bölge buna değiştirilemez: %s (String değil)" + +#: js/views/storyeditview/editors/passageeditor.js:120 +#: js/views/storyeditview/storyeditview.js:563 +#, javascript-format +msgid "Editing “%s”" +msgstr "\"%s\" Düzenleniyor" + +#: js/views/storyeditview/editors/passageeditor.js:211 +msgid "Any changes to the passage you're editing haven't been saved yet. " +msgstr "Bölüme yaptığınız hiçbir değişiklik daha kaydedilmedi. " + +# Double plurals not allowed in Turkish. +#. L10n: Matched in the sense of matching a search criteria. %d is the number of passages. +#: js/views/storyeditview/modals/searchmodal.js:94 +#, javascript-format +msgid "%d passage matches." +msgid_plural "%d passages match." +msgstr[0] "%d bölüm eşleşti." +msgstr[1] "%d bölüm eşleşti." + +#: js/views/storyeditview/modals/searchmodal.js:102 +msgid "No matching passages found." +msgstr "Eşleşen bölüm bulunamadı." + +#. L10n: replacement in the sense of text search and replace. %d is the number. +#: js/views/storyeditview/modals/searchmodal.js:183 +#, javascript-format +msgid "%d replacement was made in" +msgid_plural "%d replacements were made in" +msgstr[0] "%d değişim yapıldı" +msgstr[1] "%d değişim yapıldı" + +#. L10n: %d is a number of passages. +#: js/views/storyeditview/modals/searchmodal.js:187 +#, javascript-format +msgid "%d passage" +msgid_plural "%d passages" +msgstr[0] "%d bölüm" +msgstr[1] "%d bölüm" + +# no double plurals... +#. L10n: This is the formatting used to combine two pluralizations. +#. In English, %1$s equals "2 replacements were made in" and %2$s equals "5 passages." +#. This is a way to reshape the sentence as needed. +#: js/views/storyeditview/modals/searchmodal.js:192 +msgid "%1$s %2$s" +msgstr "%1$ %2$" + +#. L10n: Character in the sense of individual letters in a word. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:68 +msgid "Character" +msgid_plural "Characters" +msgstr[0] "Karakter Sayısı" +msgstr[1] "Karakter Sayıları" + +#. L10n: Word in the sense of individual words in a sentence. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:72 +msgid "Word" +msgid_plural "Words" +msgstr[0] "Kelime Sayısı" +msgstr[1] "Kelime Sayıları" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:79 +msgid "Link" +msgid_plural "Links" +msgstr[0] "Bağlantı Sayısı" +msgstr[1] "Bağlantı Sayıları" + +#. L10n: Links in the sense of hypertext links. +#. This does not actually show the count here, as it is used in a table. +#: js/views/storyeditview/modals/statsmodal.js:83 +msgid "Broken Link" +msgid_plural "Broken Links" +msgstr[0] "Eksik Bağlantı Sayısı" +msgstr[1] "Eksik Bağlantı Sayıları" + +#. L10n: %1$s is the name of the story format, %2$s is the error message. +#: js/views/storyeditview/modals/storyformatmodal.js:96 +#: js/views/storylistview/modals/formatsmodal.js:74 +msgid "The story format “%1$s” could not be loaded (%2$s)." +msgstr "“%1$s” öykü biçimi yüklenemedi (%2$s)." + +#: js/views/storyeditview/passageitemview.js:165 +#, javascript-format +msgid "Are you sure you want to delete “%s”? " +msgstr "Bunu silmek istediğinizden emin misiniz: “%s”? " + +#: js/views/storyeditview/passageitemview.js:169 +msgid "(Hold the Shift key when deleting to skip this message.)" +msgstr "(Silerken Shift'e basarak bu mesajı atlayabilirsiniz.)" + +#. L10n: An internal error related to handling user input. +#: js/views/storyeditview/passageitemview.js:461 +msgid "Don't see either mouse or touch coordinates on event" +msgstr "Olayda fare veya dokunma koordinatları görünmüyor" + +#. L10n: An internal error related to user input. +#: js/views/storyeditview/passageitemview.js:523 +msgid "Couldn't find original touch ID in movement event" +msgstr "Hareket olayında asıl dokunma numarası bulunamadı" + +#. L10n: %s is the error message. +#: js/views/storyeditview/storyeditview.js:43 +#: js/views/storyeditview/storyeditview.js:64 +#, javascript-format +msgid "A problem occurred while saving your changes (%s)." +msgstr "Değişiklikler kaydedilirken bir hata oluştu (%s)." + +#. L10n: This message is always shown with more than one passage. +#. %d is the number of passages. +#: js/views/storyeditview/storyeditview.js:122 +#, javascript-format +msgid "Are you sure you want to delete this passage?" +msgid_plural "" +"Are you sure you want to delete these %d passages? This cannot be undone." +msgstr[0] "Bu bölümü silmek istediğinizden emin misiniz?" +msgstr[1] "%d bölüm silmek istediğinizden emi misiniz? Bu geri alınamaz." + +#: js/views/storyeditview/storyeditview.js:268 +msgid "This story does not have a starting point. " +msgstr "Bu öykünün başlangıç noktası yok. " + +#: js/views/storyeditview/storyeditview.js:282 +msgid "" +"Refreshed the playable version of your story in the previously-opened tab or " +"window." +msgstr "" +"Daha önce açtığınız penceredeki veya sekmedeki okunabilir sürüm tazelendi." + +#: js/views/storyeditview/storyeditview.js:312 +#: js/views/storyeditview/storyeditview.js:352 +#: js/views/storylistview/storyitemview.js:110 +msgid "" +"This story does not have a starting point. Use the icon on a passage to set this." +msgstr "" +"Bu öykünün bir başlangıç noktası yok. " +"düğmesine basarak bir bölümü başlangıç noktası atayabilirsiniz." + +#: js/views/storyeditview/storyeditview.js:325 +msgid "" +"Refreshed the test version of your story in the previously-opened tab or " +"window." +msgstr "" +"Daha önce açtığınız penceredeki veya sekmedeki deneme versiyonu tazelendi." + +#. L10n: This refers to when a story was last saved by the user +#. %s will be replaced with a localized date and time +#: js/views/storyeditview/storyeditview.js:573 +#: js/views/storyeditview/toolbar.js:94 +#, javascript-format +msgid "Last saved at %s" +msgstr "En son %s tarihi ve saatinde kaydedildi" + +#: js/views/storylistview/modals/formatsmodal.js:137 +msgid "The story format at %1$s could not be added (%2$s)." +msgstr "%1$s yolunda bulunan öykü biçimi eklenemedi (%2$s)." + +#. L10n: An internal error related to story formats. +#: js/views/storylistview/modals/formatsmodal.js:246 +msgid "Don't know what kind of format to set as default" +msgstr "Hangi biçimin varsayılan olacağını bilmiyorum" + +#: js/views/storylistview/storagequota.js:21 +#: js/views/storylistview/storagequota.js:44 +#: js/views/storylistview/storagequota.js:49 +#, javascript-format +msgid "%d%% space available" +msgstr "%d%% yer var" + +#: js/views/storylistview/storyitemview.js:80 +#: js/views/storylistview/storyitemview.js:94 +msgid "" +"This story does not have a starting point. Edit this story and use the icon on a passage to set this." +msgstr "" +"Bu öykünün başlangıç noktası yok. Bu hikayeyi düzenleyin ve düğmesini kullanarak bir bölümü başlangıç noktası yapın." + +#: js/views/storylistview/storyitemview.js:123 +#, javascript-format +msgid "" +"Are you sure you want to delete “%s”? This cannot be undone." +msgstr "" +"Şunu silmek istediğinizden emin misiniz: “%s”? Bunu geri " +"çeviremezsiniz." + +#: js/views/storylistview/storyitemview.js:125 +msgid "Delete Forever" +msgstr "Kalıcı Sil" + +#: js/views/storylistview/storyitemview.js:137 +#, javascript-format +msgid "What should “%s” be renamed to?" +msgstr "Şunun yeni adı nedir: “%s”?" + +#: js/views/storylistview/storyitemview.js:138 +msgid "Rename" +msgstr "Yeniden Adlandır" + +#: js/views/storylistview/storyitemview.js:155 +msgid "What should the duplicate be named?" +msgstr "Kopyanın adını ne koymak istersiniz?" + +#: js/views/storylistview/storyitemview.js:156 +msgid "Duplicate" +msgstr "Kopya Oluştur" + +#: js/views/storylistview/storyitemview.js:162 +#, javascript-format +msgid "%s Copy" +msgstr "%s Kopya" + +#. L10n: %d is a number of stories. +#: js/views/storylistview/storylistview.js:251 +#, javascript-format +msgid "%d story was imported." +msgid_plural "%d stories were imported." +msgstr[0] "%d öykü içe aktarıldı." +msgstr[1] "%d öykü içe aktarıldı." + +#. L10n: %d is a number of stories +#: js/views/storylistview/storylistview.js:341 +#, javascript-format +msgid "%d Story" +msgid_plural "%d Stories" +msgstr[0] "%d Öykü" +msgstr[1] "%d Öykü" diff --git a/src/locale/view/img/flags/cs.svg b/src/locale/view/img/flags/cs.svg new file mode 100644 index 000000000..c18c40a31 --- /dev/null +++ b/src/locale/view/img/flags/cs.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/locale/view/img/flags/da.svg b/src/locale/view/img/flags/da.svg new file mode 100755 index 000000000..44a558376 --- /dev/null +++ b/src/locale/view/img/flags/da.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/locale/view/img/flags/de.svg b/src/locale/view/img/flags/de.svg new file mode 100644 index 000000000..6bb4b40e2 --- /dev/null +++ b/src/locale/view/img/flags/de.svg @@ -0,0 +1,71 @@ + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/locale/view/img/flags/en.svg b/src/locale/view/img/flags/en.svg new file mode 100644 index 000000000..83eb5571e --- /dev/null +++ b/src/locale/view/img/flags/en.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/locale/view/img/flags/es.svg b/src/locale/view/img/flags/es.svg new file mode 100644 index 000000000..872f198be --- /dev/null +++ b/src/locale/view/img/flags/es.svg @@ -0,0 +1,631 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/locale/view/img/flags/fi.svg b/src/locale/view/img/flags/fi.svg new file mode 100644 index 000000000..e7f293bf3 --- /dev/null +++ b/src/locale/view/img/flags/fi.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/locale/view/img/flags/fr.svg b/src/locale/view/img/flags/fr.svg new file mode 100644 index 000000000..a4bded524 --- /dev/null +++ b/src/locale/view/img/flags/fr.svg @@ -0,0 +1,2 @@ + + diff --git a/src/locale/view/img/flags/it.svg b/src/locale/view/img/flags/it.svg new file mode 100644 index 000000000..40773fd56 --- /dev/null +++ b/src/locale/view/img/flags/it.svg @@ -0,0 +1,71 @@ + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/locale/view/img/flags/nl.svg b/src/locale/view/img/flags/nl.svg new file mode 100644 index 000000000..c77114d9c --- /dev/null +++ b/src/locale/view/img/flags/nl.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/locale/view/img/flags/pt-br.svg b/src/locale/view/img/flags/pt-br.svg new file mode 100644 index 000000000..742dcf509 --- /dev/null +++ b/src/locale/view/img/flags/pt-br.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/locale/view/img/flags/pt-pt.svg b/src/locale/view/img/flags/pt-pt.svg new file mode 100644 index 000000000..5c19329c5 --- /dev/null +++ b/src/locale/view/img/flags/pt-pt.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/locale/view/img/flags/ru.svg b/src/locale/view/img/flags/ru.svg new file mode 100755 index 000000000..855b805a5 --- /dev/null +++ b/src/locale/view/img/flags/ru.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/locale/view/img/flags/sv.svg b/src/locale/view/img/flags/sv.svg new file mode 100644 index 000000000..521049b4d --- /dev/null +++ b/src/locale/view/img/flags/sv.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/locale/view/img/flags/tr.svg b/src/locale/view/img/flags/tr.svg new file mode 100755 index 000000000..30524de46 --- /dev/null +++ b/src/locale/view/img/flags/tr.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/src/locale/view/index.html b/src/locale/view/index.html new file mode 100644 index 000000000..b6d0002c8 --- /dev/null +++ b/src/locale/view/index.html @@ -0,0 +1,14 @@ +
+

+ {{ 'Please choose which language you would like to use with Twine.' | say }} +

+ +
    +
  • + +
  • +
+
diff --git a/src/locale/view/index.js b/src/locale/view/index.js new file mode 100644 index 000000000..74440505d --- /dev/null +++ b/src/locale/view/index.js @@ -0,0 +1,59 @@ +/** + Allows the user to pick what locale they would like to use. +**/ + +'use strict'; +const Vue = require('vue'); +const { setPref } = require('../../data/actions/pref'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + // The locales we offer with their codes. + + locales: [ + { label: 'Castellano', code: 'es' }, + { label: 'Čeština', code: 'cs'}, + { label: 'Dansk', code: 'da' }, + { label: 'Deutsch', code: 'de' }, + { label: 'English', code: 'en' }, + { label: 'Français', code: 'fr' }, + { label: 'Italiano', code: 'it' }, + { label: 'Nederlands', code: 'nl' }, + { label: 'Português', code: 'pt-pt' }, + { label: 'Português Brasileiro', code: 'pt-br' }, + { label: 'Suomi', code: 'fi' }, + { label: 'Svenska', code: 'sv' }, + { label: 'Türkçe', code: 'tr' } + ] + }), + + methods: { + /** + Sets the application locale and forces a window reload + back to the story list. + + @method setLocale + @param {String} userLocale locale to set + **/ + + setLocale(userLocale) { + this.setPref('locale', userLocale); + window.location.hash = 'stories'; + window.location.reload(); + } + }, + + vuex: { + actions: { + setPref + }, + + getters: { + localePref: state => state.pref.locale + } + } +}); diff --git a/src/locale/view/index.less b/src/locale/view/index.less new file mode 100644 index 000000000..3d9588edf --- /dev/null +++ b/src/locale/view/index.less @@ -0,0 +1,35 @@ +@import '../../common/colors.less'; +@import '../../common/depth.less'; +@import '../../common/metrics.less'; + +#localeView { + .prompt { + text-align: center; + } + + button { + width: 10rem; + text-align: center; + + img { + height: 5rem; + width: auto; + display: block; + margin: @len-large auto; + .shadow-medium; + } + } + + ul { + list-style-type: none; + text-align: center; + padding-left: 0; + width: 45rem; + margin: 0 auto; + + li { + display: inline; + } + } +} + diff --git a/src/nw/directories.js b/src/nw/directories.js new file mode 100644 index 000000000..120a7c162 --- /dev/null +++ b/src/nw/directories.js @@ -0,0 +1,124 @@ +/* +Manages access to the user's Twine library directory. +*/ + +const osenv = require('osenv'); +const locale = require('../locale'); + +const Directories = module.exports = { + /* + Returns the path to the user's documents directory. If one does not exist, + this returns the empty string. + */ + + docPath() { + const fs = require('fs'); + const path = require('path'); + + /* + We require this here instead of at the top of the file so that on the + web platform, it doesn't try to do any detection (and fail, because we + are not shimming process). + */ + + const homePath = osenv.home(); + + /* + If the user doesn't have a Documents folder, check for "My Documents" + instead (thanks Windows). + */ + + /* + L10n: This is the folder name on OS X, Linux, and recent versions of + Windows that a user's documents are stored in, relative to the user's + home directory. If you need to use a space in this name, then it should + have two backslashes (\\) in front of it. + */ + let docPath = path.join(homePath, locale.say('Documents')); + + if (fs.existsSync(docPath)) { + return docPath; + } + + /* + L10n: This is the folder name on Windows XP that a user's + documents are stored in, relative to the user's home + directory. This is used if a folder with the name given + by the translation key '/Documents' does not exist. If + you need to use a space in this name, then it should have + two backslashes (\\) in front of it. + */ + docPath = path.join(homePath, locale.say('My\\ Documents')); + + if (fs.existsSync(docPath)) { + return docPath; + } + + return ''; + }, + + /* + Returns the path to the user's Stories directory, in the Twine directory. + */ + + storiesPath() { + const path = require('path'); + + return path.join( + Directories.docPath(), + locale.say('Twine'), + locale.say('Stories') + ); + }, + + /* + Locks the story directory to prevent the user from changing it + outside of Twine. + */ + + lockStories() { + const fs = require('fs'); + const path = require('path'); + const storyPath = Directories.storiesPath(); + + if (process.platform == 'win32') { + /* On Windows, we must lock each file individually. */ + + fs.readdirSync(storyPath).forEach(filename => { + /* a-w, 0444 */ + fs.chmodSync(path.join(storyPath, filename), 292); + }); + } + else { + /* Everywhere else, locking the directory is good enough. */ + + /* u-w */ + fs.chmodSync(storyPath, fs.statSync(storyPath).mode ^ 128); + } + }, + + /* + Unlocks the story directory. + */ + + unlockStories() { + const fs = require('fs'); + const path = require('path'); + const storyPath = Directories.storiesPath(); + + if (process.platform === 'win32') { + /* On Windows, we must unlock each file individually. */ + + fs.readdirSync(storyPath).forEach(filename => { + /* a+w, 0666 */ + fs.chmodSync(path.join(storyPath, filename), 438); + }); + } + else { + /* Everywhere else, unlocking the directory is good enough. */ + + /* u-w */ + fs.chmodSync(storyPath, fs.statSync(storyPath).mode | 128); + } + } +}; diff --git a/src/nw/img/logo-osx.svg b/src/nw/img/logo-osx.svg new file mode 100644 index 000000000..646e02766 --- /dev/null +++ b/src/nw/img/logo-osx.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/nw/img/logo.icns b/src/nw/img/logo.icns new file mode 100644 index 0000000000000000000000000000000000000000..8930a33c24cba73209c00dd0da04637ba1c3769a GIT binary patch literal 113543 zcmeEv1zc21)c7SuK{vp}K*jFDcy=dtA!!E&CcA*#-KD#`J0t|8ySqccLKH<|7qFB6 znY)1KL*3_le&6@|{XGio%$zyr%!!$~b7y8x9XWRi<4e##b!pyQ4C8xZj`2|`I2EJl zV@xVWVqzGD0iT4)1IZ*3nasd&DnErvW{~($0uyHdYIlOlpkUo4d{ip_B{hIbr9dqb zi9(WKV!~7kB*|nwObBIDsQU1MN+wgteSSa%lmWJwIVMEYpwl&Qz@pP>bht1iw9>%c#dWC|*$OkD zT7k3UR3-&{*9z08V&eK3zbJ*Qi$0T?m;jkVqA(zdQJ8=wh*2P|3uzXGLFFS+4B?|L zm5)L-CU6)K4t!*a5lWC56d^LWJcWdk45~1Ergo(UP^eUK5|nkNF$f%C2sH|cOknp% zMNk>=5n+CD3K^$>EM$rvS&)i?QWqLQ#mNGQ0*ed+m|#!|NRkm5CfN)VlYlZr1(6zL zfr)a92p(ihOc=2rL?+>6zClARu>mLv+>s1c*nmMjDGH_Gf7y~2F z=}a1?fzv_nbWGg}6QI**8caH$2IT0_1t8cp^)P|XmoHy{y6FfLQ)gfzot*X#6uWJ@ z7*6MhP5`I(qtP&SJG+g8w+V2F5`G$8Lx(OL#D)%`S2iEQ76mqjQ4avIcM%4x2Wa`E zW`A2iMq<%*BhoT*8osSV!!^Y8Vv^Id@*jRvgwqG=L?xwX<`gu3Q$mLBEF>W%JuCO` zMKqdQLUL+mZhpz*Z)#E1nbAq9>Dl>3B~9ESPCMSl$KmK=6q zt?1;8oSeea(#j{C_I8dLHqbmVJv%qQsI;O6ayrd1QJ>VTyn>?git5^@97{|zA}hbJ zxU{n7cHPsb;1KaS1;wT1Rkv&JG=d8x_N1yImC=(bgH%dSs_-ABl9DpAv+_%dOUp`- zLtq>|HpYQ~Y}H}&x3XJ-7N?cyLZKIJvw{v*0QILh^snF-_(5eQh%!{?IRg_otEjBN zR0L%}FAIGx;IW@!$CVVI>tsQ;7|P)OkCcZl7$b5KCxJVG7oa9LLzKfo^;?qct<`#E zqM8qaoNO)6^<-ioN56YMPWIO3Uou63^CLf3M_WtNvptxiz&O;^+0M$$SoKRLo0IP0 zVsC9>VtD3DX8RLwH%D7@QzP9|3Ob5{3QBUy%BV?c?vD0QT~Ftff}*05q9U>{+t0
+ + +
+

+ {{ 'New here?' | say }} +

+ +

+ {{{ "<strong>If you've never used Twine before,</strong> then welcome! The <a href=\"http://twinery.org/2guide\" target=\"_blank\">Twine 2 Guide</a> and the official wiki in general, are a great place to learn. Keep in mind that some articles on the wiki at large were written for Twine 1, which is a little bit different than this version. But most of the concepts are the same." | say }}} +

+ +

+ {{{ 'You can also get help over at the <a href="http://twinery.org/forum" target="_blank">Twine forum, too.' | say }}} +

+ +

+ {{{ '<strong>If you have used Twine 1 before,</strong> the guide also has details on what has changed in this version. Chief among them is a new default story format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, try using SugarCube instead.' | say }}} +

+ +

+ +

+
+ +
+

+ {{ 'Your work is automatically saved.' | say }} +

+ +

+ {{{ "There's now a folder named Twine in your Documents folder. Inside that is a Stories folder, where all your work will be saved. Twine saves as you work, so you don't have to worry about remembering to save it yourself. You can always open the folder your stories are saved to by using the <b>Show Library</b> item in the <b>Twine</b> menu." | say }}} +

+ +

+ {{ "Because Twine is always saving your work, the files in your story library will be locked from editing while Twine is open." | say }} +

+ +

+ {{ "If you'd like to open a Twine story file you received from someone else, you can import it into your library using the <i class=\"icon-upload-alt\"></i> <b>Import From File</b> link in the story list.") | say }} +

+ +

+ +

+
+ +
+

+ {{ "That's it!" | say }} +

+ +

+ {{ 'Thanks for reading, and have fun with Twine.' | say }} +

+ +

+ +

+
+
\ No newline at end of file diff --git a/src/nw/save-queue.js b/src/nw/save-queue.js new file mode 100644 index 000000000..4c89b2402 --- /dev/null +++ b/src/nw/save-queue.js @@ -0,0 +1,63 @@ +/* +Manages a queue for saving story files. We can't save story files immediately as +the user edits them, because the changes come so rapidly. Instead, we queue +saves up and periodically flush the queue. + +You *must* call flush() on this module before the application closes to prevent +data loss. +*/ + +const StoryFile = require('./story-file'); + +let idQueue = []; +let flushTimeout; + +const SaveQueue = module.exports = { + /* How long to wait to flush the queue, in milliseconds. */ + + delay: 10000, + + /* + Attaches to a Vuex store, for retrieval of stories. Must be called before + any flush() call. + */ + + attachStore(store) { + SaveQueue.store = store; + }, + + /* + Queues an story to be saved. Repeated requests to save the same story don't change the queue, but they do reset the delay to save. + */ + + queue(id) { + if (flushTimeout) { + window.clearTimeout(flushTimeout); + } + + flushTimeout = window.setTimeout(SaveQueue.flush, SaveQueue.delay); + + if (idQueue.indexOf(id) === -1) { + idQueue.push(id); + } + }, + + /* + Saves all pending stories. + */ + + flush() { + if (!SaveQueue.store) { + throw new Error('No store has been set for this save queue'); + } + + while (idQueue.length > 0) { + const id = idQueue.pop(); + const story = SaveQueue.store.state.story.stories.find( + s => s.id === id + ); + + StoryFile.save(story, SaveQueue.store.state.appInfo); + } + } +} \ No newline at end of file diff --git a/src/nw/startup-error.ejs b/src/nw/startup-error.ejs new file mode 100644 index 000000000..a0b2ac54d --- /dev/null +++ b/src/nw/startup-error.ejs @@ -0,0 +1,45 @@ +
+ +

+An error occurred during startup<% if (task !== undefined) { %> while <%= task %><% } %>. +

+ +

+Please report this error at the Twine +project page, including the information below: +

+ +<% if (error !== undefined) { %> +
    +
  • + Message: <% if (error.message !== undefined) { %><%= error.message %><% } else { %>unknown<% } %> +
  • + +
  • + File: <% if (error.fileName !== undefined) { %><%= error.fileName %><% } else { %>unknown<% } %> +
  • + +
  • + Line: <% if (error.lineNumber !== undefined) { %><%= error.lineNumber %><% } else { %>unknown<% } %> +
  • + +
  • + Column: <% if (error.columnNumber !== undefined) { %><%= error.columnNumber %><% } else { %>unknown<% } %> +
  • + +
  • + Stack: <% if (error.stack !== undefined) { %>
    <%= error.stack %><% } else { %>unknown<% } %> +
  • +
+<% } else { %> +
    +
  • No error information available
  • +
+<% } %> + +

+You may also be able to get help with this problem on the Twine forums. +

+ +
diff --git a/src/nw/story-file.js b/src/nw/story-file.js new file mode 100644 index 000000000..8813c10c2 --- /dev/null +++ b/src/nw/story-file.js @@ -0,0 +1,146 @@ +/* +Manages interactions with individual story files. +*/ + +const StoryFile = module.exports = { + /* + A global flag that allows deactivation of the module. This is needed while + the module itself works, so that changes in local storage made here don't + trigger a save to the filesystem, which in turn would trigger a change to + local storage, etc. + */ + + active: true, + + /* + Returns a filename for a story object that's guaranteed to be safe across + all platforms. For this, we use POSIX's definition + (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_276) + with the addition of spaces, for legibility. + */ + + fileName(story) { + return story.name.replace(/[^\w\. -]/g, '_') + '.html'; + }, + + /* + Saves a story object to the file system. + */ + + save(story, appInfo) { + if (!StoryFile.active) { + return; + } + + const fs = require('fs'); + const directories = require('./directories'); + const path = require('path'); + const { publishStory } = require('../data/publish'); + + try { + directories.unlockStories(); + const fd = fs.openSync( + path.join(directories.storiesPath(), StoryFile.fileName(story)), + 'w' + ); + + fs.writeSync(fd, publishStory(appInfo, story, null, null, true)); + fs.closeSync(fd); + } + finally { + directories.lockStories(); + } + }, + + /* + Deletes a story file from the file system. + */ + + delete(story) { + if (!StoryFile.active) { + return; + } + + const fs = require('fs'); + const directories = require('./directories'); + const path = require('path'); + + try { + directories.unlockStories(); + fs.unlinkSync( + path.join(directories.storiesPath(), StoryFile.fileName(story)) + ); + } + finally { + directories.lockStories(); + } + }, + + /* + Syncs local storage with the file system, obliterating any stories that + happen to be saved to local storage only. This is run at startup time, so + efficiency is important. + */ + + loadAll() { + if (!StoryFile.active) { + return; + } + + const directories = require('./directories'); + const fs = require('fs'); + const path = require('path'); + const { deleteStory, importStory } = require('../data/actions/story'); + const importFile = require('../data/import'); + const store = require('../data/store'); + + StoryFile.active = false; + + try { + /* + Delete all existing stories. We save the IDs in a separate step so + that as we delete stories, the source list isn't affected. + + It's crucial that the active property be false before this happens + to prevent files on disk from being deleted. + */ + + const storyIds = store.state.story.stories.map(story => story.id); + + storyIds.forEach(id => deleteStory(store, id)); + + /* + Generate import actions for each .html file in the stories + directory. + */ + + directories.lockStories(); + + const storyPath = directories.storiesPath(); + const fileStories = fs.readdirSync(storyPath); + + fileStories.map(filename => { + if (filename.match(/\.html$/)) { + const filePath = path.join(storyPath, filename); + const source = fs.readFileSync( + filePath, + { encoding: 'utf8' } + ); + const stats = fs.statSync(filePath); + const storyData = importFile( + source, + new Date(Date.parse(stats.mtime)) + ); + + if (storyData.length > 0) { + importStory(store, storyData[0]); + } + } + }); + } + finally { + directories.unlockStories(); + StoryFile.active = true; + } + } +}; diff --git a/src/story-edit-view/index.html b/src/story-edit-view/index.html new file mode 100644 index 000000000..13e49600f --- /dev/null +++ b/src/story-edit-view/index.html @@ -0,0 +1,10 @@ +
+
+ + + + +
+ + +
diff --git a/src/story-edit-view/index.js b/src/story-edit-view/index.js new file mode 100644 index 000000000..88d47b5ab --- /dev/null +++ b/src/story-edit-view/index.js @@ -0,0 +1,501 @@ +/* The main view where story editing takes place. */ + +const values = require('lodash.values'); +const Vue = require('vue'); +const { confirm } = require('../dialogs/confirm'); +const { createPassage, deletePassage, positionPassage, updatePassage } = require('../data/actions/passage'); +const { loadFormat } = require('../data/actions/story-format'); +const { updateStory } = require('../data/actions/story'); +const domEvents = require('../vue/mixins/dom-events'); +const locale = require('../locale'); +const { passageDefaults } = require('../data/store/story'); +const zoomSettings = require('./zoom-settings'); + +require('./index.less'); + +/* +A memoized, sorted array of zoom levels used when zooming in or out. +*/ + +const zoomLevels = values(zoomSettings).sort(); + +module.exports = Vue.extend({ + template: require('./index.html'), + + /* The id of the story we're editing is provided by the router. */ + + props: { + storyId: { + type: String, + required: true + } + }, + + data: () => ({ + /* + The window's width and height. Our resize() method keeps this in sync + with the DOM. + */ + + winWidth: window.innerWidth, + winHeight: window.innerHeight, + + /* + The calculated width and height we maintain to allow the user to + always have space below and to the right of passages in the story + map. + */ + + width: 0, + height: 0, + + /* + The regular expression that matching passages should highlight. + If null, none should highlight. + */ + + highlightRegexp: null, + + /* + The offset that selected passages should be displayed at + temporarily, to show feedback as the user drags passages around. + */ + + screenDragOffsetX: 0, + screenDragOffsetY: 0 + }), + + computed: { + /* + Sets our width and height to: + * the size of the browser window + * the minimum amount of space needed to enclose all existing + passages + + ... whichever is bigger, plus 50% of the browser window's + width and height, so that there's always room for the story to + expand. + */ + + cssDimensions() { + let width = this.winWidth; + let height = this.winHeight; + let passagesWidth = 0; + let passagesHeight = 0; + + this.story.passages.forEach(p => { + const right = p.left + p.width; + const bottom = p.top + p.height; + + if (right > passagesWidth) { + passagesWidth = right; + } + + if (bottom > passagesHeight) { + passagesHeight = bottom; + } + }); + + width = Math.max(passagesWidth * this.story.zoom, this.winWidth); + height = Math.max(passagesHeight * this.story.zoom, this.winHeight); + + /* + Give some space below and to the right for the user to add + passages. + */ + + width += this.winWidth / 2; + height += this.winHeight / 2; + + return { + width: width + 'px', + height: height + 'px' + }; + }, + + /* Our grid size -- for now, constant. */ + + gridSize() { + return 25; + }, + + /* + Returns an array of currently-selected components. This + is used by the marquee selector component to do additive selections + by remembering what was originally selected. + */ + + selectedChildren() { + return this.$refs.passages.filter(p => p.selected); + }, + + /* + An array of components and their link positions, + indexed by name. + */ + + passagePositions() { + return this.$refs.passages.reduce( + (result, passageView) => { + result[passageView.passage.name] = passageView.linkPosition; + return result; + }, + + {} + ); + }, + + story() { + return this.allStories.find(story => story.id === this.storyId); + }, + + /* A human readable adjective for the story's zoom level. */ + + zoomDesc() { + return Object.keys(zoomSettings).find( + key => zoomSettings[key] === this.story.zoom + ); + } + }, + + watch: { + 'story.name': { + handler(value) { + document.title = value; + }, + + immediate: true + }, + + 'story.zoom': { + handler(value, old) { + /* + Change the window's scroll position so that the same logical + coordinates are at its center. + */ + + const halfWidth = window.innerWidth / 2; + const halfHeight = window.innerHeight / 2; + const logCenterX = (window.scrollX + halfWidth) / old; + const logCenterY = (window.scrollY + halfHeight) / old; + + window.scroll( + (logCenterX * value) - halfWidth, + (logCenterY * value) - halfHeight + ); + } + } + }, + + ready() { + this.resize(); + this.on(window, 'resize', this.resize); + this.on(window, 'keyup', this.onKeyup); + + if (this.story.passages.length === 0) { + this.createPassageAt(); + } + }, + + methods: { + resize() { + this.winWidth = window.innerWidth; + this.winHeight = window.innerHeight; + }, + + zoomIn(wraparound) { + let zoomIndex = zoomLevels.indexOf(this.story.zoom); + + if (zoomIndex === 0) { + if (wraparound) { + this.updateStory( + this.story.id, + { zoom: zoomLevels[zoomIndex.length - 1] } + ); + } + } + else { + this.updateStory( + this.story.id, + { zoom: zoomLevels[zoomIndex - 1] } + ); + } + }, + + zoomOut(wraparound) { + let zoomIndex = zoomLevels.indexOf(this.story.zoom); + + if (zoomIndex === zoomLevels.length - 1) { + if (wraparound) { + this.updateStory( + this.story.id, + { zoom: zoomLevels[0] } + ); + } + } + else { + this.updateStory( + this.story.id, + { zoom: zoomLevels[zoomIndex + 1] } + ); + } + }, + + /* + Creates a passage, optionally at a certain position onscreen. If + unspecified, this does so at the center of the page. This also + handles positioning the passage so it doesn't overlap others. + */ + + createPassageAt(name, top, left) { + /* + If we haven't been given coordinates, place the new passage at + the center of the window. We start by finding the center point + of the browser window in logical coordinates, e.g. taking into + account the current zoom level. Then, we move upward and to the + left by half the dimensions of a passage in logical space. + */ + + if (!left) { + left = (window.pageXOffset + window.innerWidth / 2) + / this.story.zoom; + left -= passageDefaults.width; + } + + if (!top) { + top = (window.pageYOffset + window.innerHeight / 2) + / this.story.zoom; + top -= passageDefaults.height; + } + + /* + Make sure the name is unique. If it's a duplicate, we add a + number at the end (e.g. "Untitled Passage 2", "Untitled Passage + 3", and so on. + */ + + name = name || locale.say('Untitled Passage'); + + if (this.story.passages.find(p => p.name === name)) { + const origName = name; + let nameIndex = 0; + + do { + nameIndex++; + name = origName + ' ' + nameIndex; + } + while + (this.story.passages.find(p => p.name === name)); + } + + /* Add it to our collection. */ + + this.createPassage(this.story.id, { name, left, top }); + + /* + Then position it so it doesn't overlap any others, and save it + again. + */ + + this.positionPassage( + this.story.id, + this.story.passages.find(p => p.name === name).id, + this.gridSize + ); + }, + + /* + Creates a passage under the cursor in response to a + webkitmouseforcedown event. At the time of writing, this is a + Mac-specific feature, but can be extended once standards catch up. + */ + + onMouseForceDown(e) { + let top = (e.pageY / this.story.zoom) - + (passageDefaults.height / 2); + let left = (e.pageX / this.story.zoom) - + (passageDefaults.width / 2); + + this.createPassage(null, top, left); + }, + + /* + Zooms in or out based on a mouse wheel event. The user must hold + down the Alt or Option key for it to register. + */ + + onWheel(e) { + if (e.altKey && !e.ctrlKey) { + /* Only consider the Y component of the motion. */ + + if (e.wheelDeltaY > 0) { + this.zoomIn(true); + } + else { + this.zoomOut(true); + } + + e.preventDefault(); + } + }, + + onKeyup(e) { + /* + If the key is going anywhere (e.g. into a text field), disregard it. + */ + + let target = e.target; + + while (target) { + if (target.nodeName === 'INPUT' || target.nodeName === 'TEXTAREA') { + return; + } + + target = target.parentNode; + } + + switch (e.keyCode) { + /* Plus key */ + + case 187: + this.zoomOut(); + break; + + /* Minus key */ + + case 189: + this.zoomIn(); + break; + + /* Delete key */ + + case 46: { + const toDelete = + this.story.passages.filter(p => p.selected); + + if (toDelete.length === 0) { + return; + } + + const message = locale.sayPlural( + `Are you sure you want to delete “%2$s”? This cannot be undone.`, + `Are you sure you want to delete %d passages? This cannot be undone.`, + toDelete.length, + toDelete[0].name + ); + + confirm({ + message, + buttonLabel: ' ' + locale.say('Delete'), + buttonClass: 'danger' + }).then(() => { + toDelete.forEach( + p => this.deletePassage(this.story.id, p.id) + ); + }); + break; + } + } + } + }, + + events: { + /* + Our children (e.g. the search field can tell us to change what the + highlight filter should be. + */ + + 'highlight-regexp-change'(value) { + this.highlightRegexp = value; + }, + + /* + A hook into our createPassage() method for child components. + */ + + 'passage-create'(name, left, top) { + this.createPassageAt(name, left, top); + }, + + /* + A child will dispatch this event to us as it is dragged around. We + set a data property here and other selected passages react to it by + temporarily shifting their onscreen position. + */ + + 'passage-drag'(xOffset, yOffset) { + if (this.story.snapToGrid) { + this.screenDragOffsetX = Math.round(xOffset / this.gridSize) * + this.gridSize; + this.screenDragOffsetY = Math.round(yOffset / this.gridSize) * + this.gridSize; + } + else { + this.screenDragOffsetX = xOffset; + this.screenDragOffsetY = yOffset; + } + }, + + /* + A child will dispatch this event at the completion of a drag. We + pass this onto our children, who use it as a chance to save what was + a temporary change in the DOM to their model. + */ + + 'passage-drag-complete'(xOffset, yOffset) { + this.screenDragOffsetX = 0; + this.screenDragOffsetY = 0; + + if (this.story.snapToGrid) { + xOffset = Math.round(xOffset / this.gridSize) * this.gridSize; + yOffset = Math.round(yOffset / this.gridSize) * this.gridSize; + } + + this.$broadcast('passage-drag-complete', xOffset, yOffset); + }, + + /* + Positions a passage on behalf of a child component. This needs to be + here, as opposed to a direct Vuex action, because this takes into + account the grid size. + */ + + 'passage-position'(passage, options) { + this.positionPassage( + this.story.id, + passage.id, + this.gridSize, + options.ignoreSelected && (passage => + !this.selectedChildren.some(view => + view.passage.id === passage + )) + ); + } + }, + + components: { + 'link-arrows': require('./link-arrows'), + 'passage-item': require('./passage-item'), + 'story-toolbar': require('./story-toolbar'), + 'marquee-selector': require('./marquee-selector') + }, + + vuex: { + actions: { + createPassage, + deletePassage, + loadFormat, + positionPassage, + updatePassage, + updateStory + }, + + getters: { + allFormats: state => state.storyFormat.formats, + allStories: state => state.story.stories, + defaultFormatName: state => state.pref.defaultFormat + } + }, + + mixins: [domEvents] +}); diff --git a/src/story-edit-view/index.less b/src/story-edit-view/index.less new file mode 100644 index 000000000..0778a491f --- /dev/null +++ b/src/story-edit-view/index.less @@ -0,0 +1,83 @@ +@import '../common/colors.less'; +@import '../common/depth.less'; + +@color-graph-paper: lighten(@color-link, 55%); +@color-graph-paper-dark: darken(@color-link, 35%); +@color-graph-lines: lighten(@color-link, 52%); +@color-graph-lines-dark: darken(@color-link, 33%); +@color-graph-lines-bold: lighten(@color-link, 47%); +@color-graph-lines-bold-dark: lighten(@color-graph-lines-dark, 3%); + +.graph-large, .graph-medium, .graph-small { + background-color: @color-graph-paper; + background-image: linear-gradient(to right, @color-graph-lines-bold 1px, transparent 1px), linear-gradient(to bottom, @color-graph-lines-bold 1px, transparent 1px), linear-gradient(to right, @color-graph-lines 1px, transparent 1px), linear-gradient(to bottom, @color-graph-lines 1px, transparent 1px); + background-size: 100px 100px, 100px 100px, 25px 25px, 25px 25px; + + .theme-dark & { + background-color: @color-graph-paper-dark; + background-image: linear-gradient(to right, @color-graph-lines-bold-dark 1px, transparent 1px), linear-gradient(to bottom, @color-graph-lines-bold-dark 1px, transparent 1px), linear-gradient(to right, @color-graph-lines-dark 1px, transparent 1px), linear-gradient(to bottom, @color-graph-lines-dark 1px, transparent 1px); + } +} + +.graph-medium { + background-size: 60px 60px, 60px 60px, 15px 15px, 15px 15px; +} + +.graph-small { + background-image: linear-gradient(to right, @color-graph-lines 1px, transparent 1px), linear-gradient(to bottom, @color-graph-lines 1px, transparent 1px); + background-size: 25px 25px, 25px 25px; + + .theme-dark & { + background-image: linear-gradient(to right, @color-graph-lines-dark 1px, transparent 1px), linear-gradient(to bottom, @color-graph-lines-dark 1px, transparent 1px); + + } +} + +#storyEditView { + position: absolute; + overflow: hidden; +} + +#storyEditView .passages { + user-select: none; + width: 100%; + height: 100%; + .graph-large; +} + +#storyEditView.zoom-medium .passages { + .graph-medium; +} + +#storyEditView.zoom-small .passages { + .graph-small; +} + +body.draggingPassages { + .drop { + display: none !important; + } + + #storyEditView * { + cursor: default !important; + } +} + +#storyEditView .working { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + + p { + margin: 0; + padding: @len-large; + background: @color-paper; + .shadow-large; + border-radius: 2px; + } +} diff --git a/src/story-edit-view/link-arrows/index.html b/src/story-edit-view/link-arrows/index.html new file mode 100644 index 000000000..df557cc27 --- /dev/null +++ b/src/story-edit-view/link-arrows/index.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + diff --git a/src/story-edit-view/link-arrows/index.js b/src/story-edit-view/link-arrows/index.js new file mode 100644 index 000000000..c3261a941 --- /dev/null +++ b/src/story-edit-view/link-arrows/index.js @@ -0,0 +1,77 @@ +/* +Draws connector lines between passages. +*/ + +const uniq = require('lodash.uniq'); +const Vue = require('vue'); +const linkParser = require('../../data/link-parser'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + passages: { + type: Array, + required: true + }, + + /* + The positions of the passages, indexed by passage name. Each entry + should contain top, left, width and height properties. + */ + + positions: { + type: Object, + required: true + }, + + zoom: { + type: Number, + required: true + } + }, + + computed: { + /* + A list of distinct links between passages, indexed by passage name. + This is kept distinct from the positions property so that dragging + passages around only triggers a redraw of the affected lines. As such, + individual arrows *cannot* depend on the position or existence of other + arrows-- otherwise, we'd have to recompute every link arrow when one + changed. + */ + + links() { + return this.passages.reduce( + (result, passage) => { + result[passage.name] = uniq(linkParser(passage.text, true)); + return result; + }, + + {} + ); + }, + + cssStyle() { + /* + In order for the arrows to not get cut off, we have to overinflate + our base size when scaling. It's possible to do this with an SVG + transform instead but it seems to yield weird results -- lines not + appearing, for example. Not sure if there are performance or + appearance implications to either approach. + */ + + return { + transform: 'scale(' + this.zoom + ')', + width: 100 * 1 / this.zoom + '%', + height: 100 * 1 / this.zoom + '%', + }; + } + }, + + components: { + 'link-arrow': require('./link-arrow') + } +}); diff --git a/src/story-edit-view/link-arrows/index.less b/src/story-edit-view/link-arrows/index.less new file mode 100644 index 000000000..131fa5b15 --- /dev/null +++ b/src/story-edit-view/link-arrows/index.less @@ -0,0 +1,52 @@ +@import '../../common/colors.less'; + +@color-link-arrow: lighten(@color-text, 10%); +@color-link-arrow-dark: darken(@color-text-dark, 30%); + +#storyEditView .links { + transform-origin: 0 0; + + path { + stroke: @color-link-arrow; + fill: none; + stroke-width: 2px; + + .theme-dark & { + stroke: @color-link-arrow-dark; + } + } + + #link-arrowhead path { + fill: @color-link-arrow; + stroke: none; + + .theme-dark & { + fill: @color-link-arrow-dark; + } + } + + #link-broken path { + fill: @color-danger; + stroke-width: 1px; + stroke-linecap: square; + stroke-linejoin: miter; + stroke: @color-danger; + + .theme-dark & { + fill: darken(@color-danger, 5%); + stroke: darken(@color-danger, 5%); + } + } + + /* + Arrowheads are applied via an inline style in index.html. There seems to be + disagreement on the proper way to implement this, but it does not work in + an external stylesheet in Firefox. + */ +} + +// Cheat the most zoomed-out view a bit bolder. + +#storyEditView.zoom-small .links path { + stroke-width: 3px; +} diff --git a/src/story-edit-view/link-arrows/link-arrow.js b/src/story-edit-view/link-arrows/link-arrow.js new file mode 100644 index 000000000..225eb4e3b --- /dev/null +++ b/src/story-edit-view/link-arrows/link-arrow.js @@ -0,0 +1,215 @@ +const Vue = require('vue'); +const rect = require('../../common/rect'); + +/* +Renders an SVG arc. This expects an object with start, radius, largeArc, +rotation, sweep, and end properties. +*/ + +function arc(props) { + const { start, radius, end, largeArc, sweep, rotation } = props; + + return 'M' + start.left + ',' + start.top + + ' A' + radius.x + ',' + radius.y + + ' ' + (rotation || '0') + + (largeArc ? ' 1' : ' 0') + + (sweep ? ' 1 ' : ' 0 ') + + end.left + ',' + end.top; +} + +module.exports = Vue.extend({ + template: '', + + props: { + /* + The possible anchor points to use as the start of this connector. This + should have top, left, right, and bottom properties, each an (x, y) + array. + */ + + start: { + type: Object, + required: true + }, + + /* + The possible anchor points to use as the end of this connector. This + should have top, left, right, and bottom properties, each an (x, y) + array. + + It's OK for this to be null or undefined; in those cases, we draw a + broken link indicator. + */ + + end: { + type: Object, + required: false + } + }, + + computed: { + /* + The marker to use at the end of the line, usually an arrowhead. + */ + + markerType() { + const { start, end } = this; + + if (!start) { + console.warn('Start position has no anchor points'); + return; + } + + /* Special case broken links. */ + + if (!end) { + return 'broken'; + } + + return 'arrow'; + }, + + /* + The actual SVG path d attribute that will be drawn onscreen. For self + links, we draw a circle pointing back ath the start; for broken links, + a short arrow drooping down and to the right. + + For normal links between passages, we connect the two closest points + between the passage sides (as determined by finding intersections with + the rectangles with a line drawn from center to center). We draw this + with a flattened arc, to make it easier to distinguish between links + between passages with the same horizontal or vertical position (which + would otherwise be overlapping flat lines). + */ + + pathString() { + const { start, end } = this; + + /* + Special case self-links to draw an arc from the left anchor to the + top. + */ + + if (start === end) { + const radius = 0.4 * Math.min(start.width, start.height); + + return arc({ + start: { + left: start.left, + top: start.top + start.height / 2 + }, + end: { + left: end.left, + top: end.top + }, + radius: { + x: radius, + y: radius + }, + sweep: true, + largeArc: true + }); + } + + /* + Special case broken links to show a short arc down. + */ + + if (!end) { + return arc({ + start: { + left: start.left + start.width, + top: start.top + start.height / 2 + }, + end: { + left: start.left + start.width * 1.5, + top: start.top + start.height + }, + radius: { + x: start.width / 2, + y: start.height / 2 + }, + sweep: true + }); + } + + /* + Find the start and end points to draw. + */ + + let startPt = { + left: start.left + start.width / 2, + top: start.top + start.height / 2 + }; + let endPt = { + left: end.left + end.width / 2, + top: end.top + end.height / 2 + }; + + endPt = rect.intersectionWithLine(end, startPt, endPt); + /* + intersectionWithLine can return undefined if the other passage is + overlapping this passage (such as when it's being dragged over). + In that case, return no path. + */ + if (!endPt) { + return ''; + } + + startPt = rect.intersectionWithLine(start, startPt, endPt); + if (!startPt) { + return ''; + } + + /* + The horizontal radius of our arc is proportional to the distance + the line will travel. + */ + + const lineDist = Math.sqrt( + Math.pow(startPt.left - endPt.left, 2) + + Math.pow(startPt.top - endPt.top, 2) + ); + + /* + Rotate the arc so that its underside will always face downward. + We cheat vertical lines so that their undersides face right -- an + aesthetic choice, and so that bidirectional links line up. + */ + + let sweep = startPt.left < endPt.left; + + if (startPt.left === endPt.left && startPt.top < endPt.top) { + sweep = true; + } + + /* + The arc will be rotated to match the angle of the line. Here, zero + degrees indicates the arc runs horizontally left to right. This + formula is taken from https://gist.github.com/conorbuck/2606166 -- + unfortunately for this use case, SVG requires degrees, not radians. + */ + + const lineAngle = Math.atan2( + endPt.top - startPt.top, + endPt.left - startPt.left + ) * 180 / Math.PI; + + /* + The Y radius is another aesthetic choice. The lower the ratio, the + less curved the lines become. + */ + + return arc({ + start: startPt, + end: endPt, + radius: { + x: lineDist, + y: lineDist * 0.75 + }, + rotation: lineAngle, + sweep + }); + } + } +}); diff --git a/src/story-edit-view/marquee-selector/index.html b/src/story-edit-view/marquee-selector/index.html new file mode 100644 index 000000000..303c0ef21 --- /dev/null +++ b/src/story-edit-view/marquee-selector/index.html @@ -0,0 +1 @@ +
diff --git a/src/story-edit-view/marquee-selector/index.js b/src/story-edit-view/marquee-selector/index.js new file mode 100644 index 000000000..2781269a2 --- /dev/null +++ b/src/story-edit-view/marquee-selector/index.js @@ -0,0 +1,233 @@ +// A marquee selection tool for passage items. + +const Vue = require('vue'); +const domEvents = require('../../vue/mixins/dom-events'); +const rect = require('../../common/rect'); +const { selectPassages } = require('../../data/actions/passage'); + +require('../../ui/ie-mouse-event-polyfill'); +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + story: { + type: Object, + required: true + } + }, + + data: () => ({ + visible: false, + + /* + Where the selection began, and where the user is currently pointing. + */ + + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + + /* + Is this an additive selection, e.g. keeping what was selected in + place? + */ + + additive: false, + originallySelected: [] + }), + + computed: { + /* + The rectangle encompasing this selection in screen coordinates. + */ + + screenRect() { + if (!this.visible) { + return; + } + + let result = {}; + + if (this.startX < this.currentX) { + result.left = this.startX; + result.width = this.currentX - this.startX; + } + else { + result.left = this.currentX; + result.width = this.startX - this.currentX; + } + + if (this.startY < this.currentY) { + result.top = this.startY; + result.height = this.currentY - this.startY; + } + else { + result.top = this.currentY; + result.height = this.startY - this.currentY; + } + + return result; + }, + + /* + The rectangle encompasing this selection in logical space -- this, + factoring in the story's zoom level. + */ + + logicalRect() { + const { zoom } = this.story; + + if (!this.screenRect) { + return; + } + + return { + top: this.screenRect.top / zoom, + left: this.screenRect.left / zoom, + width: this.screenRect.width / zoom, + height: this.screenRect.height / zoom + }; + }, + + /* + How the above translates into CSS properties. + */ + + css() { + if (!this.screenRect) { + return { display: 'none' }; + } + + return { + left: this.screenRect.left + 'px', + top: this.screenRect.top + 'px', + width: this.screenRect.width + 'px', + height: this.screenRect.height + 'px' + }; + } + }, + + methods: { + startDrag(e) { + /* + Only listen to clicks with the left mouse button on the background + SVG element (e.g. links) and only when the is not in + space-bar scroll mode (see vue/directives/mouse-scrolling). + */ + + if (e.target.nodeName !== 'svg' || e.which !== 1 || + document.body.classList.contains('mouseScrollReady')) { + return; + } + + /* + If the user is holding down shift or control, then this is an + additive selection. Remember the currently selected passage + components for later. + */ + + this.additive = e.shiftKey || e.ctrlKey; + + if (this.additive) { + this.originallySelected = this.story.passages.filter( + p => p.selected + ); + } + + this.visible = true; + document.body.classList.add('marqueeing'); + + /* + Set up coordinates initially. clientX and clientY don't take + into account the window's scroll position. + */ + + this.startX = this.currentX = e.clientX + window.pageXOffset; + this.startY = this.currentY = e.clientY + window.pageYOffset; + + /* + Set up event listeners to continue the drag. + */ + + this.on(this.$parent.$el, 'mousemove', this.followDrag); + this.on(this.$parent.$el, 'mouseup', this.endDrag); + }, + + followDrag(e) { + /* + It appears we get a stray movement event in the process of + ending a drag-- ignore this case. + */ + + if (!this.logicalRect) { + return; + } + + /* + As noted above, clientX and clientY don't take into account the + window's scroll position. + */ + + this.currentX = e.clientX + window.pageXOffset; + this.currentY = e.clientY + window.pageYOffset; + + this.selectPassages(this.story.id, p => { + if (this.additive && + this.originallySelected.indexOf(p) !== -1) { + return true; + } + + return rect.intersects(this.logicalRect, p); + }); + }, + + endDrag(e) { + /* Only listen to the left mouse button. */ + + if (e.which !== 1) { + return; + } + + /* + If the user never actually moved the mouse (e.g. this was a + single click in the story map), deselect everything. + */ + + if (this.screenRect && this.screenRect.width === 0 && + this.screenRect.height === 0) { + this.selectPassages(this.story.id, () => false); + } + + this.visible = false; + document.querySelector('body').classList.remove('marqueeing'); + + /* Deactivate the event listeners we had been using. */ + + this.off(this.$el.parentNode, 'mousemove'); + this.off(this.$el.parentNode, 'mouseup'); + + /* + Because this component's $el has been re-rendered (entirely + replaced) due to startDrag() and followDrag() altering the data, + this mouseup event won't result in a click event bubbling up from + this. To alleviate this, we generate a synthetic MouseEvent now, + using this mouseup event's values. + */ + + this.$el.dispatchEvent(new MouseEvent('click', e)); + } + }, + + ready() { + this.on(this.$el.parentNode, 'mousedown', this.startDrag); + }, + + vuex: { + actions: { selectPassages } + }, + + mixins: [domEvents] +}); \ No newline at end of file diff --git a/src/story-edit-view/marquee-selector/index.less b/src/story-edit-view/marquee-selector/index.less new file mode 100644 index 000000000..c1a7feb2c --- /dev/null +++ b/src/story-edit-view/marquee-selector/index.less @@ -0,0 +1,18 @@ +@import '../../common/colors.less'; +@import '../../common/metrics.less'; + +body.marqueeing * { + cursor: crosshair !important; +} + +body.marqueeing .drop { + display: none !important; +} + +#storyEditView .marquee { + z-index: 3; + position: absolute; + border: @len-hairline solid lighten(@color-link, 40%); + border-radius: 2px; + background: fadeout(@color-link, 95%); +} diff --git a/src/story-edit-view/passage-item/index.html b/src/story-edit-view/passage-item/index.html new file mode 100644 index 000000000..d0b561eeb --- /dev/null +++ b/src/story-edit-view/passage-item/index.html @@ -0,0 +1,19 @@ +
+
+
+
+
+ +

+ + {{ passage.name }} +

+ +

+ {{{ excerpt }}} +

+
+ + +
diff --git a/src/story-edit-view/passage-item/index.js b/src/story-edit-view/passage-item/index.js new file mode 100644 index 000000000..27bb88c35 --- /dev/null +++ b/src/story-edit-view/passage-item/index.js @@ -0,0 +1,435 @@ +/* +A single passage in the story map. +*/ + +const escape = require('lodash.escape'); +const Vue = require('vue'); +const PassageEditor = require('../../editors/passage'); +const { confirm } = require('../../dialogs/confirm'); +const domEvents = require('../../vue/mixins/dom-events'); +const locale = require('../../locale'); +const { hasPrimaryTouchUI } = require('../../ui'); +const { + createNewlyLinkedPassages, + deletePassage, + selectPassages, + updatePassage +} = + require('../../data/actions/passage'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + passage: { + type: Object, + required: true + }, + + parentStory: { + type: Object, + required: true + }, + + /* The regular expression we use to highlight ourselves or not. */ + + highlightRegexp: { + type: RegExp, + required: false + }, + + /* How dragged passages should be offset, in screen coordinates. */ + + screenDragOffsetX: { + type: Number, + required: true + }, + + screenDragOffsetY: { + type: Number, + required: true + }, + + /* The story's grid size, in pixels. */ + + gridSize: { + type: Number, + required: true + } + }, + + data: () => ({ + /* + To speed initial load, we don't create a contextual menu until the user + actually points to us. This records whether a menu component should be + added. + */ + + needsMenu: false, + + /* + Where a drag on us began, in screen coordinates. Only the passage that + is dragged by the user tracks this. + */ + + screenDragStartX: 0, + screenDragStartY: 0 + }), + + computed: { + /* + The position to use when drawing link arrows to this passage. This does + *not* factor in the story's zoom level, as the link arrow component + will be doing that itself. + */ + + linkPosition() { + let result = { + top: this.passage.top, + left: this.passage.left, + width: this.passage.width, + height: this.passage.height + }; + + if (this.passage.selected) { + result.left += this.screenDragOffsetX / this.parentStory.zoom; + result.top += this.screenDragOffsetY / this.parentStory.zoom; + } + + return result; + }, + + isStart() { + return this.parentStory.startPassage === this.passage.id; + }, + + cssPosition() { + const { zoom } = this.parentStory; + const { left, top, width, height } = this.passage; + + return { + left: left * zoom + 'px', + top: top * zoom + 'px', + width: width * zoom + 'px', + height: height * zoom + 'px', + transform: this.passage.selected ? + 'translate(' + this.screenDragOffsetX + 'px, ' + + this.screenDragOffsetY + 'px)' + : null + }; + }, + + cssClasses() { + let result = []; + + if (this.passage.selected) { + result.push('selected'); + } + + if (this.highlightRegexp && ( + this.highlightRegexp.test(this.passage.name) || + this.highlightRegexp.test(this.passage.text))) { + result.push('highlighted'); + } + + return result; + }, + + tagColors() { + let result = []; + + this.passage.tags.forEach(t => { + if (this.parentStory.tagColors[t]) { + result.push(this.parentStory.tagColors[t]); + } + }); + + return result; + }, + + excerpt() { + if (this.passage.text.length < 100) { + return escape(this.passage.text); + } + + return escape(this.passage.text.substr(0, 99)) + '…'; + }, + }, + + methods: { + delete() { + this.deletePassage(this.parentStory.id, this.passage.id); + }, + + edit() { + /* + Close any existing passage menu -- it may still be visible if the + user double-clicked. + */ + + this.$broadcast('drop-down-close'); + + const oldText = this.passage.text; + const afterEdit = () => { + this.createNewlyLinkedPassages( + this.parentStory.id, + this.passage.id, + oldText, + this.gridSize + ); + }; + + /* + The promise below is rejected if the user clicks outside the editor, + so we need to handle both resolution and rejection of the promise. + */ + + new PassageEditor({ + data: { + passageId: this.passage.id, + storyId: this.parentStory.id, + origin: this.$el + }, + store: this.$store, + storyFormat: { + name: this.parentStory.storyFormat, + version: this.parentStory.storyFormatVersion + } + }) + .$mountTo(document.body) + .then(afterEdit) + .catch(afterEdit); + }, + + startDrag(e) { + /* Only listen to the left mouse button. */ + + if (e.type === 'mousedown' && e.which !== 1) { + return; + } + + if (e.shiftKey || e.ctrlKey) { + /* + Shift- or control-clicking toggles our selected status, but + doesn't affect any other passage's selected status. If the shift + or control key was not held down, select only ourselves. + */ + + this.selectPassages(this.parentStory.id, p => { + if (p === this.passage) { + return !p.selected; + } + + return p.selected; + }); + } + else if (!this.passage.selected) { + /* + If we are newly-selected and the shift or control keys are not + held, deselect everything else. The check for newly-selected + status is needed so that if the user is beginning a drag, we + don't deselect everything right away. The check for that occurs + in the mouse up handler, above. + */ + + this.selectPassages( + this.parentStory.id, + p => p === this.passage + ); + } + + /* Begin tracking a potential drag. */ + + const srcPoint = (e.type === 'mousedown') ? e : e.touches[0]; + + this.screenDragStartX = srcPoint.clientX + window.pageXOffset; + this.screenDragStartY = srcPoint.clientY + window.pageYOffset; + + if (hasPrimaryTouchUI()) { + this.on(window, 'touchmove', this.followDrag, { passive: false }); + this.on(window, 'touchend', this.stopDrag); + } + else { + this.on(window, 'mousemove', this.followDrag, { passive: false }); + this.on(window, 'mouseup', this.stopDrag); + } + + document.querySelector('body').classList.add('draggingPassages'); + }, + + followDrag(e) { + const srcPoint = (e.type === 'mousemove') ? e : e.touches[0]; + + this.$dispatch( + 'passage-drag', + srcPoint.clientX + window.pageXOffset - this.screenDragStartX, + srcPoint.clientY + window.pageYOffset - this.screenDragStartY + ); + + /* + Block scrolling if we're following touch events -- otherwise, the + browser will treat it as though the user is dragging to scroll + around the screen. + */ + + if (e.type === 'touchmove') { + e.preventDefault(); + } + }, + + stopDrag(e) { + /* Only listen to the left mouse button. */ + + if (e.type === 'mouseup' && e.which !== 1) { + return; + } + + /* Remove event listeners set up at the start of the drag. */ + + if (hasPrimaryTouchUI()) { + this.off(window, 'touchmove'); + this.off(window, 'touchend'); + } + else { + this.off(window, 'mousemove'); + this.off(window, 'mouseup'); + } + + document.querySelector('body').classList.remove('draggingPassages'); + + /* + If we haven't actually been moved and the shift or control key were + not held down, select just this passage only. This handles the + scenario where the user clicks a single passage when several were + selected. We don't want to immediately deselect them all, as the + user may be starting a drag; but now that we know for sure that the + user didn't intend this, we select just this one. + */ + + if (this.dragXOffset === 0 && this.dragYOffset === 0) { + if (!(e.ctrlKey || e.shiftKey)) { + this.selectPassages(this.parentStory.id, p => p !== this); + } + } + else { + /* + touchend events do not include client coordinates, but mouseup + events do. + */ + + if (e.type === 'mouseup') { + this.$dispatch( + 'passage-drag-complete', + e.clientX + window.pageXOffset - this.screenDragStartX, + e.clientY + window.pageYOffset - this.screenDragStartY, + this + ); + } + else { + this.$dispatch( + 'passage-drag-complete', + this.screenDragOffsetX, + this.screenDragOffsetY, + this + ); + } + } + } + }, + + events: { + 'passage-edit'() { + this.edit(); + }, + + 'passage-delete'(skipConfirmation) { + if (skipConfirmation) { + this.delete(); + } + else { + let message = locale.say( + 'Are you sure you want to delete “%s”? ' + + 'This cannot be undone.', + escape(this.passage.name) + ); + + if (!hasPrimaryTouchUI()) { + message += '

' + locale.say( + '(Hold the Shift key when deleting to skip this message.)' + ); + } + + confirm({ + message, + buttonLabel: + ' ' + locale.say('Delete'), + buttonClass: + 'danger', + }) + .then(() => this.delete()); + } + }, + + 'passage-drag-complete'(xOffset, yOffset, emitter) { + /* + We have to check whether we originally emitted this event, as + $dispatch triggers first on ourselves, then our parent. + */ + + if (this.passage.selected && emitter !== this) { + /* + Because the x and y offsets are in screen coordinates, we need + to convert back to logical space. + */ + + this.updatePassage( + this.parentStory.id, + this.passage.id, + { + top: this.passage.top + yOffset + / this.parentStory.zoom, + left: this.passage.left + xOffset + / this.parentStory.zoom + } + ); + + /* + Ask our parent to position us so we overlap no unselected + passages. We need to stipulate that passages are not selected so + that we don't inadvertantly collide with other passages being + dragged. + */ + + this.$dispatch( + 'passage-position', + this.passage, + { ignoreSelected: true } + ); + } + + /* + Tell our menu that our position has changed, so that it in turn can + change its position. + */ + + this.$broadcast('drop-down-reposition'); + } + }, + + components: { + 'passage-menu': require('./passage-menu') + }, + + vuex: { + actions: { + createNewlyLinkedPassages, + selectPassages, + updatePassage, + deletePassage + } + }, + + mixins: [domEvents] +}); diff --git a/src/story-edit-view/passage-item/index.less b/src/story-edit-view/passage-item/index.less new file mode 100644 index 000000000..b9655bffa --- /dev/null +++ b/src/story-edit-view/passage-item/index.less @@ -0,0 +1,146 @@ +@import '../../common/colors.less'; +@import '../../common/metrics.less'; +@import '../../common/depth.less'; + +#storyEditView .passage { + position: absolute; + background: @color-paper; + cursor: default; + font-size: 85%; + padding: @len-small; + border: 1px solid transparent; + border-radius: 2px; + overflow: hidden; + .shadow-small; + + p { + margin: 0; + } + + .title { + position: relative; + z-index: 3; + font-weight: bold; + } + + .excerpt { + position: relative; + z-index: 1; + color: lighten(@color-text, 45%); + } + + .tags { + position: absolute; + z-index: 2; + top: 0; + left: 0; + bottom: 0; + width: @len-small * 0.75; + display: flex; + flex-direction: column; + + div { + flex-grow: 1; + flex-shrink: 1; + margin: @len-hairline; + border-radius: (@len-small * 0.75) / 2; + + & + div { + margin-top: 0; + } + + &.red { + background: @color-tag-red; + } + + &.orange { + background: @color-tag-orange; + } + + &.yellow { + background: @color-tag-yellow; + } + + &.green { + background: @color-tag-green; + } + + &.blue { + background: @color-tag-blue; + } + + &.purple { + background: @color-tag-purple; + } + } + } + + &.selected { + border: @len-hairline solid lighten(@color-link, 30%); + background: lighten(@color-link, 55%); + } + + &.highlighted { + border: @len-hairline solid lighten(@color-highlight, 15%); + background: lighten(@color-highlight, 40%); + } + + &.selected.highlighted { + border: @len-hairline solid mix(lighten(@color-highlight, 15%), lighten(@color-link, 30%)); + background: mix(lighten(@color-highlight, 40%), lighten(@color-link, 55%)); + } + + .theme-dark & { + background: @color-paper-dark; + } +} + +#storyEditView.zoom-medium .passage { + padding: @len-tiny; + + .frame { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + } + + .title { + font-weight: normal; + text-align: center; + max-height: 100%; + line-height: 100%; + + .badge-create, .badge-danger { + display: block; + margin: 0 auto; + } + } + + .excerpt { + display: none; + } +} + +#storyEditView.zoom-small .passage { + padding: 0; + + .frame { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + background: linear-gradient(to bottom, transparent 0, lighten(@color-text, 60%) 1px, transparent 1px); + background-size: 3px 3px; + margin: 2px; + + .theme-dark & { + background: linear-gradient(to bottom, transparent 0, darken(@color-text-dark, 30%) 1px, transparent 1px); + background-size: 3px 3px; + } + } + + .title .text, .excerpt { + display: none; + } +} diff --git a/src/story-edit-view/passage-item/passage-menu/index.html b/src/story-edit-view/passage-item/passage-menu/index.html new file mode 100644 index 000000000..99535730a --- /dev/null +++ b/src/story-edit-view/passage-item/passage-menu/index.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + diff --git a/src/story-edit-view/passage-item/passage-menu/index.js b/src/story-edit-view/passage-item/passage-menu/index.js new file mode 100644 index 000000000..8883852ee --- /dev/null +++ b/src/story-edit-view/passage-item/passage-menu/index.js @@ -0,0 +1,140 @@ +/* A contextual menu that appears when the user points at a passage. */ + +const Vue = require('vue'); +const { updatePassage } = require('../../../data/actions/passage'); +const { updateStory } = require('../../../data/actions/story'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + passage: { + type: Object, + required: true + }, + + parentStory: { + type: Object, + required: true + } + }, + + data: () => ({ + expanded: false + }), + + computed: { + isStart() { + return this.parentStory.startPassage === this.passage.id; + }, + + size() { + if (this.passage.width === 100 && this.passage.height === 100) { + return 'small'; + } + + if (this.passage.width === 200 && this.passage.height === 100) { + return 'wide'; + } + + if (this.passage.width === 100 && this.passage.height === 200) { + return 'tall'; + } + + if (this.passage.width === 200 && this.passage.height === 200) { + return 'large'; + } + } + }, + + watch: { + expanded() { + this.$broadcast('drop-down-reposition'); + } + }, + + methods: { + edit() { + this.$dispatch('passage-edit'); + }, + + delete(e) { + this.$dispatch('passage-delete', e.shiftKey); + }, + + test() { + window.open( + '#stories/' + this.parentStory.id + '/test/' + this.passage.id, + 'twinestory_test_' + this.parentStory.id + ); + }, + + toggleExpanded() { + this.expanded = !this.expanded; + }, + + setAsStart() { + this.updateStory( + this.parentStory.id, + { startPassage: this.passage.id } + ); + }, + + setSize(value) { + switch (value) { + case 'small': + this.updatePassage( + this.parentStory.id, + this.passage.id, + { width: 100, height: 100 } + ); + break; + + case 'wide': + this.updatePassage( + this.parentStory.id, + this.passage.id, + { width: 200, height: 100 } + ); + break; + + case 'tall': + this.updatePassage( + this.parentStory.id, + this.passage.id, + { width: 100, height: 200 } + ); + break; + + case 'large': + this.updatePassage( + this.parentStory.id, + this.passage.id, + { width: 200, height: 200 } + ); + break; + + default: + throw new Error(`Don't know how to set size ${value}`); + } + + this.$dispatch('passage-position', this.passage, {}); + } + }, + + events: { + 'drop-down-opened'() { + this.expanded = false; + } + }, + + components: { + 'drop-down': require('../../../ui/drop-down') + }, + + vuex: { + actions: { updatePassage, updateStory } + } +}); diff --git a/src/story-edit-view/passage-item/passage-menu/index.less b/src/story-edit-view/passage-item/passage-menu/index.less new file mode 100644 index 000000000..d32dacd13 --- /dev/null +++ b/src/story-edit-view/passage-item/passage-menu/index.less @@ -0,0 +1,7 @@ +@import '../../../common/colors.less'; +@import '../../../common/metrics.less'; +@import '../../../common/depth.less'; + +.drop.passage i.fa { + font-size: 150%; +} \ No newline at end of file diff --git a/src/story-edit-view/story-toolbar/index.html b/src/story-edit-view/story-toolbar/index.html new file mode 100644 index 000000000..a33699476 --- /dev/null +++ b/src/story-edit-view/story-toolbar/index.html @@ -0,0 +1,45 @@ +
+
+ + + +
+ +
+ + + + + + + + + + + + + + + +
+
diff --git a/src/story-edit-view/story-toolbar/index.js b/src/story-edit-view/story-toolbar/index.js new file mode 100644 index 000000000..2bf5659d9 --- /dev/null +++ b/src/story-edit-view/story-toolbar/index.js @@ -0,0 +1,62 @@ +// The toolbar at the bottom of the screen with editing controls. + +const Vue = require('vue'); +const zoomMappings = require('../zoom-settings'); +const { updateStory } = require('../../data/actions/story'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + story: { + type: Object, + required: true + }, + + zoomDesc: { + type: String, + required: true + } + }, + + components: { + 'story-menu': require('./story-menu'), + 'story-search': require('./story-search') + }, + + methods: { + setZoom(description) { + this.updateStory( + this.story.id, + { zoom: zoomMappings[description] } + ); + }, + + test() { + window.open( + '#stories/' + this.story.id + '/test', + 'twinestory_test_' + this.story.id + ); + }, + + play() { + window.open( + '#stories/' + this.story.id + '/play', + 'twinestory_play_' + this.story.id + ); + }, + + addPassage() { + this.$dispatch('passage-create'); + } + }, + + vuex: { + actions: { + updateStory + } + } +}); + diff --git a/src/story-edit-view/story-toolbar/index.less b/src/story-edit-view/story-toolbar/index.less new file mode 100644 index 000000000..ebcdcd599 --- /dev/null +++ b/src/story-edit-view/story-toolbar/index.less @@ -0,0 +1,86 @@ +@import '../../common/colors.less'; +@import '../../common/depth.less'; + +#storyEditView .toolbar.main { + z-index: 5; + position: fixed; + overflow: visible; + bottom: 0; + left: 0; + width: 100%; + height: 3.5em; + background-color: @color-paper; + user-select: none; + .shadow-large; + + .left { + float: left; + + button { + float: none; + } + } + + .right { + float: right; + + button { + height: 3.5em; + padding-left: 1em; + padding-right: 1em; + } + } + + .home { + font-size: 125%; + padding-left: 0.75em; + padding-right: 0.325em; + } + + .storyName { + min-width: 10em; + max-width: 18em; + overflow: hidden; + text-overflow: ellipsis; + text-align: left; + font: 150% "Nunito Light", sans-serif; + height: 2.4em; + white-space: nowrap; + padding: 0em 0.325em; + } + + .searchContainer { + float: left; + position: relative; + top: 0.5em; + margin-right: 1em; + + input { + display: inline; + width: 11em; + padding-right: 2.25em; + } + + button { + position: absolute; + top: 0; + right: 0; + padding: 0.7em; + height: 2.5em; + + &:hover { + background: transparent; + } + } + } + + .theme-dark & { + background-color: @color-paper-dark; + } +} + +.fullSlideLeft #storyEditView .toolbar.main +{ + transform: translate(100%, 0); + animation: 0.5s fullSlideUp 0.6s forwards; +} diff --git a/src/story-edit-view/story-toolbar/story-menu/index.html b/src/story-edit-view/story-toolbar/story-menu/index.html new file mode 100644 index 000000000..3af4a8163 --- /dev/null +++ b/src/story-edit-view/story-toolbar/story-menu/index.html @@ -0,0 +1,41 @@ + + + diff --git a/src/story-edit-view/story-toolbar/story-menu/index.js b/src/story-edit-view/story-toolbar/story-menu/index.js new file mode 100644 index 000000000..a69a48961 --- /dev/null +++ b/src/story-edit-view/story-toolbar/story-menu/index.js @@ -0,0 +1,128 @@ +// A drop-down menu with miscellaneous editing options for a story. + +const escape = require('lodash.escape'); +const Vue = require('vue'); +const FormatDialog = require('../../../dialogs/story-format'); +const JavaScriptEditor = require('../../../editors/javascript'); +const StatsDialog = require('../../../dialogs/story-stats'); +const StylesheetEditor = require('../../../editors/stylesheet'); +const { loadFormat } = require('../../../data/actions/story-format'); +const locale = require('../../../locale'); +const { prompt } = require('../../../dialogs/prompt'); +const { publishStoryWithFormat } = require('../../../data/publish'); +const save = require('../../../file/save'); +const { selectPassages } = require('../../../data/actions/passage'); +const { updateStory } = require('../../../data/actions/story'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + story: { + type: Object, + required: true + } + }, + + methods: { + editScript(e) { + /* + We have to manually inject the Vuex store, since the editors are + mounted outside the app scope. + */ + + new JavaScriptEditor({ + data: { storyId: this.story.id, origin: e.target }, + store: this.$store + }).$mountTo(document.body); + }, + + editStyle(e) { + new StylesheetEditor({ + data: { storyId: this.story.id, origin: e.target }, + store: this.$store + }).$mountTo(document.body); + }, + + renameStory(e) { + prompt({ + message: + locale.say( + 'What should “%s” be renamed to?', + escape(this.story.name) + ), + buttonLabel: + ' ' + locale.say('Rename'), + response: + this.story.name, + blankTextError: + locale.say('Please enter a name.'), + origin: + e.target + }) + .then(text => this.updateStory(this.story.id, { name: text })); + }, + + selectAll() { + this.selectPassages(this.story.id, () => true); + }, + + proofStory() { + window.open( + '#!/stories/' + this.story.id + '/proof', + 'twinestory_proof_' + this.story.id + ); + }, + + publishStory() { + this.loadFormat( + this.story.storyFormat, + this.story.storyFormatVersion + ).then(format => { + save( + publishStoryWithFormat(this.appInfo, this.story, format), + this.story.name + '.html' + ); + }); + }, + + storyStats(e) { + new StatsDialog({ + data: { storyId: this.story.id, origin: e.target }, + store: this.$store + }).$mountTo(document.body); + }, + + changeFormat(e) { + new FormatDialog({ + data: { storyId: this.story.id, origin: e.target }, + store: this.$store + }).$mountTo(document.body); + }, + + toggleSnap() { + this.updateStory( + this.story.id, + { snapToGrid: !this.story.snapToGrid } + ); + } + }, + + components: { + 'drop-down': require('../../../ui/drop-down') + }, + + vuex: { + actions: { + loadFormat, + selectPassages, + updateStory + }, + + getters: { + allFormats: state => state.storyFormat.formats, + appInfo: state => state.appInfo, + defaultFormatName: state => state.pref.defaultFormat + } + } +}); diff --git a/src/story-edit-view/story-toolbar/story-search/index.html b/src/story-edit-view/story-toolbar/story-search/index.html new file mode 100644 index 000000000..510f613c7 --- /dev/null +++ b/src/story-edit-view/story-toolbar/story-search/index.html @@ -0,0 +1,6 @@ + + + + diff --git a/src/story-edit-view/story-toolbar/story-search/index.js b/src/story-edit-view/story-toolbar/story-search/index.js new file mode 100644 index 000000000..1647d52e9 --- /dev/null +++ b/src/story-edit-view/story-toolbar/story-search/index.js @@ -0,0 +1,54 @@ +/* +Shows a quick search field, which changes passage highlights, and a button to +show the search modal dialog. +*/ + +const Vue = require('vue'); +const SearchDialog = require('../../../dialogs/story-search'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + story: { + type: Object, + required: true + } + }, + + data: () => ({ + search: '' + }), + + watch: { + 'search'() { + /* + Convert the entered text to regexp, escaping text, and tell our + parent to change its highlight criteria. This is cribbed from + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions. + */ + + const value = new RegExp( + this.search.replace(/([.*+?^${}()|\[\]\/\\])/g, '\\$1'), 'i' + ); + + this.$dispatch( + 'highlight-regexp-change', + (value.source !== '(?:)') ? value : null + ); + } + }, + + methods: { + showModal(e) { + new SearchDialog({ + data: { + story: this.story, + search: this.search, + origin: e.target + }, + store: this.$store + }).$mountTo(document.body); + } + } +}); diff --git a/src/story-edit-view/zoom-settings.js b/src/story-edit-view/zoom-settings.js new file mode 100644 index 000000000..43e199cc1 --- /dev/null +++ b/src/story-edit-view/zoom-settings.js @@ -0,0 +1,9 @@ +// This maps numeric zoom settings (that are in our model) to nice adjectives +// that we use in our CSS. Because this is used by both the container view and +// the toolbar, it's in a separate module to avoid a circular dependency. + +module.exports = { + big: 1, + medium: 0.6, + small: 0.25 +}; diff --git a/src/story-edit-view/zoom-settings.spec.js b/src/story-edit-view/zoom-settings.spec.js new file mode 100644 index 000000000..5a3190793 --- /dev/null +++ b/src/story-edit-view/zoom-settings.spec.js @@ -0,0 +1,16 @@ +const { expect } = require('chai'); +const zoomSettings = require('./zoom-settings'); + +describe('zoom settings', () => { + it('exports a big property', () => { + expect(zoomSettings.big).to.be.a('number'); + }); + + it('exports a medium property', () => { + expect(zoomSettings.medium).to.be.a('number'); + }); + + it('exports a small property', () => { + expect(zoomSettings.small).to.be.a('number'); + }); +}); diff --git a/src/story-list-view/index.html b/src/story-list-view/index.html new file mode 100644 index 000000000..48a3f0ff8 --- /dev/null +++ b/src/story-list-view/index.html @@ -0,0 +1,35 @@ +
+ {{ 'Drop a story file to import' | say}} + + + +
+

{{ storyCountDesc }}

+ +

+ + + + + + + +

+
+ +
+

+ {{ 'There are no stories saved in Twine right now. To get started, you can either create a new story or import an existing one from a file.' | say }} +

+ + +
+
+ diff --git a/src/story-list-view/index.js b/src/story-list-view/index.js new file mode 100644 index 000000000..4069663b4 --- /dev/null +++ b/src/story-list-view/index.js @@ -0,0 +1,201 @@ +/** + Shows a list of stories. Each list item is managed by a StoryItemView. + + @class StoryListView + @extends Backbone.Marionette.CompositeView +**/ + +'use strict'; +const Vue = require('vue'); +const locale = require('../locale'); +const { check: checkForAppUpdate } = require('../dialogs/app-update'); +const { check: checkForDonation } = require('../dialogs/app-donation'); +const ImportDialog = require('../dialogs/story-import'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + appearFast: { + type: Boolean, + default: false + }, + + previouslyEditing: { + type: String, + default: null + } + }, + + data: () => ({ + /* + Set the default story list sorting to 'name', 'asc' (i.e. A → Z). + */ + + storyOrder: 'name', + storyOrderDir: 'asc' + }), + + computed: { + sortedStories() { + /* + If we have no stories to sort, don't worry about it. + */ + + if (this.stories.length === 0) { + return this.stories; + } + + switch (this.storyOrder) { + case 'name': + return this.stories.sort((a, b) => { + if (a.name > b.name) { + return this.storyOrderDir === 'asc' ? 1 : -1; + } + + if (a.name < b.name) { + return this.storyOrderDir === 'asc' ? -1 : 1; + } + + return 0; + }); + + case 'lastUpdate': + return this.stories.sort((a, b) => { + const aTime = a.lastUpdate.getTime(); + const bTime = b.lastUpdate.getTime(); + + if (aTime > bTime) { + return this.storyOrderDir === 'asc' ? 1 : -1; + } + + if (aTime < bTime) { + return this.storyOrderDir === 'asc' ? -1 : 1; + } + + return 0; + }); + + default: + throw new Error( + `Don't know how to sort by "${this.storyOrder}"` + ); + } + }, + + storyCountDesc() { + return locale.sayPlural( + '%d Story', + '%d Stories', + this.stories.length + ); + } + }, + + watch: { + storyCountDesc: { + handler(value) { + document.title = value; + }, + + immediate: true + } + }, + + ready() { + /* If we were asked to appear fast, we do nothing. */ + + if (this.appearFast) { + return; + } + + /* + Otherwise, we check to see if we should ask for a donation, and then an + app update... + */ + + if (!this.appearFast && !checkForDonation(this.$store)) { + checkForAppUpdate(this.$store); + } + + /* + And if the user had been previously editing a story (as the router will + tell us), we broadcast an event so that an appropriate child component + can set up a zoom transition back into itself. + */ + + if (this.previouslyEditing) { + this.$broadcast('previously-editing', this.previouslyEditing); + } + }, + + methods: { + sortByDate() { + /* + If the last story order was 'lastUpdate', toggle the story order + direction. Elsewise, default to 'desc' (i.e. newest -> oldest). + */ + + if (this.storyOrder === 'lastUpdate') { + this.storyOrderDir = this.storyOrderDir === 'asc' ? 'desc' : 'asc'; + } + else { + this.storyOrderDir = 'desc'; + } + + this.storyOrder = 'lastUpdate'; + }, + + sortByName() { + /* + If the last story order was 'name', toggle the story order + direction. Elsewise, default to 'asc' (i.e. A -> Z). + */ + + if (this.storyOrder === 'name') { + this.storyOrderDir = this.storyOrderDir === 'asc' ? 'desc' : 'asc'; + } + else { + this.storyOrderDir = 'asc'; + } + + this.storyOrder = 'name'; + } + }, + + components: { + 'story-item': require('./story-item'), + 'list-toolbar': require('./list-toolbar'), + 'file-drag-n-drop': require('../ui/file-drag-n-drop'), + }, + + events: { + /* + We reflect back `story-edit` events onto children, so that the + appropriate StoryItem can edit itself, e.g. animate into editing. + */ + + 'story-edit'(id) { + this.$broadcast('story-edit', id); + }, + + /* For now, we only support importing a single file at a time. */ + + 'file-drag-n-drop'(files) { + new ImportDialog({ + store: this.$store, + data: { + immediateImport: files[0] + } + }).$mountTo(document.body); + } + }, + + vuex: { + getters: { + stories: state => state.story.stories + } + } +}); diff --git a/src/story-list-view/index.less b/src/story-list-view/index.less new file mode 100644 index 000000000..10507f721 --- /dev/null +++ b/src/story-list-view/index.less @@ -0,0 +1,85 @@ +@import '../common/colors.less'; +@import '../common/depth.less'; +@import '../common/metrics.less'; +@import '../common/typography.less'; + +@toolbar-width: 13rem; +@header-height: 4.5rem; + +#storyListView { + nav.listControls { + position: fixed; + top: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + justify-content: space-between; + width: @toolbar-width; + text-align: center; + padding: @len-extra-large; + background: darken(@color-paper, 5%); + + h1 { + margin: 0; + padding-top: 3em; + background: center top no-repeat url('../common/img/logo.svg'); + background-size: 50%; + } + + p { + margin: 0.5em 0; + } + + button.create { + margin-bottom: 1em; + } + + footer { + .smaller; + } + + .theme-dark & { + background: lighten(@color-paper-dark, 5%); + } + } + + > header { + position: fixed; + top: 0; + left: 0; + right: @toolbar-width; + height: @header-height; + z-index: 1; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 @len-extra-large; + background: @color-paper; + + h1 { + margin: 0; + display: inline; + } + + label { + padding-right: @len-small; + } + + .theme-dark & { + background: @color-paper-dark; + } + } + + .stories { + position: absolute; + top: 0; + left: 0; + padding: @header-height 0 @len-extra-large @len-extra-large; + right: @toolbar-width; + min-height: 100%; + display: flex; + flex-wrap: wrap; + .shadow-large; + } +} diff --git a/src/story-list-view/list-toolbar/index.html b/src/story-list-view/list-toolbar/index.html new file mode 100644 index 000000000..3b49fee9e --- /dev/null +++ b/src/story-list-view/list-toolbar/index.html @@ -0,0 +1,52 @@ + diff --git a/src/story-list-view/list-toolbar/index.js b/src/story-list-view/list-toolbar/index.js new file mode 100644 index 000000000..1c202cd98 --- /dev/null +++ b/src/story-list-view/list-toolbar/index.js @@ -0,0 +1,107 @@ +// The side toolbar of a story list. + +const Vue = require('vue'); +const AboutDialog = require('../../dialogs/about'); +const FormatsDialog = require('../../dialogs/formats'); +const ImportDialog = require('../../dialogs/story-import'); +const { createStory } = require('../../data/actions/story'); +const locale = require('../../locale'); +const { prompt } = require('../../dialogs/prompt'); +const { publishArchive } = require('../../data/publish'); +const saveFile = require('../../file/save'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + methods: { + createStoryPrompt(e) { + // Prompt for the new story name. + + prompt({ + message: locale.say( + 'What should your story be named?
(You can change this later.)' + ), + buttonLabel: ' ' + locale.say('Add'), + buttonClass: 'create', + validator: name => { + if (this.existingStories.find( + story => story.name === name + )) { + return locale.say( + 'A story with this name already exists.' + ); + } + }, + + origin: e.target + }).then(name => { + this.createStory({ name }); + + /* Allow the appearance animation to complete. */ + + window.setTimeout(() => { + this.$dispatch( + 'story-edit', + this.existingStories.find( + story => story.name === name + ).id + ); + }, 300); + }); + }, + + importFile(e) { + new ImportDialog({ + store: this.$store, + data: { origin: e.target } + }).$mountTo(document.body); + }, + + saveArchive() { + const timestamp = new Date().toLocaleString().replace(/[\/:\\]/g, '.'); + + saveFile( + publishArchive(this.existingStories, this.appInfo), + `${timestamp} ${locale.say('Twine Archive.html')}` + ); + }, + + showAbout(e) { + new AboutDialog({ + store: this.$store, + data: { origin: e.target } + }).$mountTo(document.body); + }, + + showFormats(e) { + new FormatsDialog({ + store: this.$store, + data: { origin: e.target } + }).$mountTo(document.body); + }, + + showHelp() { + window.open('https://twinery.org/2guide'); + }, + + showLocale() { + window.location.hash = 'locale'; + } + }, + + components: { + 'quota-gauge': require('../../ui/quota-gauge'), + 'theme-switcher': require('./theme-switcher') + }, + + vuex: { + actions: { + createStory + }, + + getters: { + appInfo: state => state.appInfo, + existingStories: state => state.story.stories + } + } +}); diff --git a/src/story-list-view/list-toolbar/theme-switcher.html b/src/story-list-view/list-toolbar/theme-switcher.html new file mode 100644 index 000000000..9c6135b4a --- /dev/null +++ b/src/story-list-view/list-toolbar/theme-switcher.html @@ -0,0 +1,8 @@ + + + + diff --git a/src/story-list-view/list-toolbar/theme-switcher.js b/src/story-list-view/list-toolbar/theme-switcher.js new file mode 100644 index 000000000..016b9f17a --- /dev/null +++ b/src/story-list-view/list-toolbar/theme-switcher.js @@ -0,0 +1,27 @@ +/* +A toggle between light and dark themes. +*/ + +const Vue = require('vue'); +const { setPref } = require('../../data/actions/pref'); + +module.exports = Vue.extend({ + template: require('./theme-switcher.html'), + + methods: { + setTheme(value) { + this.setPref('appTheme', value); + } + }, + + vuex: { + actions: { + setPref + }, + + getters: { + themePref: state => state.pref.appTheme + } + } +}); + diff --git a/src/story-list-view/story-item/index.html b/src/story-list-view/story-item/index.html new file mode 100644 index 000000000..88796d8ff --- /dev/null +++ b/src/story-list-view/story-item/index.html @@ -0,0 +1,20 @@ +
+ + +
+ + + +
+
diff --git a/src/story-list-view/story-item/index.js b/src/story-list-view/story-item/index.js new file mode 100644 index 000000000..69635af38 --- /dev/null +++ b/src/story-list-view/story-item/index.js @@ -0,0 +1,91 @@ +// An individual item in the list managed by StoryListView. This offers quick +// links for editing, playing, and deleting a story; StoryEditView handles more +// detailed changes. + +'use strict'; +const moment = require('moment'); +const Vue = require('vue'); +const ZoomTransition = require('../zoom-transition'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + story: { + type: Object, + required: true + } + }, + + components: { + 'item-preview': require('./item-preview'), + 'item-menu': require('./item-menu') + }, + + computed: { + lastUpdateFormatted() { + return moment(this.story.lastUpdate).format('lll'); + }, + + hue() { + // A hue based on the story's name. + + return ([this.story.name].reduce( + (hue, char) => hue + char.charCodeAt(0), 0 + ) % 40) * 90; + } + }, + + events: { + // If our parent wants to edit our own model, then we do so. This is + // done this level so that we animate the transition correctly. + + 'story-edit'(id) { + if (this.story.id === id) { + this.edit(); + } + }, + + // if we were previously editing a story, show a zoom shrinking back + // into us. The signature is a little bit different to save time; we + // know the ID of the story from the route, but don't have an object. + + 'previously-editing'(id) { + if (id === this.story.id) { + // The method for grabbing the page position of our element is + // cribbed from http://youmightnotneedjquery.com/. + + let rect = this.$el.getBoundingClientRect(); + + new ZoomTransition({ + data: { + reverse: true, + x: rect.left + (rect.right - rect.left) / 2, + y: rect.top + (rect.bottom - rect.top) / 2 + } + }).$mountTo(document.body); + } + } + }, + + methods: { + /** + Opens a StoryEditView for this story. + + @method edit + **/ + + edit() { + const pos = this.$el.getBoundingClientRect(); + + new ZoomTransition({ data: { + x: pos.left + pos.width / 2, + y: pos.top, + }}).$mountTo(this.$el).then( + () => window.location.hash = '#stories/' + this.story.id + ); + }, + } +}); diff --git a/src/story-list-view/story-item/index.less b/src/story-list-view/story-item/index.less new file mode 100644 index 000000000..4380e4cf4 --- /dev/null +++ b/src/story-list-view/story-item/index.less @@ -0,0 +1,46 @@ +@import '../../common/depth.less'; +@import '../../common/metrics.less'; + +@item-width: 11rem; + +.story-item { + width: 11rem; + margin-right: @len-extra-large; + margin-bottom: @len-extra-large; + + button.preview { + height: @item-width; + padding: 0; + border-radius: 2px; + transition: 0.2s box-shadow; + .shadow-small; + + .theme-dark & { + filter: invert(100%) hue-rotate(180deg); + .shadow-small-inverted; + } + + svg { + padding: @len-small; + width: @item-width; + height: @item-width; + } + } + + .controls { + display: flex; + + button.story-name { + flex-grow: 1; + flex-shrink: 1; + } + + h2 { + font-size: 100%; + } + + h2, p { + margin: 0; + } + } +} diff --git a/src/story-list-view/story-item/item-menu/index.html b/src/story-list-view/story-item/item-menu/index.html new file mode 100644 index 000000000..34f7b66fe --- /dev/null +++ b/src/story-list-view/story-item/item-menu/index.html @@ -0,0 +1,29 @@ + + + diff --git a/src/story-list-view/story-item/item-menu/index.js b/src/story-list-view/story-item/item-menu/index.js new file mode 100644 index 000000000..025b90bad --- /dev/null +++ b/src/story-list-view/story-item/item-menu/index.js @@ -0,0 +1,153 @@ +// Handles the cog menu for a single story. + +const escape = require('lodash.escape'); +const Vue = require('vue'); +const { confirm } = require('../../../dialogs/confirm'); +const { deleteStory, duplicateStory, updateStory } = require('../../../data/actions/story'); +const { loadFormat } = require('../../../data/actions/story-format'); +const { prompt } = require('../../../dialogs/prompt'); +const locale = require('../../../locale'); +const { publishStoryWithFormat } = require('../../../data/publish'); +const save = require('../../../file/save'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + story: { + type: Object, + required: true + } + }, + + components: { + 'drop-down': require('../../../ui/drop-down') + }, + + methods: { + /** + Plays this story in a new tab. + + @method play + **/ + + play() { + window.open( + '#stories/' + this.story.id + '/play', + 'twinestory_play_' + this.story.id + ); + }, + + /** + Tests this story in a new tab. + + @method test + **/ + + test() { + window.open( + '#stories/' + this.story.id + '/test', + 'twinestory_test_' + this.story.id + ); + }, + + /** + Downloads the story to a file. + + @method publish + **/ + + publish() { + this.loadFormat( + this.story.storyFormat, + this.story.storyFormatVersion + ).then(format => { + save( + publishStoryWithFormat(this.appInfo, this.story, format), + this.story.name + '.html' + ); + }); + }, + + /** + Shows a confirmation before deleting the model. + + @method confirmDelete + **/ + + delete() { + confirm({ + message: + locale.say( + 'Are you sure you want to delete “%s”? ' + + 'This cannot be undone.', + escape(this.story.name) + ), + buttonLabel: + ' ' + locale.say('Delete Forever'), + buttonClass: + 'danger' + }) + .then(() => this.deleteStory(this.story.id)); + }, + + /** + Prompts the user for a new name for the story, then saves it. + + @method rename + **/ + + rename() { + prompt({ + message: + locale.say( + 'What should “%s” be renamed to?', + escape(this.story.name) + ), + buttonLabel: + ' ' + locale.say('Rename'), + response: + this.story.name, + blankTextError: + locale.say('Please enter a name.') + }) + .then(name => this.updateStory(this.story.id, { name })); + }, + + /** + Prompts the user for a name, then creates a duplicate version of this + story accordingly. + **/ + + duplicate() { + prompt({ + message: + locale.say('What should the duplicate be named?'), + buttonLabel: + ' ' + locale.say('Duplicate'), + response: + locale.say('%s Copy', this.story.name), + blankTextError: + locale.say('Please enter a name.') + }) + .then(name => { + this.duplicateStory(this.story.id, name); + }); + } + }, + + vuex: { + actions: { + deleteStory, + duplicateStory, + loadFormat, + updateStory + }, + + getters: { + allFormats: state => state.storyFormat.formats, + appInfo: state => state.appInfo, + defaultFormat: state => state.pref.defaultFormat, + } + } +}); diff --git a/src/story-list-view/story-item/item-preview/index.html b/src/story-list-view/story-item/item-preview/index.html new file mode 100644 index 000000000..638155e2c --- /dev/null +++ b/src/story-list-view/story-item/item-preview/index.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/story-list-view/story-item/item-preview/index.js b/src/story-list-view/story-item/item-preview/index.js new file mode 100644 index 000000000..ef4ae5c65 --- /dev/null +++ b/src/story-list-view/story-item/item-preview/index.js @@ -0,0 +1,111 @@ +/** + This class generates SVG previews of stories. + @class StoryItemView.Preview +**/ + +'use strict'; +const Vue = require('vue'); + +const passageCenterOffset = 50; + +function passageRadius(length, longestLength) { + return (200 + 200 * (length / longestLength)) / 2; +} + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + edit: { + type: Function, + required: true + }, + hue: { + type: Number, + required: true + }, + passages: { + type: Array, + required: true + } + }, + + computed: { + style() { + return { + background: `hsl(${this.hue}, 60%, 95%)` + }; + }, + + passageStroke() { + return `hsl(${this.hue}, 90%, 45%)`; + }, + + passageFill() { + return `hsla(${this.hue}, 90%, 60%, 0.5)`; + }, + + longestPassageLength() { + let maxLength = 0; + + this.passages.forEach(passage => { + const len = passage.text.length; + + if (len > maxLength) { + maxLength = len; + } + }); + + return maxLength; + }, + + svg() { + if (this.passages.length <= 1) { + return ``; + } + + return this.passages.reduce( + (result, p) => + result + `` + , + '' + ); + }, + + svgViewBox() { + if (this.passages.length <= 1) { + return '0 0 200 200'; + } + + let minX = Number.POSITIVE_INFINITY; + let minY = Number.POSITIVE_INFINITY; + let maxX = Number.NEGATIVE_INFINITY; + let maxY = Number.NEGATIVE_INFINITY; + + this.passages.forEach(p => { + const x = p.left + passageCenterOffset; + const y = p.top + passageCenterOffset; + const radius = passageRadius( + p.text.length, + this.longestPassageLength + ); + + if (x - radius < minX) { minX = x - radius; } + + if (x + radius > maxX) { maxX = x + radius; } + + if (y - radius < minY) { minY = y - radius; } + + if (y + radius > maxY) { maxY = y + radius; } + }); + + return `${minX} ${minY} ${maxX - minX} ${maxY - minY}`; + } + } +}); diff --git a/src/story-list-view/zoom-transition/index.js b/src/story-list-view/zoom-transition/index.js new file mode 100644 index 000000000..94d8a5fcf --- /dev/null +++ b/src/story-list-view/zoom-transition/index.js @@ -0,0 +1,54 @@ +'use strict'; +const Vue = require('vue'); +const { ZOOM_MAPPINGS } = require('../../story-edit-view'); +const { thenable, symbols:{ resolve } } = require('../../vue/mixins/thenable'); + +require('./index.less'); + +module.exports = Vue.extend({ + data: () => ({ + zoom: 0, + x: window.innerWidth / 2, + y: window.innerHeight / 2, + url: '', + reverse: false, + }), + + template: `
`, + + computed: { + zoomClass() { + for (let desc in ZOOM_MAPPINGS) { + if (ZOOM_MAPPINGS[desc] === this.zoom) { + return 'zoom-' + desc; + } + } + + return ''; + }, + }, + + ready() { + /* + Ugly hack to make this work on NW.js, which Vue doesn't seem to process + animation events correctly for. + */ + + window.setTimeout(this.animationend, 200); + }, + + methods: { + animationend() { + this[resolve](); + + /* + Do not destroy this immediately: consumers may want to do an + operation and call $destroy() on this afterward. + */ + }, + }, + + mixins: [thenable] +}); diff --git a/src/story-list-view/zoom-transition/index.less b/src/story-list-view/zoom-transition/index.less new file mode 100644 index 000000000..f60959add --- /dev/null +++ b/src/story-list-view/zoom-transition/index.less @@ -0,0 +1,38 @@ +@import '../../common/depth.less'; +@import '../../story-edit-view/index.less'; + +#storyEditProxy { + position: fixed; + z-index: 1000; + top: 0; + left: 0; + right: 0; + bottom: 0; + animation: 0.2s appear linear forwards; + .graph-large; + .shadow-medium; + + &.reverse { + animation-direction: reverse; + } + + .zoom-small { + .graph-small; + } + + .zoom-medium { + .graph-medium; + } +} + +@keyframes appear { + from { + opacity: 0; + transform: scale(0); + } + + to { + opacity: 1; + transform: scale(1); + } +} diff --git a/src/ui/badges.less b/src/ui/badges.less new file mode 100644 index 000000000..68e5b2aad --- /dev/null +++ b/src/ui/badges.less @@ -0,0 +1,22 @@ +@import '../common/colors.less'; +@import '../common/metrics.less'; + +.badge, .badge-create, .badge-danger { + display: inline-block; + width: @len-medium; + height: @len-medium; + border-radius: @len-medium; + color: white; + background: @color-link; + font-size: 90%; + padding-top: @len-tiny-rel / 2; + text-align: center; +} + +.badge-create { + background: @color-create; +} + +.badge-danger { + background: @color-danger; +} diff --git a/src/ui/buttons.less b/src/ui/buttons.less new file mode 100644 index 000000000..065ef21f6 --- /dev/null +++ b/src/ui/buttons.less @@ -0,0 +1,172 @@ +@import '../common/colors.less'; +@import '../common/fonts.less'; +@import '../common/depth.less'; +@import '../common/metrics.less'; + +.colored-button(@color) { + color: white; + background: lighten(@color, 5%); + transition: 0.2s background, 0.2s transform; + .shadow-small; + + &:hover { + background: lighten(@color, 10%); + } + + &:active, &.active { + background: @color; + } + + &.subtle { + color: @color-text; + background: none; + box-shadow: none; + border: none; + + &:hover { + color: @color; + } + + .theme-dark & { + color: @color-text-dark; + background: none; + } + } + + .theme-dark & { + background: @color; + color: white; + + &:hover { + color: white; + background: lighten(@color, 5%); + } + } +} + +button, a.button { + display: inline-block; + font: 100% @font-ui; + border: none; + background: none; + padding: @len-small @len-medium; + cursor: pointer; + color: @color-text; + border-radius: @len-tiny; + outline: none; + transition: 0.2s background, 0.2s transform; + + &:hover { + color: @color-link; + text-decoration: none; + } + + &:active, &.active { + color: @color-link; + background: hsla(0, 0%, 0%, 0.075); + + .theme-dark & { + background: hsla(0, 100%, 100%, 0.075); + } + } + + &:active { + transform: scale(0.95); + } + + &.primary { + .colored-button(@color-link); + } + + &.create { + .colored-button(@color-create); + } + + &.danger { + .colored-button(@color-danger); + } + + &.link { + padding: 0; + text-align: left; + + &:hover { + text-decoration: underline; + + h1, h2, h3, h4, h5, h6 { + color: @color-link; + } + } + + &:active { + box-shadow: none; + background: none; + } + + &.danger { + color: @color-text; + background: none; + box-shadow: none; + + &:hover { + color: @color-danger; + background: none; + } + + .theme-dark & { + color: @color-text-dark; + + &:hover { + color: @color-danger; + } + } + } + } + + .theme-dark & { + color: @color-text-dark; + + &:hover { + color: @color-link-dark; + } + + &:active, &.active { + color: @color-link; + } + } +} + +.button-group { + display: inline-flex; + + button, a.button { + border-radius: 0; + border-top: @len-hairline solid @color-form-line; + border-bottom: @len-hairline solid @color-form-line; + + .theme-dark & { + border-top-color: @color-form-line-dark; + border-bottom-color: @color-form-line-dark; + } + + &:first-child { + border-top-left-radius: @len-tiny; + border-bottom-left-radius: @len-tiny; + border-left: @len-hairline solid @color-form-line; + + .theme-dark & { + border-left-color: @color-form-line-dark; + } + } + + &:last-child { + border-top-right-radius: @len-tiny; + border-bottom-right-radius: @len-tiny; + border-right: @len-hairline solid @color-form-line; + + .theme-dark & { + border-right-color: @color-form-line-dark; + } + } + } +} diff --git a/src/ui/drop-down/index.html b/src/ui/drop-down/index.html new file mode 100644 index 000000000..3fe8e0786 --- /dev/null +++ b/src/ui/drop-down/index.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/ui/drop-down/index.js b/src/ui/drop-down/index.js new file mode 100644 index 000000000..06b9f03f1 --- /dev/null +++ b/src/ui/drop-down/index.js @@ -0,0 +1,133 @@ +// A component which wraps a dropdown menu. This must be a direct child of the +// button used to trigger the menu. + +const Drop = require('tether-drop'); +const Vue = require('vue'); +const { hasPrimaryTouchUI } = require('../index'); +const domEvents = require('../../vue/mixins/dom-events'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + class: { + type: String, + default: '' + }, + position: { + type: String, + default: 'top center' + }, + openOn: { + type: String, + default: 'click' + }, + showNow: { + type: Boolean, + default: false + }, + targetOffset: { + type: String + } + }, + + ready() { + let openOn = this.openOn; + const target = this.$el.parentNode; + + if (hasPrimaryTouchUI() && openOn === 'click') { + /* + FastClick interferes with Drop's native handling -- we have to + handle it manually. + */ + + openOn = null; + this.on(this.$el.parentNode, 'click', () => this.$drop.open()); + + this.on(document.body, 'click', e => { + if (e.target !== this.$el.parentNode && + !target.contains(e.target)) { + this.$drop.close(); + } + }); + } + + let tetherOptions = { + constraints: [ + { + to: 'window', + pin: true + } + ] + }; + + if (this.targetOffset) { + tetherOptions.targetOffset = this.targetOffset; + } + + this.$drop = new Drop({ + target, + content: this.$el, + position: this.position, + openOn: openOn, + classes: this.class, + constrainToWindow: false, + constrainToScrollParent: false, + tetherOptions + }); + + /* + Emit events as the drop opens and closes. See below for how other + components can signal to us to close or reposition the drop. + */ + + this.$drop.on('open', () => { + this.$dispatch('drop-down-opened', this); + }); + + this.$drop.on('close', () => { + this.$dispatch('drop-down-closed', this); + }); + + /* + Close the dropdown when one of its menu items is clicked, unless any + element in the chain has a data-drop-down-stay-open attribute. + */ + + this.$drop.drop.addEventListener('click', e => { + let target = e.target; + + do { + if (target.getAttribute('data-drop-down-stay-open')) { + return; + } + + target = target.parentNode; + } while (target.getAttribute); + + this.$drop.close(); + }); + + if (this.showNow) { + this.$drop.open(); + } + }, + + destroyed() { + this.$drop.destroy(); + }, + + events: { + 'drop-down-close'() { + this.$drop.close(); + }, + + 'drop-down-reposition'() { + this.$drop.position(); + } + }, + + mixins: [domEvents] +}); diff --git a/src/ui/drop-down/index.less b/src/ui/drop-down/index.less new file mode 100644 index 000000000..e1eb1baee --- /dev/null +++ b/src/ui/drop-down/index.less @@ -0,0 +1,20 @@ +@import '../../common/colors.less'; +@import '../../common/depth.less'; +@import '../../common/metrics.less'; + +.drop { + z-index: 1000; + display: none; + transition: 0.2s opacity ease-out; + background-color: @color-paper; + border-radius: 2px; + .shadow-large; + + &.drop-open { + display: block; + } + + .theme-dark & { + background-color: @color-paper-dark; + } +} diff --git a/src/ui/file-drag-n-drop/index.html b/src/ui/file-drag-n-drop/index.html new file mode 100644 index 000000000..5114bf529 --- /dev/null +++ b/src/ui/file-drag-n-drop/index.html @@ -0,0 +1,7 @@ +
+
+ +
+ +
+
diff --git a/src/ui/file-drag-n-drop/index.js b/src/ui/file-drag-n-drop/index.js new file mode 100644 index 000000000..80600664a --- /dev/null +++ b/src/ui/file-drag-n-drop/index.js @@ -0,0 +1,53 @@ +/* +Manages a drag-and-drop-target on a component. When a file is dragged onto it, +this component dispatches a `file-drag-n-drop` event to its parent. +*/ + +const Vue = require('vue'); +const domEvents = require('../../vue/mixins/dom-events'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + /* Whether the user has a file dragged onto this component. */ + + receiving: false + }), + + ready() { + const parentEl = this.$parent.$el; + + /* + Make ourselves visible when the user drags a file onto us. + */ + + this.on(parentEl, 'dragenter', () => { + this.receiving = true; + }); + + this.on(parentEl, 'dragexit', () => { + this.receiving = false; + }); + + /* + The below is necessary to prevent the browser from opening the file + directly after the user drops a file on us. + */ + + this.on(parentEl, 'dragover', e => { + e.preventDefault(); + }); + }, + + methods: { + fileReceived(e) { + this.$dispatch('file-drag-n-drop', e.dataTransfer.files); + this.receiving = false; + } + }, + + mixins: [domEvents] +}); diff --git a/src/ui/file-drag-n-drop/index.less b/src/ui/file-drag-n-drop/index.less new file mode 100644 index 000000000..6df6fde22 --- /dev/null +++ b/src/ui/file-drag-n-drop/index.less @@ -0,0 +1,46 @@ +@import '../../common/colors.less'; +@import '../../common/metrics.less'; + +.drag-n-drop { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -100; // Behind the UI, but able to receive events. + + // Center the label. + + display: flex; + align-items: center; + justify-content: center; + + .label { + display: none; + text-align: center; + } + + // Display a dotted rectangle overlay when dragging + + &.receiving { + z-index: 100; // In front of the UI. + background: fadeout(@color-darken, 20%); + color: @color-paper; + + .label { + display: inline; + font-size: @len-large; + } + + .inner-border { + position: absolute; + border: @len-tiny dashed @color-paper; + border-radius: @len-tiny; + top: @len-medium; + left: @len-medium; + right: @len-medium; + bottom: @len-medium; + box-sizing: border-box; + } + } +} diff --git a/src/ui/forms.less b/src/ui/forms.less new file mode 100644 index 000000000..92bc33725 --- /dev/null +++ b/src/ui/forms.less @@ -0,0 +1,91 @@ +@import '../common/colors.less'; +@import '../common/depth.less'; +@import '../common/fonts.less'; +@import '../common/metrics.less'; + +input[type="text"], input[type="search"], input[type="password"], textarea, + .CodeMirror { + font: 100% @font-user; + background: transparent; + border: none; + box-shadow: 0 1px 0 @color-form-line; + border-radius: 0; + color: @color-text; + padding: @len-small; + + &:focus { + outline: none; + box-shadow: 0 2px 0 @color-link; + + .theme-dark & { + box-shadow: 0 2px 0 @color-link; + } + } + + .theme-dark & { + color: @color-text-dark; + box-shadow: 0 1px 0 @color-form-line-dark; + } +} + +textarea, .CodeMirror { + border-radius: 2px; + box-shadow: 0 0 0 1px @color-form-line; + padding: @len-small; + transition: 0.2s box-shadow; + + &:focus { + box-shadow: 0 0 0 2px @color-link; + } + + .theme-dark & { + box-shadow: 0 0 0 1px @color-form-line-dark; + } +} + +.editor .CodeMirror pre { + font: 100% @font-user; +} + +.CodeMirror-selected { + background: fadeout(@color-link, 95%); + + .CodeMirror-focused & { + background: fadeout(@color-link, 80%); + } + + .theme-dark & { + background: fadeout(@color-link, 50%); + } + + .theme-dark .CodeMirror-focused & { + background: fadeout(@color-link, 25%); + } +} + +.theme-dark .CodeMirror-cursor { + border-left-color: white; +} + +// These have to be separate rules because browsers will ignore a rule that has +// any part that it can't understand. + +::-webkit-input-placeholder { + font: 100% @font-ui; + margin: 0; + padding: 0; +} + +::-moz-placeholder { + font: 100% @font-ui; +} + +::-ms-input-placeholder { + font: 100% @font-ui; +} + +// Fix appearance of search fields in Safari. + +input[type="search"] { + -webkit-appearance: none; +} diff --git a/src/ui/gauge.less b/src/ui/gauge.less new file mode 100644 index 000000000..c07c08032 --- /dev/null +++ b/src/ui/gauge.less @@ -0,0 +1,25 @@ +@import '../common/metrics.less'; +@import '../common/colors.less'; +@import '../common/depth.less'; + +.gauge { + height: @len-small; + border: @len-hairline solid transparent; + border-radius: @len-tiny; + background-color: hsla(0, 0%, 0%, 0.1); + + .filled { + display: block; + height: 100%; + background-color: @color-link; + border-radius: @len-tiny; + } + + .theme-dark & { + background-color: hsla(0, 100%, 100%, 0.1); + + .filled { + background-color: @color-link-dark; + } + } +} diff --git a/src/ui/ie-mouse-event-polyfill.js b/src/ui/ie-mouse-event-polyfill.js new file mode 100644 index 000000000..3010558d9 --- /dev/null +++ b/src/ui/ie-mouse-event-polyfill.js @@ -0,0 +1,26 @@ +/* https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent */ +/* eslint-disable */ + +(function(window) { + try { + new CustomEvent('test'); + } catch (e) { + return false; // No need to polyfill + } + + // Polyfills DOM4 CustomEvent + function MouseEvent(eventType, params) { + params = params || { bubbles: false, cancelable: false }; + var mouseEvent = document.createEvent('MouseEvent'); + + mouseEvent.initMouseEvent(eventType, params.bubbles, params.cancelable, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + + return mouseEvent; + } + + MouseEvent.prototype = Event.prototype; + + window.MouseEvent = MouseEvent; +})(window); + +/* eslint-enable */ diff --git a/src/ui/index.js b/src/ui/index.js new file mode 100644 index 000000000..3663b128d --- /dev/null +++ b/src/ui/index.js @@ -0,0 +1,90 @@ +/** + Provides some basic setup for UI elements. + + @module ui +**/ + +'use strict'; +const fastclick = require('fastclick'); + +require('./index.less'); + +let inited = false; +let fastclickInstance; + +module.exports = { + /** + Performs one-time startup tasks, mainly setting up event listeners. + The heavy lifting is done in submodules or jQuery plugins living + in that module. + **/ + + init() { + if (inited) { + return; + } + + inited = true; + + /* + This API depends on whether we're using the CDN or the CommonJS module + :( + */ + + if (fastclick.attach !== undefined) { + fastclickInstance = fastclick.attach(document.body); + } + else { + fastclickInstance = fastclick(document.body); + } + }, + + /** + Undoes all setup in init(). + **/ + + destroy() { + if (!inited) { + return; + } + + /* Disable FastClick. */ + + fastclickInstance.destroy(); + inited = false; + }, + + /* + Returns whether the app is running in an iOS environment. + */ + + oniOS() { + return navigator.userAgent.match(/iPhone|iPad|iPod/i); + }, + + /* + Returns whether the app is running in Safari (either on iOS or MacOS). + */ + + onSafari() { + /* Chrome identifies itself as Safari. */ + + return navigator.userAgent.indexOf('Safari') != -1 && + navigator.userAgent.indexOf('Chrome') == -1; + }, + + /** + Checks to see if the app is running a browser whose main UI is + touch-based. This doesn't necessarily mean that the browser doesn't + support touch at all, just that we expect the user to be interacting + through touchonly. + + @return {Boolean} whether the browser is primarily touch-based + **/ + + hasPrimaryTouchUI() { + return /Android|iPod|iPad|iPhone|IEMobile/.test( + window.navigator.userAgent + ); + } +}; diff --git a/src/ui/index.less b/src/ui/index.less new file mode 100644 index 000000000..6ddd6c7b8 --- /dev/null +++ b/src/ui/index.less @@ -0,0 +1,91 @@ +/* a lightweight replacement for Bootstrap styles */ + +@import '../common/colors.less'; +@import '../common/fonts.less'; + +* { + box-sizing: border-box; +} + +body { + background-color: @color-paper; + color: @color-text; + margin: 0; + font-family: @font-ui; + overflow: auto; + + &.locked { + overflow: hidden; + } + + &.theme-dark { + background-color: @color-paper-dark; + color: @color-text-dark; + } +} + +a { + color: @color-link; + text-decoration: none; + + &.subtle { + color: @color-text; + } + + &:hover { + color: lighten(@color-link, 10%); + text-decoration: underline; + } + + .theme-dark & { + color: @color-link-dark; + + &.subtle { + color: @color-text-dark; + } + + &:hover { + color: lighten(@color-link-dark, 10%); + } + } +} + +ul.plain { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +.block { + display: block; + width: 100%; +} + +.hide { + display: none; +} + +.error { + background-color: hsl(hue(@color-danger), 50%, 97%); + padding: @len-small-rel @len-small-rel @len-small-rel 2em; + position: relative; + + &:before { + content: '\f071'; + font-family: FontAwesome; + color: @color-danger; + padding-right: 0.5em; + position: absolute; + top: 0.5em; + left: 0.5em; + } +} + +@import './badges.less'; +@import './buttons.less'; +@import './forms.less'; +@import './gauge.less'; +@import './menus.less'; +@import './tables.less'; +@import './tags.less'; +@import './toolbar.less'; diff --git a/src/ui/menus.less b/src/ui/menus.less new file mode 100644 index 000000000..4ce7da5ca --- /dev/null +++ b/src/ui/menus.less @@ -0,0 +1,49 @@ +@import '../common/colors.less'; +@import '../common/metrics.less'; + +ul.menu { + list-style-type: none; + margin: 0; + padding: 0; + + button { + text-align: left; + width: 100%; + border-radius: 0; + padding-left: @len-medium * 1.5; + padding-right: @len-medium * 1.5; + + &:hover { + background: hsla(0, 0%, 0%, 0.05); + + .theme-dark & { + background: hsla(0, 100%, 100%, 0.05); + } + } + } + + li { + position: relative; + } + + .divider { + height: @len-hairline; + background: @color-form-line; + + .theme-dark & { + background: @color-form-line-dark; + } + } + + .checked:before { + content: '\f00c'; + font-family: FontAwesome; + position: absolute; + top: 0; + bottom: 0; + width: @len-medium * 1.5; + display: flex; + justify-content: center; + align-items: center; + } +} diff --git a/src/ui/modal-dialog/index.html b/src/ui/modal-dialog/index.html new file mode 100644 index 000000000..4bbd2d0f4 --- /dev/null +++ b/src/ui/modal-dialog/index.html @@ -0,0 +1,21 @@ +
+ +
+
+

+ + + + + +
+
+ +
+
+
diff --git a/src/ui/modal-dialog/index.js b/src/ui/modal-dialog/index.js new file mode 100644 index 000000000..56e51d73f --- /dev/null +++ b/src/ui/modal-dialog/index.js @@ -0,0 +1,172 @@ +/* +A generic modal dialog component. This implements the Thenable mixin and +resolves itself when it is closed. +*/ + +const Vue = require('vue'); +const domEvents = require('../../vue/mixins/dom-events'); +const { thenable, symbols: { reject, resolve } } = + require('../../vue/mixins/thenable'); + +const animationEndEvents = [ + 'animationend', + 'webkitAnimationEnd', + 'MSAnimationEnd', + 'oAnimationEnd' +]; + +require('./index.less'); + +const ModalDialog = module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + class: '', + title: '', + origin: null, + canWiden: false, + canClose: { + type: Function, + required: false + } + }, + + data: () => ({ + wide: false + }), + + computed: { + classes() { + return this.class + (this.wide ? ' wide' : ''); + } + }, + + ready() { + const dialog = this.$el.querySelector('.modal-dialog'); + + /* + If an origin is specified, set it as the point the modal dialog grows + out of. + */ + + if (this.origin) { + const originRect = this.origin.getBoundingClientRect(); + + dialog.style.transformOrigin = + (originRect.left + originRect.width / 2) + 'px ' + + (originRect.top + originRect.height / 2) + 'px'; + } + + let body = document.querySelector('body'); + + body.classList.add('modalOpen'); + this.on(body, 'keyup', this.escapeCloser); + + /* + We have to listen manually to the end of the transition in order to an + emit an event when this occurs; it looks like Vue only consults the + top-level element to see when the transition is complete. + */ + + const notifier = () => { + /* + This event is currently only listened to by child + components. + */ + this.$broadcast('transition-entered'); + animationEndEvents.forEach(event => + dialog.removeEventListener(event, notifier) + ); + }; + + animationEndEvents.forEach(event => + dialog.addEventListener(event, notifier) + ); + }, + + destroyed() { + let body = document.querySelector('body'); + + body.classList.remove('modalOpen'); + this.$emit('destroyed'); + }, + + methods: { + close(message) { + if (typeof this.canClose === 'function' && !this.canClose()) { + return; + } + + this.$emit('close', message); + }, + + toggleWide() { + this.wide = !this.wide; + }, + + reject(message) { + if (typeof this.canClose === 'function' && !this.canClose()) { + return; + } + + this.$emit('reject', message); + }, + + escapeCloser(e) { + if (e.keyCode === 27) { + e.preventDefault(); + this.close(); + } + } + }, + + events: { + close(message) { + this[resolve](message); + this.$destroy(true); + }, + + reject(message) { + this[reject](message); + this.$destroy(true); + } + }, + + mixins: [domEvents, thenable] +}); + +/* +We have to transition in our individual parts through a custom transition. +*/ + +ModalDialog.transition('modal-dialog', { + beforeEnter: function(el) { + let overlay = el.querySelector('#modal-overlay'); + let dialog = el.querySelector('.modal-dialog'); + + overlay.classList.add('fade-in-out-transition', 'fade-in-out-enter'); + dialog.classList.add('grow-in-out-enter'); + + dialog.addEventListener('animationend', function() { + dialog.classList.remove('grow-in-out-enter'); + }); + }, + + enter: function(el, done) { + let overlay = el.querySelector('#modal-overlay'); + + Vue.nextTick(() => { + overlay.classList.remove('fade-in-out-enter'); + overlay.addEventListener('transitionend', done); + }); + }, + + leave: function(el, done) { + let overlay = el.querySelector('#modal-overlay'); + let dialog = el.querySelector('.modal-dialog'); + + dialog.classList.add('grow-in-out-leave'); + overlay.classList.add('fade-in-out-leave'); + overlay.addEventListener('transitionend', done); + } +}); diff --git a/src/ui/modal-dialog/index.less b/src/ui/modal-dialog/index.less new file mode 100644 index 000000000..abbbda46c --- /dev/null +++ b/src/ui/modal-dialog/index.less @@ -0,0 +1,183 @@ +@import '../../common/colors.less'; +@import '../../common/fonts.less'; +@import '../../common/depth.less'; +@import '../../common/metrics.less'; +@import '../../common/typography.less'; +@import '../../vue/transitions.less'; + +#modal-overlay { + position: fixed; + z-index: 100; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: hsla(0, 0%, 0%, 0.8); +} + +body.modalOpen { + overflow: hidden; +} + +.modal-dialog { + position: fixed; + z-index: 101; + display: flex; + flex-direction: column; + top: @len-extra-large; + left: calc(~"(100vw - 40em) / 2"); + background: @color-paper; + width: 40em; + max-height: calc(~"100% - " 2 * @len-extra-large); + border-radius: 2px; + .shadow-large; + + .theme-dark & { + background: @color-paper-dark; + } + + header { + display: flex; + flex-shrink: 0; + height: @len-extra-large * 2; + padding-left: @len-extra-large; + + .title { + line-height: @len-extra-large * 2; + margin: 0; + padding: 0; + flex-grow: 1; + } + + button { + width: @len-extra-large * 2; + line-height: @len-extra-large * 2; + margin: 0; + padding: 0; + border-radius: 0; + .larger; + } + } + + .content { + padding: 0 @len-extra-large @len-extra-large @len-extra-large; + flex-grow: 1; + flex-shrink: 1; + overflow: auto; + + > *:first-child { + margin-top: 0; + } + + > *:last-child { + margin-bottom: 0; + } + } + + &.no-header { + header { + display: none; + } + + .content { + padding-top: @len-extra-large; + } + } + + &.wide { + + } + + &.editor { + top: @len-small; + bottom: @len-small; + width: 48em; + left: calc(~"(100vw - 48em) / 2"); + max-height: none; + + .content { + display: flex; + flex-direction: column; + padding-bottom: 0; + } + + .expand { + flex-grow: 1; + position: relative; + + > div, .CodeMirror { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 100%; + border-left: none; + border-right: none; + } + + .CodeMirror { + padding: @len-small @len-extra-large; + } + } + + &.wide { + width: auto; + left: @len-small; + right: @len-small; + } + } + + // Not used for this component, but available to child components. + + &.tabbed { + header { + padding-left: 0; + + button { + position: relative; + font: 90% @font-display; + height: 100%; + + &:not(.close):after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: @len-hairline; + background: @color-form-line; + + .theme-dark & { + background: @color-form-line-dark; + } + } + + &.active:after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: @len-hairline; + background: @color-link; + } + } + } + } + + .expand { + margin-left: -@len-extra-large; + margin-right: -@len-extra-large; + + .CodeMirror { + border-radius: 0; + padding-left: @len-extra-large; + padding-right: @len-extra-large; + } + } + + .buttons { + text-align: right; + margin-bottom: 0; + } +} diff --git a/src/ui/notify/index.js b/src/ui/notify/index.js new file mode 100644 index 000000000..476cd2fae --- /dev/null +++ b/src/ui/notify/index.js @@ -0,0 +1,13 @@ +const NotificationList = require('./list'); +let notifications; + +module.exports = function(html, className = '') { + if (!notifications) { + let container = document.createElement('div'); + + document.querySelector('body').appendChild(container); + notifications = new NotificationList({ el: container }); + } + + notifications.add(html, className); +}; diff --git a/src/ui/notify/list.html b/src/ui/notify/list.html new file mode 100644 index 000000000..d9798910a --- /dev/null +++ b/src/ui/notify/list.html @@ -0,0 +1,21 @@ +
+
+ + + + + + + + + + {{{ notification.html }}} + + ({{ notification.repeats + 1 }}) + + + +
+
diff --git a/src/ui/notify/list.js b/src/ui/notify/list.js new file mode 100644 index 000000000..b554aa24e --- /dev/null +++ b/src/ui/notify/list.js @@ -0,0 +1,73 @@ +// This is a list of notifications at the top of the page. See index.js for the +// public API for this. + +const Vue = require('vue'); + +require('./list.less'); + +// How long typical notifications (e.g. that aren't errors) appear onscreen. + +const APPEAR_DURATION = 3000; + +module.exports = Vue.extend({ + template: require('./list.html'), + + data: () => ({ + notifications: [] + }), + + methods: { + // Adds a new notification. + + add(html, className) { + // If the most recent notification matches the same HTML as what's + // requested, update its count instead and reset its timeout. + + if (this.notifications.length > 0) { + let lastN = this.notifications[this.notifications.length - 1]; + + if (lastN.html === html) { + lastN.repeats++; + + if (lastN.className !== 'danger') { + window.clearTimeout(lastN.timeout); + lastN.timeout = window.setTimeout( + () => this.remove(lastN), + APPEAR_DURATION + ); + } + + return; + } + } + + let notification = { html, className, repeats: 0 }; + + this.notifications.push(notification); + + if (className !== 'danger') { + notification.timeout = window.setTimeout( + () => this.remove(notification), + APPEAR_DURATION + ); + } + }, + + // Removes a notification by object reference. If none match, this does + // nothing. + + remove(obj) { + let index = this.notifications.indexOf(obj); + + if (index !== -1) { + this.notifications.splice(index, 1); + } + }, + + // Removes a notification by array index. + + removeAt(index) { + this.notifications.splice(index, 1); + } + } +}); diff --git a/src/ui/notify/list.less b/src/ui/notify/list.less new file mode 100644 index 000000000..9c14a0191 --- /dev/null +++ b/src/ui/notify/list.less @@ -0,0 +1,39 @@ +@import '../../common/colors.less'; +@import '../../common/depth.less'; +@import '../../common/metrics.less'; + +#notifications { + position: fixed; + top: 0; + left: 50%; + width: 50%; + margin-left: -25%; + text-align: center; + z-index: 9999; + + > div { + display: flex; + align-items: center; + margin-top: @len-small; + padding-left: @len-small; + background-color: @color-paper; + color: @color-text; + border-radius: 2px; + .shadow-large; + + .theme-dark & { + background-color: @color-paper-dark; + color: @color-text-dark; + } + } + + button.close { + border-radius: 0; + } + + .message { + padding: 0 @len-small; + text-align: left; + flex-grow: 1; + } +} diff --git a/src/ui/quota-gauge/index.html b/src/ui/quota-gauge/index.html new file mode 100644 index 000000000..903ef62a7 --- /dev/null +++ b/src/ui/quota-gauge/index.html @@ -0,0 +1,7 @@ +
+
+ +
+ +

{{ percentDesc }}

+
diff --git a/src/ui/quota-gauge/index.js b/src/ui/quota-gauge/index.js new file mode 100644 index 000000000..ed7a0afe1 --- /dev/null +++ b/src/ui/quota-gauge/index.js @@ -0,0 +1,78 @@ +// This is an gauge that shows how much space is available in the user's local +// storage. It's only applicable when the app is running in a Web browser. + +const Vue = require('vue'); +const locale = require('../../locale'); + +require('./index.less'); + +const CHUNK_SIZE = 102400; + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + used: 0, + free: 0 + }), + + computed: { + percent() { + return Math.round(this.free / (this.used + this.free) * 100); + }, + + percentDesc() { + return locale.say('%d%% space available', this.percent); + } + }, + + created() { + // We know how much space we're already using. We find out how much is + // free by trying to allocate more in 100k chunks, and failing once + // we've hit the quota. + + this.used = JSON.stringify(window.localStorage).length; + this.free = CHUNK_SIZE; + + let storageIndex = 0; + // This is used to test how much local storage is left in 100k chunks. + let testString = 'x'.repeat(CHUNK_SIZE); + const interval = window.setInterval( + () => { + let stop = false; + + try { + window.localStorage.setItem( + '__quotatest' + storageIndex, + testString + ); + this.free += CHUNK_SIZE; + storageIndex++; + + // If we're already above 99%, then we don't need another + // iteration. + + if (this.percent <= 1) { + stop = true; + } + } + catch (e) { + stop = true; + } + + if (stop) { + // Clean up the items we put into the local storage to test. + + for (let i = 0; i <= storageIndex; i++) { + window.localStorage.removeItem('__quotatest' + i); + } + + testString = null; + window.clearInterval(interval); + } + }, + + 20 + ); + } +}); diff --git a/src/ui/quota-gauge/index.less b/src/ui/quota-gauge/index.less new file mode 100644 index 000000000..40bbe6cb0 --- /dev/null +++ b/src/ui/quota-gauge/index.less @@ -0,0 +1,4 @@ +.quota { + width: 100%; +} + diff --git a/src/ui/replace.js b/src/ui/replace.js new file mode 100644 index 000000000..64294b50a --- /dev/null +++ b/src/ui/replace.js @@ -0,0 +1,34 @@ +/** + Completely replaces the document with HTML source. + + @method replaceContent + @param {String} html HTML source to replace, including DOCTYPE, , and + . +**/ + +'use strict'; +const ui = require('./index.js'); + +module.exports = html => { + // remove our UI hooks + + ui.destroy(); + + // blast the last of our JS globals + + window.CodeMirror = null; + window.SVG = null; + window.Store = null; + window.StoryFormat = null; + window.amdDefine = null; + window.app = null; + window.jQuery = null; + + // rewrite the document + + document.open(); + /* jshint -W060 */ + document.write(html); + /* jshint +W060 */ + document.close(); +}; diff --git a/src/ui/tab-panel/index.html b/src/ui/tab-panel/index.html new file mode 100644 index 000000000..832dda5ff --- /dev/null +++ b/src/ui/tab-panel/index.html @@ -0,0 +1,10 @@ +
+

+ +

+
+ +
+
diff --git a/src/ui/tab-panel/index.js b/src/ui/tab-panel/index.js new file mode 100644 index 000000000..04e7d0dba --- /dev/null +++ b/src/ui/tab-panel/index.js @@ -0,0 +1,22 @@ +// A container for tabs. + +const Vue = require('vue'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + props: { + active: { + type: Number, + default: 0 + } + }, + + data: () => ({}), + + computed: { + singleWidthPercent() { + return 1 / this.$children.length * 100; + } + } +}); diff --git a/src/ui/tab-panel/item.js b/src/ui/tab-panel/item.js new file mode 100644 index 000000000..7d5b35e4b --- /dev/null +++ b/src/ui/tab-panel/item.js @@ -0,0 +1,24 @@ +const Vue = require('vue'); + +module.exports = Vue.extend({ + template: + `
+ +
`, + + props: { + name: String, + }, + + data: () => ({}), + + computed: { + index() { + return this.$parent.$children.indexOf(this); + }, + + hidden() { + return (this.$parent.active !== this.index); + }, + }, +}); diff --git a/src/ui/tables.less b/src/ui/tables.less new file mode 100644 index 000000000..29316dd98 --- /dev/null +++ b/src/ui/tables.less @@ -0,0 +1,42 @@ +@import '../common/colors.less'; +@import '../common/metrics.less'; + +table { + border-collapse: collapse; + width: 100%; +} + +tbody tr { + border-top: 1px solid @color-form-line; + + table.unlined & { + border-top-color: transparent; + } + + .theme-dark & { + border-top-color: @color-form-line-dark; + } +} + +th { + font-weight: normal; + opacity: 0.8; + white-space: nowrap; +} + +td { + padding-top: @len-small; + padding-bottom: @len-small; + + :first-child { + margin-top: 0; + } + + :last-child { + margin-bottom: 0; + } + + table.unlined & { + padding: @len-hairline; + } +} diff --git a/src/ui/tags.less b/src/ui/tags.less new file mode 100644 index 000000000..721728f63 --- /dev/null +++ b/src/ui/tags.less @@ -0,0 +1,49 @@ +@import '../common/colors.less'; +@import '../common/depth.less'; +@import '../common/metrics.less'; + +.tag { + display: inline-block; + padding: 0 0 0 @len-medium; + border-radius: @len-medium; + color: white; + background: @color-tag-gray; + .shadow-tiny; + margin-right: @len-small; + margin-bottom: @len-small; + + button { + color: white; + border-top-right-radius: @len-medium; + border-bottom-right-radius: @len-medium; + } + + &.red { + background: @color-tag-red; + } + + &.orange { + background: @color-tag-orange; + } + + &.yellow { + background: @color-tag-yellow; + } + + &.green { + background: @color-tag-green; + } + + &.blue { + background: @color-tag-blue; + } + + &.purple { + background: @color-tag-purple; + } + + .theme-dark & { + background: hsl(hue(@color-link-dark), 60%, 25%); + } +} + diff --git a/src/ui/toolbar.less b/src/ui/toolbar.less new file mode 100644 index 000000000..787364603 --- /dev/null +++ b/src/ui/toolbar.less @@ -0,0 +1,8 @@ +.toolbar { + display: flex; + justify-content: space-between; + + button { + border-radius: 0; + } +} diff --git a/src/vue/codemirror-theme.less b/src/vue/codemirror-theme.less new file mode 100644 index 000000000..2ad20d3d7 --- /dev/null +++ b/src/vue/codemirror-theme.less @@ -0,0 +1,68 @@ +/* + +*/ + +.CodeMirror pre.CodeMirror-placeholder { + color: #999; + + body.theme-dark & { + color: #666; + } +} + +/* +These are derived from https://github.com/idleberg/base16-codemirror +(specifically the tomorrow-night variation), but customized to match light/dark themes. +*/ + +.cm-s-default { + .CodeMirror { color: #282a2e;} + div.CodeMirror-selected {background: #d6d6d6 !important;} + .CodeMirror-gutters {background: #ffffff; border-right: 0px;} + .CodeMirror-linenumber {color: #b4b7b4;} + .CodeMirror-cursor {border-left: 1px solid #969896 !important;} + + span.cm-comment {color: #a3685a;} + span.cm-atom {color: #b294bb;} + span.cm-number {color: #b294bb;} + + span.cm-property, span.cm-attribute {color: #b5bd68;} + span.cm-keyword {color: #cc6666;} + span.cm-string {color: #f0c674;} + + span.cm-variable {color: #b5bd68;} + span.cm-variable-2 {color: #81a2be;} + span.cm-def {color: #de935f;} + span.cm-error {border-bottom: 1px dotted #cc6666;} + span.cm-bracket {color: #282a2e;} + span.cm-tag {color: #cc6666;} + span.cm-link {color: #b294bb;} + + .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} +} + +body.theme-dark .cm-s-default { + .CodeMirror {color: #e0e0e0;} + div.CodeMirror-selected {background: #4d4d4c !important;} + .CodeMirror-gutters {background: #1d1f21; border-right: 0px;} + .CodeMirror-linenumber {color: #969896;} + .CodeMirror-cursor {border-left: 1px solid #b4b7b4 !important;} + + span.cm-comment {color: #a3685a;} + span.cm-atom {color: #b294bb;} + span.cm-number {color: #b294bb;} + + span.cm-property, span.cm-attribute {color: #b5bd68;} + span.cm-keyword {color: #cc6666;} + span.cm-string {color: #f0c674;} + + span.cm-variable {color: #b5bd68;} + span.cm-variable-2 {color: #81a2be;} + span.cm-def {color: #de935f;} + span.cm-error {border-bottom: 1px dotted #cc6666;} + span.cm-bracket {color: #e0e0e0;} + span.cm-tag {color: #cc6666;} + span.cm-link {color: #b294bb;} + + .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} +} diff --git a/src/vue/codemirror.js b/src/vue/codemirror.js new file mode 100644 index 000000000..adc76768b --- /dev/null +++ b/src/vue/codemirror.js @@ -0,0 +1,46 @@ +// A lightweight Vue component that wraps a CodeMirror instance. + +const Vue = require('vue'); +const CodeMirror = require('codemirror'); + +require('./codemirror-theme.less'); + +module.exports = Vue.extend({ + template: '
', + + props: ['options', 'text'], + + watch: { + text() { + // Only change CodeMirror if it's actually a meaningful change, + // e.g. not the result of CodeMirror itself changing. + + if (this.text !== this.$cm.getValue()) { + this.$cm.setValue(this.text); + } + }, + }, + + compiled() { + this.$cm = CodeMirror(this.$el, this.options); + this.$cm.setValue((this.text || '') + ''); + + this.$cm.on('change', () => { + this.text = this.$cm.getValue(); + this.$dispatch('cm-change', this.text); + }); + }, + + attached() { + this.$cm.focus(); + }, + + events: { + // Since CodeMirror initialises incorrectly when special CSS such as + // scaleY is present on its containing element, it should be + // refreshed once transition is finished - hence, this event. + 'transition-entered'() { + this.$cm.refresh(); + }, + }, +}); diff --git a/src/vue/codemirror.spec.js b/src/vue/codemirror.spec.js new file mode 100644 index 000000000..260a9e88e --- /dev/null +++ b/src/vue/codemirror.spec.js @@ -0,0 +1,51 @@ +const { expect } = require('chai'); +const Vue = require('vue'); +const CodeMirror = require('./codemirror'); + +describe('', () => { + let vm; + + beforeEach(() => { + /* + jsdom doesn't implement some functionality that CodeMirror expects. + https://discuss.codemirror.net/t/working-in-jsdom-or-node-js-natively/138/2 + (note that there's a typo in the example source that leaves out body in + document.body) + */ + + document.body.createTextRange = document.body.createTextRange || (() => ({ + setEnd: () => {}, + setStart: () => {}, + getBoundingClientRect: () => ({ right: 0 }), + getClientRects: () => ({}) + })); + + vm = new Vue({ + template: '', + components: { + 'code-mirror': CodeMirror + } + }); + + vm.$mount(); + }); + + it('creates a CodeMirror instance when mounted', () => { + expect(vm.$refs.cm.$cm).to.be.a('object'); + }); + + it('sets content initially with the text property', () => { + expect(vm.$refs.cm.$cm.getValue()).to.equal('Hello world.'); + }); + + it('sets options with the options property', () => { + expect(vm.$refs.cm.$cm.getOption('tabSize')).to.equal(12); + }); + + it('keeps the text property in sync', () => { + expect(vm.$refs.cm.text).to.equal(vm.$refs.cm.$cm.getValue()); + vm.$refs.cm.$cm.setValue('Something completely different!'); + expect(vm.$refs.cm.text).to.equal(vm.$refs.cm.$cm.getValue()); + }); +}); diff --git a/src/vue/directives/mouse-scrolling.js b/src/vue/directives/mouse-scrolling.js new file mode 100644 index 000000000..8c93597ed --- /dev/null +++ b/src/vue/directives/mouse-scrolling.js @@ -0,0 +1,148 @@ +/* +This directive adds behavior to a component so that when it's mounted, the user +may scroll the document by holding down the middle button and dragging (or the +space bar and left button). +*/ + +const ui = require('../../ui'); + +require('./mouse-scrolling.less'); + +let handlers = {}; + +module.exports = { + addTo(Vue) { + Vue.directive('mouse-scrolling', { + bind() { + const { body } = document; + let scrollOrigin = false; + let mouseOrigin = false; + let scrolling = false; + let spaceHeld = false; + + handlers[this] = []; + + if (ui.hasPrimaryTouchUI()) { + return; + } + + function beginScrolling(e) { + /* + We don't need to account for the window's scroll position + here, since we'll be changing it on the fly. + */ + + mouseOrigin = [e.clientX, e.clientY]; + scrollOrigin = [window.pageXOffset, window.pageYOffset]; + scrolling = true; + body.classList.add('mouseScrolling'); + e.preventDefault(); + } + + function handleKeyDown(e) { + /* Space bar */ + + if (e.which === 32) { + if (!scrolling && !spaceHeld) { + spaceHeld = true; + body.classList.add('mouseScrollReady'); + } + + /* + preventDefault() stops the page from scrolling downward + when the space bar is held by itself. We need to take + care to avoid gobbling up keystrokes for form elements. + */ + + if (document.activeElement.nodeName !== 'INPUT' && + document.activeElement.nodeName !== 'TEXTAREA') { + e.preventDefault(); + } + } + } + + function handleMouseDown(e) { + if (e.which === 2 && !scrolling) { // Middle button + beginScrolling(e); + } + + if (e.which === 1 && spaceHeld) { // Left button + if (!scrolling) { + beginScrolling(e); + } + } + } + + function handleMouseMove(e) { + if (scrolling) { + window.scrollTo( + scrollOrigin[0] + mouseOrigin[0] - e.clientX, + scrollOrigin[1] + mouseOrigin[1] - e.clientY + ); + } + } + + function handleKeyUp(e) { + if (e.which === 32 && spaceHeld) { + scrolling = spaceHeld = false; + body.classList.remove('mouseScrollReady', 'mouseScrolling'); + + /* + Prevent the space bar from scrolling the window + down. We have to make sure that by doing so, we + don't accidentally gobble a keystroke meant for a + form element. + */ + + if (document.activeElement.nodeName !== 'INPUT' && + document.activeElement.nodeName !== 'TEXTAREA') { + e.preventDefault(); + } + } + } + + function handleMouseUp(e) { + if ((e.which === 2 || e.which === 1) && scrolling) { + scrolling = false; + body.classList.remove('mouseScrolling'); + e.preventDefault(); + } + } + + body.addEventListener('mousedown', handleMouseDown); + body.addEventListener('mousemove', handleMouseMove); + body.addEventListener('mouseup', handleMouseUp); + body.addEventListener('keydown', handleKeyDown); + body.addEventListener('keyup', handleKeyUp); + + handlers[this] = { + 'mousedown': handleMouseDown, + 'mousemove': handleMouseMove, + 'mouseup': handleMouseUp, + 'keydown': handleKeyDown, + 'keyup': handleKeyUp + }; + + Object.keys(handlers[this]).forEach( + event => body.addEventListener( + event, + handlers[this][event] + ), + this + ); + }, + + unbind() { + Object.keys(handlers[this]).forEach( + event => document.body.removeEventListener( + event, + handlers[this][event] + ), + this + ); + + delete handlers[this]; + } + }); + } +}; diff --git a/src/vue/directives/mouse-scrolling.less b/src/vue/directives/mouse-scrolling.less new file mode 100644 index 000000000..fc95f0cbd --- /dev/null +++ b/src/vue/directives/mouse-scrolling.less @@ -0,0 +1,6 @@ +body.mouseScrollReady * { + cursor: grab !important; +} +body.mouseScrolling * { + cursor: grabbing !important; +} \ No newline at end of file diff --git a/src/vue/filters/locale.js b/src/vue/filters/locale.js new file mode 100644 index 000000000..7c2337b42 --- /dev/null +++ b/src/vue/filters/locale.js @@ -0,0 +1,10 @@ +// A module that adds locale-oriented filters to Vue. + +const locale = require('../../locale'); + +module.exports = { + addTo(Vue) { + Vue.filter('say', locale.say.bind(locale)); + Vue.filter('sayPlural', locale.sayPlural.bind(locale)); + } +}; diff --git a/src/vue/filters/locale.spec.js b/src/vue/filters/locale.spec.js new file mode 100644 index 000000000..410bc0bdd --- /dev/null +++ b/src/vue/filters/locale.spec.js @@ -0,0 +1,24 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +let Vue = require('vue'); +let locale = require('../../locale'); +const localeFilters = require('./locale'); + +describe('locale Vue filters', () => { + beforeEach(() => { + locale.say.bind = spy(); + locale.sayPlural.bind = spy(); + Vue.filter = spy(); + localeFilters.addTo(Vue); + }); + + it('add a \'say\' filter to Vue linked to locale.say()', () => { + expect(Vue.filter.calledWith('say')).to.equal(true); + expect(locale.say.bind.firstCall.args[0]).to.equal(locale); + }); + + it('add a \'sayPlural\' filter to Vue linked to locale.sayPlural()', () => { + expect(Vue.filter.calledWith('sayPlural')).to.equal(true); + expect(locale.sayPlural.bind.firstCall.args[0]).to.equal(locale); + }); +}); diff --git a/src/vue/index.less b/src/vue/index.less new file mode 100644 index 000000000..133d8bbac --- /dev/null +++ b/src/vue/index.less @@ -0,0 +1 @@ +@import 'transitions.less'; diff --git a/src/vue/mixins/dom-events.js b/src/vue/mixins/dom-events.js new file mode 100644 index 000000000..5d335db82 --- /dev/null +++ b/src/vue/mixins/dom-events.js @@ -0,0 +1,75 @@ +/* +This helps Vue components listen to DOM events outside their el. Sometimes +an event listener needs to be attached to the el, for example. +Using this mixin, the component does not need to hold onto a reference to the +listeners and manually remove them. +*/ + +/* +A list of all event listeners, indexed by the component. Each entry is an array +of objects with event, el, and listener properties. +*/ +let listeners = {}; + +module.exports = { + created() { + this.$domEventKey = Symbol(); + + if (!listeners[this.$domEventKey]) { + listeners[this.$domEventKey] = []; + } + }, + + beforeDestroy() { + /* Clean up event listeners that have been previously attached. */ + + if (!listeners[this.$domEventKey]) { + return; + } + + listeners[this.$domEventKey].forEach( + props => props.el.removeEventListener(props.event, props.listener) + ); + + listeners[this.$domEventKey] = null; + }, + + methods: { + /* + Adds an event listener. Note that unlike jQuery, you may only listen to + a single event type per method call, and this automatically binds + handlers to the component. + */ + + on(el, event, listener, options) { + const boundListener = listener.bind(this); + + el.addEventListener(event, boundListener, options); + listeners[this.$domEventKey].push( + { el, event, options, listener: boundListener } + ); + }, + + /* + Removes all listeners for an event type. + */ + + off(el, event) { + if (!listeners[this.$domEventKey]) { + return; + } + + listeners[this.$domEventKey] = + listeners[this.$domEventKey].filter(props => { + if (props.event === event) { + props.el.removeEventListener( + props.event, props.listener, props.options + ); + return false; + } + + return true; + }); + } + } +}; diff --git a/src/vue/mixins/dom-events.spec.js b/src/vue/mixins/dom-events.spec.js new file mode 100644 index 000000000..9d466d07b --- /dev/null +++ b/src/vue/mixins/dom-events.spec.js @@ -0,0 +1,87 @@ +const { expect } = require('chai'); +const { spy, stub } = require('sinon'); +const Vue = require('vue'); +const domEvents = require('./dom-events'); + +describe('dom-events Vue mixin', () => { + const body = document.querySelector('body'); + let clickEvent = document.createEvent('MouseEvent'); + let handler, component; + + clickEvent.initMouseEvent( + 'click', + true, + true, + window, + 1, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + 0, + null + ); + + beforeEach(() => { + component = new Vue({ mixins: [domEvents] }); + handler = spy(); + spy(handler, 'bind'); + }); + + afterEach(() => { + handler.bind.restore(); + }); + + it('adds on() and off() methods to a Vue component', () => { + expect(component.on).to.be.a('function'); + expect(component.off).to.be.a('function'); + }); + + it('adds event listeners with on()', () => { + component.on(body, 'click', handler); + body.dispatchEvent(clickEvent); + expect(handler.calledOnce).to.be.true; + }); + + it('binds handlers passed to on() to the component', () => { + component.on(body, 'click', handler); + expect(handler.bind.calledOnce).to.be.true; + expect(handler.bind.calledWith(component)).to.be.true; + }); + + it('removes event listeners with off()', () => { + component.on(body, 'click', handler); + component.off(body, 'click', handler); + body.dispatchEvent(clickEvent); + expect(handler.calledOnce).to.be.false; + }); + + it('cleans up event listeners added via on() when the component is destroyed', () => { + component.on(body, 'click', handler); + component.$destroy(); + body.dispatchEvent(clickEvent); + expect(handler.calledOnce).to.be.false; + }); + + it('does not do anything if a component has no listeners attached when destroyed', () => { + expect(() => { component.$destroy(); }).to.not.throw; + }); + + it('partitions listeners for different component instances', () => { + const comp = Vue.extend({ mixins: [domEvents] }); + let comp1 = new comp(); + let comp2 = new comp(); + + comp1.on(body, 'click', handler); + comp2.on(body, 'click', handler); + + comp1.$destroy(); + body.dispatchEvent(clickEvent); + + expect(handler.calledOnce).to.be.true; + }); +}); diff --git a/src/vue/mixins/mount-to.js b/src/vue/mixins/mount-to.js new file mode 100644 index 000000000..8b374cda8 --- /dev/null +++ b/src/vue/mixins/mount-to.js @@ -0,0 +1,14 @@ +// A mixin that offers a convenience method for mounting a component to a given +// element. + +module.exports = { + methods: { + $mountTo(el) { + const mountPoint = document.createElement('div'); + + this.$mount(mountPoint).$appendTo(el); + return this; + }, + } +}; + diff --git a/src/vue/mixins/mount-to.spec.js b/src/vue/mixins/mount-to.spec.js new file mode 100644 index 000000000..fa194c369 --- /dev/null +++ b/src/vue/mixins/mount-to.spec.js @@ -0,0 +1,33 @@ +const { expect } = require('chai'); +const Vue = require('vue'); +const mountTo = require('./mount-to'); + +describe('mountTo Vue mixin', () => { + let vm; + + beforeEach(() => { + vm = new Vue({ + template: '

Hello world.

', + mixins: [mountTo] + }); + }); + + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('adds a $mountTo method to a Vue component', () => { + expect(vm.$mountTo).to.be.a('function'); + }); + + it('mounts a Vue component with $mountTo()', done => { + vm.$mountTo(document.body); + + Vue.nextTick(() => { + expect(document.querySelector('#mounted')).to.exist; + expect(document.querySelector('#mounted').innerHTML) + .to.equal('Hello world.'); + done(); + }); + }); +}); diff --git a/src/vue/mixins/thenable.js b/src/vue/mixins/thenable.js new file mode 100644 index 000000000..f36e97a08 --- /dev/null +++ b/src/vue/mixins/thenable.js @@ -0,0 +1,53 @@ +/* +This mixin makes a component usable as a Promise: you can call .then() and +.catch() on then to perform actions, and perform them when the component is +"done", using this.promise.resolve(). +*/ + +'use strict'; +const Symbol = (window.Symbol || Math.random); + +/* These are symbols that key to "private" component methods. */ + +const symbols = { + resolve: Symbol(), + reject: Symbol(), +}; + +module.exports = { + thenable: { + init() { + const promise = new Promise((resolve, reject) => { + /* + These methods should be private (to the instance), but the only + easy way to approximate this is to key these methods to symbols + and force consumers to use those symbols. + */ + + this[symbols.reject] = reject; + this[symbols.resolve] = resolve; + }); + + this.then = promise.then.bind(promise); + this.catch = promise.catch.bind(promise); + }, + + compiled() { + /* + If any direct children of this component are thenable, this + component's promise will be settled as soon as that child's + settles. This allows e.g. to contain a + , and be dismissed when the inner dialog is + dismissed. + */ + + this.$children.filter((child) => typeof child.then === 'function') + .forEach(({then, catch:_catch}) => { + then(this[symbols.resolve]); + _catch(this[symbols.reject]); + }); + }, + }, + + symbols +}; diff --git a/src/vue/mixins/thenable.spec.js b/src/vue/mixins/thenable.spec.js new file mode 100644 index 000000000..6c62a11f7 --- /dev/null +++ b/src/vue/mixins/thenable.spec.js @@ -0,0 +1,76 @@ +require('core-js'); +const { expect } = require('chai'); +const { spy } = require('sinon'); +const Vue = require('vue'); +const { symbols: { resolve, reject }, thenable } = require('./thenable'); + +describe('thenable Vue mixin', () => { + let receiver, vm, vmChild; + + beforeEach(() => { + vmChild = new Vue({ + mixins: [thenable], + methods: { + resolvePromise() { + this[resolve]('Hello world from child'); + } + } + }); + + vm = new Vue({ + template: '', + mixins: [thenable], + methods: { + rejectPromise() { + this[reject]('Hello world'); + }, + + resolvePromise() { + this[resolve]('Hello world'); + } + }, + components: { + 'child-vm': vmChild + } + }); + + receiver = spy(); + }); + + it('adds promise methods to a Vue component', () => { + expect(vm.then).to.be.a('function'); + expect(vm.catch).to.be.a('function'); + }); + + it('implements Promise.then()', done => { + vm.then(receiver); + vm.resolvePromise(); + window.setTimeout(() => { + expect(receiver.called).to.equal(true); + done(); + }, 0); + }); + + it('implements Promise.catch()', done => { + vm.catch(receiver); + vm.rejectPromise(); + window.setTimeout(() => { + expect(receiver.called).to.equal(true); + done(); + }, 0); + }); + + /* Can't figure out how to get this to work. */ + + it('resolves if a direct child that is thenable resolves'/*, done => { + vm.$mount(); + Vue.nextTick(() => { + vm.then(receiver); + vmChild.resolvePromise(); + window.setTimeout(() => { + expect(receiver.called).to.equal(true); + done(); + }, 0); + }); + }*/); +}); diff --git a/src/vue/transitions.less b/src/vue/transitions.less new file mode 100644 index 000000000..7658f7445 --- /dev/null +++ b/src/vue/transitions.less @@ -0,0 +1,49 @@ +.fade-in-out-transition { + transition: opacity 0.3s; + opacity: 1; +} + +.fade-in-out-enter, .fade-in-out-leave { + opacity: 0; +} + +.rise-in-out-transition { + transition: 0.3s transform; + opacity: 1; + transform: none; +} + +.rise-in-out-enter, .rise-in-out-leave { + transform: translateY(10%); + opacity: 0; +} + +.grow-in-out-enter { + animation: 0.3s growIn forwards; +} + +.grow-in-out-leave { + animation: 0.3s growIn reverse forwards; +} + +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +@keyframes growIn { + from { + opacity: 0; + transform: scale(0.75); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/src/welcome/img/welcome-alpha.png b/src/welcome/img/welcome-alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..92fa11097181450b48e4ad596aba4850c2b00226 GIT binary patch literal 4167 zcmaJ_XHXN0vIZle2Ly}>JyZ#VUKN7$-g}c?q!-1Y^j-sqQj{VnAX21B$AlU{AOeRX zC3HCSrXW)CJZI*;_v6moo!R|%f9%Z8&bK?Wn`Ef3K}*FSeozGFqW$6$7^~UE zyhP~m8~-W84S+7J6{#gw<|JF>>IVx&HN2O|=%RJ|O*a=Xrp3Pub_@H3bpWok(C4!M zA}TpJXD0(8TRCauPO39$i63@8GDha`jVJ}A280wPdJmyry+Fqx^3Z+SS~C6MFZ+U8 zfg>5~sOgM$P@?m<06+1yj3HB3i*kcs=#N&g`8}@($COE)zWO5-Ml!7e+k6EbEWt{B zPfgUBtX4o}LfP%YW)Eij7cLEBPp%eQL+*w@w=O8$`c})W@5TFQ)i*k2B_{3ubdyDf zMhcv@y+&ZGU#$Lp{Jhkz$Tp*+cVGE!vuR$lfZ47cwz)xNid)UqmBId$vooLe$$q^z zeDzeR;B!DB@xp`+|l!yRa0!HL?9%vV_;NBKF4|JcoWRO+$IpSNr%a0IIN*2ld<}(-LN{GL+Ua zQ*LF#1o(BB zyVuJ!f28G8>g`OYbLFnJ_ZKfrCieQkNfz11AYG|%dIv>$$nrBdmR^|xmh7$@SGdkc z3^AXw`%n>&VwR{DHS7}lVqZYkMma-ct245x(T1&|e1?9ds|k3krr1s=_~48;;KP-UlUm zMJbHGbZUy#<-B$}mt<}g@iCHzjQzG_H<`o?eLzB~FPn#-xdbPBB}_U$uwo z(1g>hL{YDgu|-%tL2P<_a7t_*4X-tZct4^;ejRRN z&&@TP_hI|`F|VJm!YXr|vuevZ{FXtrKtXSqYi+txm-Ai!yN^VB zSPM$A?Yshq0@nw84z^G^t{UYj5*->GUI#^N_}BjO+(itm1qQikig1|IQugZVmyhqtlU!r=`a<7+>M9*;c~Es57ZmF|6FWu(IY z=uM}v-uNJTIzN+hpHU(kC;D!4cyV*l-PbIos>%PRe-In|XIaAwrWCr@^CtK=>ruZQ z%s&hSR%B%}j~2n>cn%~wB@{br zQsO6UvAVJHQ4(4)@DXA>;Gr+gYQt0a62~2$`I!xGV(VxBa(@1b^$@%^(q`IE#&j5) z5xt=$-xpNV#q|uS&;AOP>|QByNgL%{WLjqyeifj-G!u^vNF%v3FmWUL;K@xHiQk_$ zZFtL8e(8VknAI0UkE<4~Y_rEOJY<+D;xW2inQy zUGB@`Ja-oOmG+^?_9}Mxvp6V$ZGwNk{Fup~)#uZVvgyC5uF(r(!~PD6+jGV>%eE*e z_+X)is+CMux75Z>w||9W+!g7<^FFob`}avgK(Uv;RP1*drVT2UTsvjQDTm;_=8+7L zNsED$URDldcFhq@6(`q2?{=4Iagvc+n_lP@tO&S5URGf zWw%l61f6nlDZNeRlY77Sy##WZ0vQGs%&2d@`3}8fr8GKNIlyomUay)okQvwqq;ZA8 z>tmCv#;R^?kYC%san>UJ=j3tflQ+ib{*)e`wI(7E5?16fYef+w0iMp)WyhiL)lT@vvD2p31a z*ia6_1^=TKCX{nQpvkLdK@;nNz;R6XTQ@)T`L4fVT!-e3A2^I}M7X)9PdP_+ZokcF z&0XA~_EXXiqLD!=&08J*FpT)HO57Ku7Rb>{4Yv>D5O^;?wcL84LM2c{4pAtaR8ce6 z(ye37iCY`a%SOgkFCOh8m*Yz_)*eSTNT7q_m|o<6mg{?7%EVCg9YuX~yksfvPYP)c zx-ArBA-B=Q4Y;U`!pOy5(E1{$(;HbaR4CV?O?-^+SYF3yObSNuZ-ToP?CN&CU)Py| zeAPtuy|t)#N!I@#^Z(}U_L7L&Inj3yZ=pu5FmvwqP{UJ9-S|Wh^P`Cp&6dpHlC(^=tR54NJT}S_N-Ui90dcHj{fAj7M zAo45s8V?-%b`km6Y-}ge5!doi@5gSHm%SUua6?z;-Z64-&tX|7{>xy1JO{m%m*vcQdk+)PCC{91oX?wMY?%7S2>_8au+chR_p#)pXE9kg-LEsxU zk!E@_AZVh$tNfvJaEGghXNYa|#c_mGohNo$Xp0CV1O_ixFSoH?=(zu4J15-xbmhu9 zvRsYY_wAlX07yITEO?{AO{;0z2opw~AL6Qo2Lh}Q8Rag?4@U4}KBDNRY0mC~geZ$| z-3HZz59V`~zGQu@gumXOL~%@5?a`n1poC*xI1w(cIurAswq!^`Gl3CBhQO76Tu_Zt z_Oe`b4R!nSNFhf#pLv^G(n#eXYsd0mZMCxQfYuT|U_Cz}FbC=*0F_GSwawi)Q<+kS z;3g%%y(@cd3D+!RDpg81LBeX=avU^lc^G3yG7+gLMdz7Zr}m zI>zODWy)dMqy|K6j%<%Y+YzO)p7b)Hq1G&9&C1py39CV{u=ZpVIBf~mL6*YEn!3uf z#Ga%pnbzpXRG2dNOrq21uJz=xB~^!pUe((0gTjdhLXD6dCbj4JNU#k{s!ACB@(??g z7PV*|Vy4=1-<7jOPq*g+vhz%yjwmhchD*p`Rog)|;~)+Gis;P7X~vr?I(omkD5I z?qfi>0tio8KBZGMG{3ei@sUqFYuiJB9M4`wB{tQ9QD0OPWBJaMTsZff=w&4zd(-L6 zBt#~)L~OE`D5@!x8rZT#wYzYZ2!U?;lJ(zoP!U4GAkUQI;Nj*4n0sU+y!0UzQ|XbJV(+Jm(XCr>}Ja& zQ4HH+tmLAZ+k~N%<_SuKkgsL}bO2#(sHN?IT;s>wOWnXSFQLNcQ%{+~R^=BP3Lk`Z zWKYK>L@8R1>H+vZKLDQn4*b7^;6Jy!chopW|}_t);8nT<6v)TW2>Kmh;%y$(jp(bIK*Q;#ePpDY0H!Mp$U-TS-6+Z| zq7Jpt5L0IpW2>WOhkCpeSEqgZX`Rn6^MS&C+cV_;QVzkj{rPIi*utsHTE6#$>gmiP zZFjiy)Wwzdy%hg;Am9_PTfrR2hIh$+^%#u}nH}7GtFN|OFL$?R+7zL7k8SfzTn&$B z-Da8o+L;)adrrd?DMn- zqnQ<$zIpeQe_S<@l&ZAU@vO|a@xpzjw-m8AZv0#B-0H<76i+U{2=z=DlWnrDKP$1h zk^3^-;7xqF?GYlDC69XZC^*9KTqtME0`seheElvQQvXQ7B!iB!OeZ+_OG#i$8Jg%C zz|c^Td=kI3V7pMcc@377sNY=uN4J=BHXVs2ZY2l=wxjM*pP=n|yjZ+iCQ`puB2$U9 z%57zON!J;~^G>-_C6hAx^I=PR)+!o3bprHB9V6tfBeUx)Ss!dMX_8Jg9W`ktpRH0N z`s@DP@Xz@yim_QwIkjw530|%0Ez`~wd4v__Z4tn0dP&Pv=!7x$mP5=AG53C_WD7|) zS2l5=D|=I_|I{+8H_*TO_RVksX=qgqr#v59&3?r8A9G;?-Pzu}$_R{?uCkm49K-BFZ?C+55uc$qG`!2Ocd|6g?+3TrwC}x9 zL-)qq*@cL{4na>ViSDL#1D&G66693ZB%#)D+DAn zjSwC+_d$X9Khr<3(P6Ql660`JB|VSk66&3L%?*8RJlHD+=hUj~o*!SkMtW!rZxJo# zWqgk-l8RvAY~9g36E)oRYAXIj_~72e<)wVUXJ>&{#vZV+NUmH`c7j$%0k$Drh)2Cn1%X9VV@Mw}LzF!o9OBH{{cQZ}4AvdVK zw(m5H^Wb0tw0uPF=n$FSdeF$y^^WK6;GR63pap?PGHJFrL0ukMq8ue&Q!KQ4b>EOF zb_y)gJ0ZUd0BKD6zXmo zj-Doz&TV@$j@OZzz4{I6xCA)@C=|uYB-HNyBUY8?{)p|MHe#F39^oOGFRHi-Uvbk` z!m-}i&t*CPa#(_L%~!9S=MoH)@N|5dJf`&g_oJ1SWcGM695JCv>o3XC=SZp#aZ$pY zS?dq?of&o`cB6Uzk-l=~dOak@QLThMg1h6ir*fvR$Y}HA)CPja5Eq{#2m@bdxlZDx zD{gm_c({{hq(|&BrlRmMFoEw$*52sSKZqme)w?t9<*Oa7*O zSxA~Ru`06k&Ipm7Ow-f(IgxgGvGMB_63Uluiu?JYwOBq!Dk@c)VUEk_ zE_uT3=Ci#8UPX#}zBQ9!4G&?40D-TkYP*G@^%AwH{{0^_WH=VPwV}K`cGh;jwUMlD z8RQrKf^aqakg&bIkxUKsrMf4pM9X@~NiW}j^BR`m?(oBW=!XO}z7}pnx!nV+&u^z~ z!qu&x!RkdNVzI{qn>cl^a@pu-gDm#1^M45AX3O6er+CS^^h-h%&udDq5BHJCd<`w1ToVU2a;`!#r^rcI!{Td3OvM9-O%x%BCnz)#vClXqLIW zKOi0!pJ;)P8Pjau7WlA9;Rp+Pja^|Hx#G~o71ANyPfV21^c**S*tFF4o-~i;qc0xf>)nVMk;`9u`?*`_vnhqcxSZ7?}TNR+-?$L3nYr>PeKD zZ_FABbc~V_w4}o2dBH&Qm{uR6a0T_!aG;)`NPgD5(rQEf?ax7#W@35)CH_245ye=B z91$dYKe7J%)CIk@gjK-$d1vVTkXkNY?{z)Nq3ymjXO(q)Lj1uSgXkTL2erH-!`%#> zcconeoadqf5w&G~C(k=QL#)9F5Tlc!BS9#gXld;uJYXo?v)`6|jFj^+Ir@D*htG}^ z?u73K{#H=f=BgMLB|1G}mkH%!Fm8vG44bq=ge%1CC{1x=Lg&6;{{O1}dta974O;5V$Ida5faVmp9TRWTfFPF}(^lq-dro0eC)FoA`ZXaA(fmX_Oat)1#HKVNYDp#VJuO>q0!~he?=o+IE-@ z`#r}Uz`we{V!)>9uWO@h%`h;Xum&4H;>fY8s1qui^oulpwUKv?J^FMq{K&!n{+N$l z?A)V&q3jg6WS4p^^k<4Sd*6r}Gb){VO3bI*M(V5$qz<=I;JMS%yZqeohY1J1%CNcT zh@Ww486KhsDszV1@lWBSRj^@xZs!mngVI%tT;+bUw>mig>2exdsY4>eU7@y8eC0s* zWA`Uf9$elDRY}3riAG^lvWk)?Y+SA-;AZi*@zcUdGBi1G==dtsI2`+xH9SN?dHVic zFs98pg$SUz&pkkscw$u)kQ`Xc&@y=_-$4iC%r0e*MZK1Kq!Hh=vt zZ~$XeEq057Lo~tym-f#B38roKZpH6wIsEUBy0&?$>QJxAukQ8-AyO30zyAR8Icy() zMB-FytS`F2iDUG915Gam^*DZ3Cx7zZXt zF&3XS;wEU*&2;d>r%{~E#U$yPBo({A2< zO=3=`>b<9L>i4>e03u1JVJMS;hTe6|$M(MESv=3AW~;UVNhSbrn&ykmiNn^O(c5QQ z7a5b@uX2K2iL4*SV|n`Gv@+S5*i<`j-*FvTnr0`9%Q&aFB=L$~9IrcS!i&yt#^IU`RNJY@$VV$uVTXpGUB4h+oQ&5SbL zDsgjf>|%;ri)_4{$M~=1gTzw|(BN4*7*WZiT>>Gy=~oh*iFCGOmY#7G9K3t>P6uSI z+r*feWxD;n{CFg8&}OoE(M3sBPnXsF%MxTJUH!g_Gi%XJ<+ z%b&)@K_CT>X9PsKpH^ctT-qPYMAh>4Rf?iIXFjg2S%Zm2RL0Fr@t!>-3?QVVde?Q;%!<(6$lT4DCWRjfU zK@y>)APEnH0|Nj6;H9O+RQ~bN|1uN=006RXkPG#%0%0sGDfW;5ORu6G{{I-XgOrx@ zzY#0{We^dnEDr#H2p}yc{KI4Ys>>?gbj6k8+4sc!2{gY0W-BHHSdYxxD~>iK&q5V% zBJbcg`tHF;iV{y3Mi-WbHGx1I%9=bzc+7>z+H5++H4HN(Wf|XKZaIcmgCdEiQurGy zAsKDZ0hu~6Q3?u08lVTCkGqxPIdejIvi+iOZf0(#_N1cs$^dq$t>5Kylk1&&QzfP~ zvi&6o0e}Jq)PFNxWVjRJzWdFwpZfTgZZ>-t-8XUFdGdZB?Zc6Qs$X9O53QguOomBu zZEQ=CLI3uN*{VJkrOGa6oSPMo^sjz+N^bIc+uJE}NFOAI4ihE_bio=dcv?z=q-?Id z_W#uKgpMH$TsrZ)v}Zo~{xL`l6V}AF=LvD29|3YM&=z=WT}JrjDHXQoXKBF(GR>xV zZQS8nxP8xfErCN0Fjzf8US4|!MmYc^PQ$j{1*gL5F4x)j#&%K70`G9Xjt#ss$ZcDx znO_ZGeD)pNgB#53-_jV%j^LRQd+8iT80QP1Jt3}zqrwFKI%#glw=HZYY?^sGfTSy1 zfCM7?ogVF52BnHmD40iRv01IKF^68FgyG6v%dPqD#wLddyE!x-O)22}?wRer-{Y+f zv3i{b)fT^UD-NI+Cm53UH6%9(<&EE6SX1tF!VBE7Htc!ANf?hS;Px#@)e%cU(yJbD ze#fG_=y;`b2=0Go;7@Z_}Quw}68lpiQAD&x9cE!f(gtVh^xo#jNWm{90~sDo0^ zsKGEcn!2A?{p(Ho--!^XLW^S(bvTN%O-T=ka8)U|WqA4ZnscI3{(eP$5tr3^J|19x ziaJm?SAHXf8ofMz!`)iokOn5Xt$;IKL)k%bfrT4dW4Ou}>uu;2h8jtskt&E|;Y0}w zU%rV#ZQK?rM$*{H5yxg!bj(rK5GzM_$d@XyUzhfbub)Y7gPjoo!T@;JUme|U_vcd^ zN2qMn5a62|wII43U$=so$m+(MF7;PGp$u&7Vlpa#^WiHsf**>1*1w~lyM{H*WFFS|}5U0`< z32W|8#B1zio~8G}ez!r0v-c1-hgcqshFaU3y-!OJKGS2c@OMAZfVm)aqH+xFL6wbb`d7l=UYj; zySu&a1=Bx?gBtf@S@8}Z_L=C0lffqddNSBjs+zffKcAK)cj{N&%n0}83A<&3<~+4i zZOF7z6Jf1@+7JtW_p}Z8UvKQ~JJ?ol`))gJsNfosB@A&Qt-_hEfvfT0y?!T)>to+m z8*I{JVRdud_@mQ}$fZ`D$O(8Xl#|kcjn9B%Q4WZ4UF=vx(V(N^WYqalHV4shAV0Ag zZx&l$4$-~WZ_r$FkI((e^#S9 zmz|BA?)PLzEq{P)>#!P-9q5pn^wpP9!(jVNE;DGRX~Ib205+RZPwTU9bh4JHA5E!$ zj7iL%>|pLQ!fi4_nYTOvd-FwK<9R(&qjUGsBkLjRISeuiQk?Sa4Y#bJNRTazya8~P zFhQJ{;@vje$zbI0uI7Iqjgx*;q^bts1>iy9D1}2#c>;{K}yg;z@&nryc=~zU3@pw2RgU%+-p{Jw!IN2+nyH?zxhJYh0}u84lJAU zuCi+&v`0&pED-ixdt7-Z<&S~v!Fpa}O%ZEdEFH%WLE9f+@4X4k5rzcgVzV)+@X(7# zKFDddfY(c`8=0d^w9|)D#4SWz9C=&>&RO^|=p+#C?y!xcl5i`ilMJhme8P`eu)?ei z4pSD*OM#1tS$T@0Hf~o>gF#(U3(2_A@~m!0`sk?DwfXK;L|h`xvDOoD_8c7tdqJ*s@rzbw~NvF~rlg6INUJ{X{q~BMk@q@4nR7I5sMI7zTQ>AFZ;l7)wTXw||WqkUlYh zf}xi+2lQQg47ScO)s^BE)$q@zSoZHH$G1LTk`fYW5`6S?HBwTcNJcFr&DHuI+kR(6`{O&7GLrupnfvJqG2)TG zgiSNU>v@SL_+DVpWBc?Ea4AE$8N&$X>gvPB?t53OSUK)wU*FyZy`q*C@N-kxea;@C z+Um9LUEF*x$$15P&fC!W|0bldn8A#;ZYtP-4ya4Y;nkJ`O?53!Yro(4dq>mbr8%*o zf*2UZ+hLTOvI~+_*H*OvbXnVvU)}+iOi)fyqEs7T=6oa35+DIqN$6GH-?tE(kJTo{ zECA>=LnJCv^4Y5fiKJf~fDRK^6F9S+43yiNxuDrH#)u@|!gg2z7kaGfXKbgM^=^Z!SMXichAQvW0KZ zhVTPJZ`<=%Av3vD;pC*U*o~Qh_M*AD|1BvaYVyQ1E;U$+80Hy_xkhrfbUt1KfA6Ip zTn(qshkz_jgiJoH%i_0YHzl|-0DKTRDo@Xjz$grdrw*i-mEII(7oZz3L7YK7$jC3o z#19P7BP%EO(LRL4`v5lGEn=utLTzyRJsuUu36TpGwu$|sK;@q!>h0rFbQ~mu7;<~< zt!b$>@V+;=4qUSZ%Z&g6a{GQ0IR`=K0>Vxm|4xGG&+R>WH99f9KSPn6?bOurKO5)? zna_xl1rdDA(put#7(W2>;X5+Qc46a8AAkumftY7-hJ7r5{#`mjpgxuxj$FJ8)>C1w zxCU9BY{He22SA^IfEq6f=9m-x+r;SOmGO1}Q{yK#r^n+Zh$6Q~5g!*d^j#O-U=@nt zqlW`j9hZKvN$OGwDdS$F`lz*)6@{;pG+pBLdP;S}BIJBAXDVtJ zaDEsMEe{Zxd?^nMa0=nlR)lRsZ)Af`x=i1{lzzY!8W;%?J%9KAA{@{YKg+T8rk3(ybEnDW_uT6S2F(P*UwW zx5@EOzxyJ5-xp_i`d_K_CH{ta_MiCrudo(mT?%==x}n$wHp^RT(5xo*lZ4rJLQ$75 z?C76LF1tEn&Ezfn2NsXv)bK!Vo;sYL`jd^-)xfUBUs>^!U!?my*g78|$ zvlKFaq}eMZmA%*F9+gLHKvmXZ2UeJpC(DjiCIXS0p|~T6;~+Q59ZBudljJqisXgf1 z3y{E$BZW7*^j`^K+2$LoSt`m4CN zqdhC8VGW}k;mipzy+$&DuD;AR$GSxD#EpIA4E6J2NS73)1vmJ6Q?aUQ%ki30m=E~d z#v>dqkm5BLnC>i=Y9@rsyA1MBb41oM$y|WRb0_G9o7AJ%PaHroDtD4tBa}9-TYTNH zS9+yY3^`-BNx!+j4XTmn{kLq&Q7792dpBXXy>?2!RIcK1q%wtmeg9*8q}E<+p~{-_ znw|RjbTMnk9~U7<4`isxg78bQDK0xAiq=&PzXANb8G7D9qOGubzffWQb3(v9XXm5I zdTgF6Mgi-d1(4`jq7^%~Uu+fGate@tiJDYDO%nY2+G$N$$reC^uLc0HfknK^ATiB@ zK;jf)JGxQ>O8iiPj&h^4^xD_MDQ)lbb4$w;AZ!#;bR?Vjc-_!T8tIrHVn$bLm(H9C z>|2^SH{68&#kvK;p11!A2T>A*$gR`}xLMQkpgdX(!4*xp2nl`tD9fQ8iQ9&k9c_rd zhD44Q5a2aMX}^$QfjDwZ^Y{zh5y*scM?<-&e<^Q-55kD|rxm)gw34@$rc?X~m1<4Q;=NP*drK?AY@wh8_ z^D73T7!QIG*FJy>tQc>@Cc#l38VsW*UZ?Q@jl4dxiF}!u8caanfPE`YfMV8;ivJ&~gwCL`&5YpC?!-_P$Mwv7O{m>=se&5mqf+MSN}EDZHf03VDFqJWc;Q z>&4j2q~r*S9VW}MA72?82e($`LWvnde3X`xYA{`ud9Fh3Yhsdka@=H!AQIOE_0aEj zfYIbfaEvi&5LR*;s9S>_-x|^cI3oIVER20PG)wsKt|B_CVFWi>Sm(~AE}gM#r6T_F zg#R}~(aBG6@dYNv(kfVp;mu}kC{mswl~8I|F;#E9Ic#-pcb8Vt&F=`Rf5(``6gQpa zO0vcO2x#~D76nB(B*D@OIycgh-lPno&)Ic~072*(2 zrZC8;^p`3hF^|XXJ_|F0C@9-xcNWOp?ZR(xU$*jVJihWMyulH97B0aAhBh)sm7tpj zg<$Gc3UYIG7oI(ovD*02hR8GGkK%I7+sI6nz%#D*z&H*@eH;NYA%y1#)m*=V7) z`8JJ2a=JyZ^O1wS2HZ_=r{1+(_$)HxqgaJ*`+lb;FQNh>pgQE&WAV^Me@_3c6Vfca z!Z(#;6{G*RQ$*Noq^1EI3AL_-r%zzu0allk4JDUYZ`(p8iz+c73W7|<+SQDd z+VJjKT0`)qKTg2$;axxcM&TNaRu&gQRuoPQ-`5WO9+~csi-RLEM*@7!C`70TBsvMK zS(0cQt;&!T6Ydl;&`|kyjSM5!$ZAV9*)yC^Cm&?ceMN)tlMt}`=*Q|!Uwx=NE&8zw zsc$uoEfGg0PIbzIH&mpG8kIM0n1NKxb!W6N4=>G7PL?Pwr0$&8i&taJBI(W+_Y7l$ z_ATdM8;+?^oBL7w!ij)Qg=-@UDT!c=W^DB%J8;d^MM|Q5DB}4q_Lhuy^*+w8Aseqm zmp&|9#_(e_8E+ovei6E%9x6PQ_}}sq*?{~9irD1cQAgT~ z#r2^q^@bO&!}v`*k9#pWNEqA*7q(xEr)pF*RmJHPVr>#f!4_ha^o+q!_#{KF`I3Z< z4n(0U8fvF=UbO)-Y}J=M^=UZ>!dn;CHz%BG;@f+%3zCSRTc76>nbJu3o2!+BJm6pb z4rfsP9bbm7i~_f#^D{RV_BV2YtLL!ZPKC1%l743$veHO*Yv_;Gh}2Jg`8zq=r%R+VGNy+Z%2 z%i~wRo?wJ|CmQ~#&Etb&HnOsU?&sz)U3XaXTyf*fh1KOfAd-@0XfWsKJ;ZS9kJdU? zWgIeIfmmQ*7w&YiO0UmwPUgh;vHj5OzHa$whM|>dWhPJB|94msnSC=;3Dwv-(?#37 zM1jO!Wjo4P1|$pC*XB4+{$_)#x{@wUvmDmbhJ}w}Bh9k=etVJv-&mgNrkrir+>R_& zH!MDi^r^b?ySZCk57Z%3;Oy7lWp0-ak^K~CI4sqB#-QHM5`D)}nGO$> z@P-?445%0Sl$S+`@rTTCg##Q00Lny)H&R&V-?6;b^AJ%B1N!?Wwr-4mTrs@dWvRC2 z!jJ=ht)Az@4!7{d6RMlDm}CpKhQ{h&gg!OoBNLWp`23%wwVaCf1$*?Mal*NPb**gH zUXl($nRo^TQnR`u(c+=G$8^Iz^BDf7$|t&($YI3(lHaI4C%m>-W!-lJqi=CS-JRb3 zW=#5rSo4OlF-KV(L(O%Kb?nu<&f(Ts=xcv1^gQsL9v|ZfNy7vc?!rLG_i;<$QqoH1 z?rlo89i&#AGWpgPB8GB?#e5JPMfb1tO?~$Z`pzrue1mU$z?p<`mm8^8H>7+wH)w4O z;@KfRH}D)=Eak+8h9r)?NrmYZw_C)K>^S+0VZ52T3#LZa!t8xTclQ^$_MBlcvOz9amWXO!e9?l;H0> z?GqKhsxL>d+WXE~n%Yx(fQq!EY{W4JEM9~v#`bJT%bET{<~g+Ke{;cWc)KJORCvXe zBuzbod`B)%@~pVu29f=3J!|QT-6cJi=>Rvh6WAEMXgnUj8TiE2xOPN$2TeVdx?Fn zsSnvtru>VzY4Ct%eR7CCnYlFPB-cbq9vf?{sSM$)DX+CD|CuINTSPcOdO|3H8>9j| zBPzQv{>1vN%?`b5kJD~}eFh)&EMCf4%z_dG`sZeXEQ_xzL71sr&~c_H(2brdOO^>= zfVUUX=Wx1|*6QJW>(om~`nHM!4V(}r8?J>>d(GRozEb499L zQ=tjp)AIJ%I?h??%y1&xwJT5m(R&5}~sW1x=M)VzXg7vm!8( zxdRk1WZBl#2|OclHJXlI*Wy+eu*=90MfBa>J{5pWF;q1oUrVQ+T7O1_Z;78(iK0XC zoJSXsZI&OxtHUV5J8HN9jjKn#BPY|#LhIV3jzO8y;tF5OZI^H2?cbSt561y zx~hHSf0<__v{S^l%V&15DvcGe(!Q$o_{;X%+H(t4a0QZ095&68 z##2>h?^mCce#wbBtg<+drnj{0hf}Xna(ub^ZBbr_kSR@@BVnxt_Vk9DDHvUhRr{z? z&?pNR&R?}R5*j?e#aGL1tG|RM``-?{q}ff-`EC#KtQTf5?yI}$hf5qBJ#v!9jI)7r z9S|VPoS>|BI#<)t%!uu%?&EoF*>4TZ$KybRxDj>ypk1@un_~B51(XV3*u-p{x?fFw z3~aj^d$Jy<>lfsAbbEjy+F@1Y+e@s3q#uBm^VZhM%|$fts|it?cS;xZQe!RMnGD~g zbtVl2rwlQKxp*A+!h-ee&BTRas9Q|x@j~XfI#=o=4CxKm4bP7KL|Iu2MT&+<8U9km z&z3#r$-qFIqcBL(f4}SK6M;j6%ooq~wumgN2k>dJ+RR6K&_?RgQx5)8!gi`17d49> zN^}Z0`Lo80ec~~6vjvfaN;VnAQsdQEoxz}26cEEX2Qr=ooy%MeACuTpIA}Gcsh&w> zU~G^&%9n7;SHq`1jnMcusYW3&j>Ee@t~pY-C_U%uWx=&nt~3+EYpjhc(n5rppeBaS z>zGh-jMVC^kUe1VJ@zj0{=VYvCj1v3EY#;AkI|V8*jSAC(lr=<P!Qd*MGIeRHe=R(`a&ipE z+pUHE+E%T+d0jU{)>6pIg>X5@Gr*kdvY%{PVft{f}I%tgNa z&erFBh4m&Z$Gyk8*8H3{s?XiEDVCjrNHz4dU9*TpK6h=V=g;nN0fHjO?~?y128oSM z<_;S2Oi@EV#Q;2rIEIs*mMPYDogmf{729EN&A&nlczd@>ZN{G>^$mko;2MY}nbzq7 z{nc)n-T8-ohuPU$jSF3H^ICNOV96S2f{cBLxHus>gxY-{m0Q1Do6h#(%|wK0GwLSd zDHG-=GF@5Dddhj%z-+-#(UHJc(}skbLXM*iL<#qcCW~j{>F|SM>4+nq#EP~SN{sn^ z$Y4=%P#Rmdjq&$9M6IxvhnMgiX~oOv$f#m_F<8qPJ0lgJf?zJ4&0-eT{`1L?+=sTZ zyPcBAMOvNnUZjxU=H=>pKbpMvZs>shfbKlI-~>8|=44F=lD9|Zu*LPzu`4oxLvo3% z{gFV}B8pJ|J@_-D;MgMM%#22X4*Sf(uBaY{U03jJRj0PG?go#R*35$6V32Rw&fP`cJz@I(x2by*;=|O-g2I<5W z{b72R${g$7PsW^SCxHC8jH3}QB6VsClsKEzP$kscl zshuZzYR#`LND{pJ*T*f}B(URfBMP`v$!$}`i<1B-QKN{pSr?p{75O>XBSwvZHJO(S z`=Ku=6=_IB{F{_}6^L^dF72x9$-JbL*1lKuJyE{R<|t%30v_Reu*M6{A>02;iyk=K|`D@~H050LX#gUV_JO)5u!m zET*&Y5rN6+=b>W*q_`nU71wC)9>#aol|PU%l#2^jE7>Lb3XE;l+&hJ6CM$0r6_CpH zW~y>NPFBOL&9m2Q-k%F1Xi0lmIk>78xW8FAe*FHX2<`zdAqBfwd3qrbCvrJCys3iN zQ7bh5tFc;U?Y7@rPZ@We5(bymaTNblMETuQLK1SA zuJ2W}X?OmI>w}xixV4lHhz&uL?F_@ZC1UMeml*sXwhuEc?S_fajZ;B0;JKdTpIL2e z$DhbLED%NxQu>!aZL6VMaYIU}&b9tx=^YO@sqK$2JW-%^o63itf$P zc7n~+2DWvD<&{HoT}588+Pq{~7dZ8#jt^$8;J83W_g)*3GpzcSv8st;V{aqQ} z9@OT6fIc4G;Qe%F`{gzY+(bCtrY3cOl>}*7ZvNDkfbZ`lo$XRp;*05P40?AC%l96c z*|ClcB-g9pA4`C`k{VKzbqO@eGi1)A8JAvm^6?77*s5}oRwW{iM? zdZSun3%55B`KlP-(3CR2aoF^eO9peApg5Rz!pM5W%ruWHccWPJTsi54Ia#pd!L6 zbY7OMoUrkgqT@k2=wed>2v~Ppdk^ws!MOCp9nyFA=0QKT1Cl=obM(D0{X0e}QnQm1 z9y4}V-K?7bVoWxH%}x!k^j;d)(S>{U z&T;Sllu)`sg+n>OZy}UUGZ$Lc^D+;KLK41VS!qOq#5AE9K({i^;d)rcw2g+SW!u%C zH4xro0MMFoiR0ZakRS}k-_VSmEEr2ONy%ZV=fbwPB=&CfLHF-B;leUw)Tev4W<4fL z5M4^cJ3Y00Kf^;J;Qti>sSSN}5~7Usjwj;AiNH9fF9`+litok>Yh|Q z_lyE>5W|r7uRnV^NuA+43NlH3GBb%UD%&; zLunTfkB;^-;;G0ab!SYkYu<6i%5qZY6qdcTq`ztYVMaWC^yAm=#>^1U^J5&|l+~@5 z%r^pDi-tYYJ}kp<{b#!mTtA=SmhZOb31}&X+koOag|qF+SJZNdiw8-`E5&l&M@*14 zr~Wrj>o#ytJ>Dfe_z!mXRxK@DQ12!tO?oD1d(#$}pe(gsRVJ#uFzq_Gs=Q_V(o@S; zZh*hWZY2N?h_vSYVCip#6doenj2p8}ajwr4-K9BcM=aSVckmOEng;lnKd;-?^>eQ! z$;XjBiEMRK?!@m346e}OVH!9br9H-KO=sgS(zLzOGQb_h|1MWxn9=%FDe3T@Ry(9- zp#kWx{hWq~5WJ3CV_}9m{L_&sm+*JPYS?gtDT@sZ3#?S6Fm_OnP0i<0w|&dma>M7iwWo&LSLj8+ zFMH&BUy2nYmIP}r)B$rP6BWjnd-R@J3Io^{2fYldhB;4Xu=%)>4QsIvzf2MKT{HZO*XBQgrET zBZ6AMqup}~MeLy8Ku+K6^@_X&{Yf>Z;SJR&N3%|>Ro?j;LnFDDKDC!7X>uar0rGb* z;zgFRXDhY7lSHZH%ri?EPIk=<%^TL!r918d+Ie4Dq85-oLly?nMP)TA{Db+TBvp7$ zKXm7e0!BAzaDvdY|F8v{SUaV5Y6WH1+)99J-mEwoA*Dx+K5P|t^g?xmy>FRsewW%; zo!2mKL*ZrsA+k?@&Z!Os^?dH5e`H2*^Iz+@9 zfR9=1W|DeemvHw>&?6!5??e&(uG_C=yf2lh!BVNlSARmtttxKP>3R_=waLEc0qdg> zq4Zt?f4a&DaN!)Gg5z{8)=SEDhKKmlO&twEcR=mm$tfa> z8N=F4IT{Le!}$A70^8oniebwp=_gJ0JXN{MH=ToULu74}BgaXq|HDz`_1n%QJStViwSl~)xqd!KE z)?ha=Yuujb@PSK&?xQ_(kKbputF=wIE?A3p{X~^?xH+*8Y(ux%jd>~8-}K6ou^cFh z!J@kj5zYq#wNg2;Cs&t%l4c6!J}+9DxwzHHB2|3e+DbzU$}fkkuU?!A=59ny;Q7Ml zySu9V_?p=QjYSzas-S3)cb&|YfQ5cUDKS(FOjgbpRc@#lE>goTyi+YdT7;R88mVY? z4T3NF=mb0N;;c_i6prU%KYQYv0&HOxBC4C!S?BWRYkXyGuyJuxnJ0x=1ySTy^{)<7x(<1*E%Pxja|DmHyC0YLO{B%y*?l||4yNXKg1=2m84L+KHR#(%LrIZ+QHg=e6Cd7f2s5n3KI)EIMM%!H)Vwz_0}`;lbE zUN4sC@L*TuS0oRe=ZPNY|3cGq z;$pNF(KkF=dO0_p2d*etWCIYZD|0IB%X8^gfrHD*=a$&$sFh<~G}^CoX1FQ%J}yDJ z&R?z%dj}k7RrH`(%h@ zwLc|GWrnbWqike4yxa3noc1%`qgDdZDe*!K{G~JJl#_oQKMynV& zbwpF7`YZtOvzRiPZ!KRx{U43-zAF!iHZ`4UA|6^yasa=)O(F)u11xQA=Gdir2lGqYXVX%YjW7r z$7(oR#?Z$SoH_|09(|;K2aM%qA zg6l-q1VidHAz2co`IR%k$hci~-cu3t4IhscZE~0{L2ZsJs~!m|=gq_lZQdaB-4A}C z4UGp2-~d-y^31=#4B3d}O>b&0W=vmyK0~=nE6xqLWTf(eJw(mVRcfYO&f|L^Bk01G?8){|#Lx3^?s>3(jxQD4Uj=0^RP1O9C{|FHyfbh|PgEqBx_YlbHz&FLN` z5hwqnqYo`6uTsQa`%t5Njtg&ql}=mcv^f3;s&ywQGCWtFX)%Z0LfYo=_&?v;zGJ$e zU0p5TL$WV^%lCboZ-sE^0mU*!Cv$-~gq_c4+4Uov@h@<3utk|Jrn2?Dt|UQPxgrh| zP5@_R6vvl>d=^17!-|Tqrd)IS&qU!$?IP6~Wzt6))yCOiQeNrEf)}pidGU)en4xe5 z$YgS^@3+w28KSd441Qm2MU;8^cJbFLxi(`=m0Uj^w*R*8bjxzUoH%%7>HxvItf`TQ_FV#W4fv&Ax>_LagRGs;rkG8%TbM_31O ztJ5`bf`*Vu1`1dWJa(&&_@C)~*7v02n40a5Iv)pZemq$_ezw$-Cy3vm(WBSVaeCOP z^2QHzIwBWydTP*6cv}Pe znrGYrn${+X;iOe-U{dQvq<|Q*D`~O`k0HWoRH-p0W8TtpXb(q}CP~5Lag?HgA1z-x zBDu_o5K56Hatim9`ts6xv}ijl1$bjXsK8ffCUpif-(YuoZ2sIxmMx|D%Etb_T&z!u zdl`9i`iWGe^jSbSv&ic{KQwq8aaRm<2}cE2ehWcYY+j|A;J-Ij!+%sPJ9}!TJS^+er!35cO0**29CQdMGR`buKnH0 z9^G#TUKrLd1#cNS|D0nKRmOtwIdBsD)vx-A+_f)P^$=Jh5p?>@sH@oi#}Y(oP)5^u z55<?^Azp9kk#MFpA<^*So%&5xZW|~j4Od|Db?|)xhe9mro3idYQQWo&}llz6inn~s3|D(cy` zmfM}d(R795t8DR$%~eFkpu&L@ z;tt_=vKNwe-)m+vfXy9><H~l!Wv+hEm=<{>a*n7Z7IJ2Y*fg0lDv_iuUyd40 zX6J^@FL~(1rF7^D9WKATbx^%lz=OhU-D6Y`PMkXBOQjFS2EgcQdDV@K`iQ(iqNvfM zsJ*yLHF*hcI>O>CS}dK?W>Ya&+k2+$&7?IBYY+k7fspvUIxbHLC*`+O!Zl7vZDR!I zAs1WImk7JnV7Va)n`0=+GVWF2q;?uHcTmD=pb;pWc!?3GMuoI=d5A{NxNzXO9sD&_ z4!V{ENw8L`^(+#Zo{7n-5LOpU{cvOh41{!y)^ckH2V+d=$!*Pvy^kW{?uI>_lO52A z%?Z!n7`=_{+EOm3kQ-3PBD{dn$f6SPLQ@J|Z*_v5OBv8M$f*f|S(mZ-BU=eR)Jm>i z>fbU*p(YK@hv-zSWNNuqULw8>#S+An~ zZ7F-N{toBEFZ?@%J)hyi5Gd-2b#I&Opk2kGjRydp8a*8F7bYXF<&M9^=On z+>3Sn$pURhsfh&TrB)y3YT9~)KZ`ERo|cJ#xiEPlHk{t z^;;^(#wKetf$x|2&D8=;f758C*8cU>^!F*PUC|_gkhb0tShe5aXsq6gd(+dTfOq=4Ci>Y-U%|)4 z<2r?JaL#F*!8SS$8|1fvp*sM!bM9P~3SV4i6eozGR}?h!lvQU6N1{4I6m`8coUcf! z#RK2aFCfuMCG^rbchld%EY4cSe_5bl}Rwfpa9 PB|utSL99l^Fz|l>JXn1R literal 0 HcmV?d00001 diff --git a/src/welcome/img/welcome-save.png b/src/welcome/img/welcome-save.png new file mode 100644 index 0000000000000000000000000000000000000000..c09380aeea396a13ba0e9c44f61b53b5f4b5a70b GIT binary patch literal 5308 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 O0000YAgV-e->eN z{!%RG+eCQvQFlq&_uXhMCqZ~vNh17;m>TDf~0WA;N3boAksYIATIgOXRLX~cbmuNMXxvNE^%oe;}dBy|<1v2{v z`hF$61-)DtD8d%=irDM|wq({(mshBsT@$l`WC*@G_WTT)9=8-Fn+Ibpc3+_gPqjtv z#D^iUE*b2M&XScO)xV?Zui9HFBR&1LHKSSYhLNnWE#ymLj#AlJj|ln^MW$T%0gvV+!hVSO_VX8(s-DIszY+5sN*421zd7DICpJ3J9 zw$tFY&4*r~^^Vo>)?wG2jdTe*QRQ@8X{am5^R7eQPvZ+Q#Tl`V-kM2L3fo-?Lo1if zntgHwai8_A*|(MgY|nuuREKyBH_)^CM+f8z(Z>0^ zUGO)3-3qMT>kF2}eI7muw0+eY_|&Rpr_5QX1M(JtF4Or}S^qO5fAN5;$8H(3PU-Gb z*Cu=-WUns8;o|!OK8Bzcah+@`V}_vE5Z0nTHv5&Ln4!pQ({BNxtY9K?2XPsJWCE>%8G!>Ha>{?;+z@+=*{9KUH?)M@NH0Oc+a1}YLKq-Eb zTcH!-m_tu@-*6_xA5jjl1%~HmI%YUD^~;`#9C{%Qy#ZF8+dcmtlCuFCWajJ;w)1sW z=LrP@7_Hg+0r3Yvyc=J$;;S#);Nv3}&Dqvx@0Xb(QzXop$DxuGZ5jz(f7Q;S((DgQ zvTOOLiSqTcl4Ib6AZoN-S4i84{&N{g<l#w@EGqKfw2~Yx^cmcFdS~}V2j-Z*Krk=)J zGdgjQEFk5k2YkG044OM3j4V)I?^FZ<=e8PJQ;jyut5*eN7vscQd~z~j{Z?8_q=TD*V%DPA|&afO7$wG z9O0jm$YdGx@q@AEi~ANMNRe-PL%DS_z!|foNa)zHUhVqg9^dI0TswSfKN?vp*glr| zZ85M~Ux*>J>6!#&jO;_d+XY;cdfv4tIG~)idfkL{MJ;vCMZ_pHx}s2D}A0g^37uZX?oc0LKmQ<)28^8r}liAu*__`ZJVMP?E`I zX8ppcabY4V{}8MIb6@~!mUqbll2oB1EARiMAX%D!1u->L0NZXmlz>Eo^jQXfpqWpl z1=>Xj@|`3NfZiZKMGTcUcvJR8aFw3<&v6i;iTTX{yd!LIK)MtolH&>;_8N0ZT>UG$;6J6Q>)!Gwt-Fc-6vG!sN2u-})4aMJApRvQN zDK!cDF0p)exSZ4?wPm=xY3h(dNz~{ERhx&V$ggf`KEynXT)6S^OaCqv*f-O#LxpN) r!N%2X5-s~z6pHI}|BsPVYuOd-srKnN@GUy^`$vSZcCf0o@Jap`ZVh^e literal 0 HcmV?d00001 diff --git a/src/welcome/index.html b/src/welcome/index.html new file mode 100644 index 000000000..0624c4349 --- /dev/null +++ b/src/welcome/index.html @@ -0,0 +1,74 @@ +
+
+

+ {{ 'Hi!' | say }} +

+ +

+ {{ 'Twine is an open-source tool for telling interactive, nonlinear stories. There are a few things you should know before you get started.' | say }} +

+ +

+ + {{ 'Skip' | say }} +

+
+ +
+

+ {{ 'New here?' | say }} +

+ +

+ {{{ "<strong>If you've never used Twine before,</strong> then welcome! The <a href=\"http://twinery.org/2guide\" target=\"_blank\">Twine 2 Guide</a> and the official wiki in general, are a great place to learn. Keep in mind that some articles on the wiki at larger were written for Twine 1, which is a little bit different than this version. But most of the concepts are the same." | say }}} +

+ +

+ {{{ 'You can also get help over at the <a href="http://twinery.org/forum" target="_blank">Twine forum, too.' | say }}} +

+ +

+ {{{ '<strong>If you have used Twine 1 before,</strong> the guide also has details on what has changed in this version. Chief among them is a new default story format, Harlowe. But if you find you prefer the Twine 1 scripting syntax, try using SugarCube instead.' | say }}} +

+ +

+ +

+
+ +
+

+ {{ 'Your work is saved only in your browser.' | say }} +

+ +

+ {{{ "That means you don't need to create an account to use Twine 2, and everything you create isn't stored on a server somewhere else — it stays right in your browser." | say }}} +

+ +

+ {{{ "Two <b>very important</b> things to remember, though. Since your work is saved only in your browser, if you clear its saved data, then you'll lose your work! Not good. Remember to use that <i class=\"fa fa-briefcase\"></i> <strong>Archive</strong> button often. You can also publish individual stories to files using the <i class=\"fa fa-cog\"></i> menu on each story in the story list. Both archive and story files can always be re-imported into Twine." | say }}} +

+ +

+ {{{ "Secondly, <b>anyone who can use this browser can see and make changes to your work</b>. So if you've got a nosy kid brother, look into setting up a separate profile for yourself." | say }}} +

+ +

+ +

+
+ +
+

+ {{ "That's it!" | say }} +

+ +

+ {{ 'Thanks for reading, and have fun with Twine.' | say }} +

+ +

+ +

+
+
diff --git a/src/welcome/index.js b/src/welcome/index.js new file mode 100644 index 000000000..b4080137d --- /dev/null +++ b/src/welcome/index.js @@ -0,0 +1,48 @@ +/** + Manages showing the user a quick set of intro information, and then + records that it's been shown. + + @class WelcomeView + @extends Backbone.Marionette.ItemView +**/ + +'use strict'; +const Vue = require('vue'); +const scroll = require('scroll'); +const { setPref } = require('../data/actions/pref'); + +require('./index.less'); + +module.exports = Vue.extend({ + template: require('./index.html'), + + data: () => ({ + /* How many sections are currently visible. */ + shown: 1 + }), + + methods: { + next() { + this.shown++; + + Vue.nextTick(() => { + scroll.top( + document.body, + document.querySelector( + '#welcomeView > div:last-of-type').offsetTop, + { duration: 400 }); + }); + }, + + finish() { + this.setPref('welcomeSeen', true); + window.location.hash = '#stories'; + } + }, + + vuex: { + actions: { + setPref + } + } +}); diff --git a/src/welcome/index.less b/src/welcome/index.less new file mode 100644 index 000000000..feaa84623 --- /dev/null +++ b/src/welcome/index.less @@ -0,0 +1,51 @@ +@import '../common/metrics.less'; + +#welcomeView { + > div { + padding-left: 220px; + width: 45rem; + margin: 2 * @len-extra-large auto; + min-height: 220px; + position: relative; + + &:before { + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 200px; + bottom: 0; + background-position: center; + background-repeat: no-repeat; + } + } + + .hi:before { + background-image: url('img/welcome-logo.png'); + } + + .alpha:before { + /* http://thenounproject.com/term/construction/5853/ */ + background-image: url('img/welcome-alpha.png'); + } + + .save:before { + /* http://thenounproject.com/term/document/12036/ */ + background-image: url('img/welcome-save.png'); + } + + .help:before { + /* http://thenounproject.com/term/question/2036/ */ + background-image: url('img/welcome-help.png'); + } + + .thanks:before { + /* http://thenounproject.com/term/smile/10696/ */ + background-image: url('img/welcome-thanks.png'); + } + + .buttons .skip { + padding-left: 1em; + } +} diff --git a/src/welcome/index.spec.js b/src/welcome/index.spec.js new file mode 100644 index 000000000..1746a880b --- /dev/null +++ b/src/welcome/index.spec.js @@ -0,0 +1,65 @@ +const { expect } = require('chai'); +const { spy } = require('sinon'); +let Vue = require('vue'); +const localeFilters = require('../vue/filters/locale'); +const WelcomeView = require('./index'); + +localeFilters.addTo(Vue); + +describe('', () => { + let vm; + + beforeEach(() => { + vm = new WelcomeView(); + vm.setPref = spy(); + vm.$mount(); + }); + + it('starts with one
shown', () => { + expect(vm.shown).to.equal(1); + expect(vm.$el.querySelectorAll('#welcomeView > div').length).to.equal(1); + }); + + it('shows the matching number of
s', done => { + const check = count => { + vm.shown = count; + + Vue.nextTick(() => { + expect( + vm.$el.querySelectorAll('#welcomeView > div').length + ).to.equal(count); + + if (count < 4) { + check(count + 1); + } + else { + done(); + } + }); + }; + + check(1); + }); + + it('increments the number of
s with next()', () => { + const startCount = vm.shown; + + vm.next(); + expect(vm.shown).to.equal(startCount + 1); + }); + + it('records that the user viewed it with finish()', () => { + vm.finish(); + + const args = vm.setPref.firstCall.args; + + expect(args[0]).to.equal('welcomeSeen'); + expect(args[1]).to.equal(true); + }); + + it('moves to the story list with finish()', () => { + vm.finish(); + expect(window.location.hash).to.equal('#stories'); + }); +}); + diff --git a/story-formats/harlowe-1.2.4/format.js b/story-formats/harlowe-1.2.4/format.js new file mode 100644 index 000000000..c4d9e89f4 --- /dev/null +++ b/story-formats/harlowe-1.2.4/format.js @@ -0,0 +1 @@ +window.storyFormat({"name":"Harlowe","version":"1.2.4","author":"Leon Arnott","description":"The default story format for Twine 2. See its documentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n\n\n","setup": function(){"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t-1)||e.cannotFollow&&(-1!==e.cannotFollow.indexOf(n&&n.type)||e.cannotFollow.indexOf("text")>-1&&o)||e.peek&&e.peek!==t.slice(0,e.peek.length))}function o(e){for(var t=e.innerText,o=[],i=0,l=i,s=t.length,c=null;s>i;){for(var u=t.slice(i),p=(o.length?o[0]:e).innerMode,d=0,f=p.length;f>d;d+=1){var h=a[p[d]];if(n(h,u,c,i>l)&&h.pattern.test(u)){var m=h.pattern.exec(u),g=h.fn(m),k=!1,y=0;if(g.matches){for(;y-1&&(y=o.length-1)}if(y>=o.length&&!g.isFront)continue}i>l&&e.addChild({type:"text",text:t.slice(l,i),innerMode:p}),c=e.addChild(g),i+=c.text.length,l=i,k&&(r(e,c,o[y]),o=o.slice(y+1)),c.isFrontToken()&&o.unshift(c);break}}d===f&&(i+=1,null===c&&(c={type:"text"}))}for(i>l&&e.addChild({type:"text",text:t.slice(l,i),innerMode:(o.length?o[0]:e).innerMode});o.length>0;)o.shift().demote();return e}function r(e,n,o){var r=e.children.indexOf(n),i=e.children.indexOf(o);n.children=e.children.splice(i+1,r-(i+1)),n.children.forEach(function(e){t(n,e)}),n.type=n.matches[o.type],n.innerText="";for(var a=0,l=n.children.length;l>a;a++)n.innerText+=n.children[a].text;n.start=o.start,n.text=o.text+n.innerText+n.text,Object.keys(o).forEach(function(e){Object.hasOwnProperty.call(n,e)||(n[e]=o[e])}),n.isFront&&(n.isFront=!1),e.children.splice(i,1),t(e,n)}var i=void 0,a={};e.prototype={constructor:e,addChild:function(n){var r=this.lastChildEnd(),i=new e({start:r,end:n.text&&r+n.text.length,children:[]},n);return i.innerText&&o(i),this.children.push(i),t(this,i),i},lastChild:function(){return this.children?this.children[this.children.length-1]||null:null},lastChildEnd:function(){var e=this.lastChild();return e?e.end:this.start+Math.max(0,this.text.indexOf(this.innerText))},tokenAt:function(e){if(e=this.end)return null;if(this.childAt)return this.childAt[e]&&this.childAt[e].tokenAt(e)||this;if(this.children.length)for(var t=0;t=this.end)return[];if(this.childAt)return(this.childAt[e]&&this.childAt[e].pathAt(e)||[]).concat(this);var t=[];if(this.children.length)for(var n=0;n=this.end?null:this.children?this.children.reduce(function(t,n){return t||(e>=n.start&&e0&&(e+="["+this.children+"]"),e}},i={lex:function(t,n){return o(new e({type:"root",start:n||0,end:t.length,text:t,innerText:t,children:[],childAt:{},innerMode:i.startMode}))},rules:a},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=i:"function"==typeof define&&define.amd?define("lexer",[],function(){return i}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Lexer=i):this.TwineLexer=i}).call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(t){return t&&"object"===("undefined"==typeof t?"undefined":_typeof(t))?(Object.keys(t).forEach(function(n){t[n]=e(t[n])}),t):(t+"").replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function t(){return"[^"+Array.apply(0,arguments).map(e).join("")+"]*"}function n(e){return function(){return"("+e+Array.apply(0,arguments).join("|")+")"}}var o=void 0,r=n("?:"),i=n("?!"),a=n("?="),l="[ \\f\\t\\v\xa0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000]*",s=l.replace("*","+"),c="\\b",u="\\\\\\n\\\\?|\\n\\\\",p="\\n(?!\\\\)",d="[\\w\\-\xc0-\xde\xdf-\xff\u0150\u0170\u0151\u0171]",f="[\\w\xc0-\xde\xdf-\xff\u0150\u0170\u0151\u0171]",h=r("\\n","$"),m="("+r(u,"[^\\n]")+"+)",g="\\*",k=l+"("+g+"+)"+s+m+h,y="(?:0\\.)",b=l+"("+y+"+)"+s+m+h,v=l+"-{3,}"+l+h,x=l+"(#{1,6})"+l+m+h,w=l+"(==+>|<=+|=+><=+|<==+>)"+l+h,O={opener:"\\[\\[(?!\\[)",text:"("+t("]")+")",rightSeparator:r("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+r("[^\\|\\]]","\\]"+i("\\]"))+"+)"},F=d.replace("\\-","")+"*"+d.replace("\\-","").replace("\\w","a-zA-Z")+d.replace("\\-","")+"*",A="\\$("+F+")",P="'s"+s+"("+F+")",T="("+F+")"+s+"of"+c+i("it"+c),C="'s"+s,L="of"+c,j=r("it","time")+c,S="its"+s+"("+F+")",M="its"+s,B="("+F+")"+s+"of"+s+"it"+c,E="of"+c+s+"it"+c,I={opener:"\\(",name:"("+r(d.replace("]","\\/]")+d+"*",A)+"):",closer:"\\)"},R="<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",_={name:"[a-zA-Z][\\w\\-]*",attrs:"(?:\"[^\"]*\"|'[^']*'|[^'\">])*?"},N="\\|("+d.replace("]","_]")+"*)>",q="<("+d.replace("]","_]")+"*)\\|",z="\\b(\\d+(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?|NaN)"+i("m?s")+"\\b";O.main=O.opener+r(O.text+O.rightSeparator,O.text.replace("*","*?")+O.leftSeparator)+O.text,o={upperLetter:"[A-Z\xc0-\xde\u0150\u0170]",lowerLetter:"[a-z0-9_\\-\xdf-\xff\u0151\u0171]",anyLetter:d,anyLetterStrict:f,whitespace:s,escapedLine:u,br:p,commentFront:"",tag:"<\\/?"+_.name+_.attrs+">",tagPeek:"<",scriptStyleTag:"<("+r("script","style")+")"+_.attrs+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+r("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:g,hr:v,heading:x,align:w,bulleted:k,numbered:b,delOpener:e("~~"),italicOpener:e("//"),boldOpener:e("''"),supOpener:e("^^"),strongFront:e("**"),strongBack:e("**"),emFront:e("*"),emBack:e("*"),verbatimOpener:"`+",collapsedFront:"{",collapsedBack:"}",hookAppendedFront:"\\[",hookPrependedFront:N+"\\[",hookAnonymousFront:"\\[",hookBack:"\\]"+i(q),hookAppendedBack:"\\]"+q,passageLink:O.main+O.closer,passageLinkPeek:"[[",legacyLink:O.opener+O.legacyText+O.legacySeparator+O.legacyText+O.closer,legacyLinkPeek:"[[",simpleLink:O.opener+O.legacyText+O.closer,simpleLinkPeek:"[[",macroFront:I.opener+a(I.name),macroFrontPeek:"(",macroName:I.name,groupingFront:"\\("+i(I.name),groupingFrontPeek:"(",groupingBack:"\\)",twine1Macro:R,twine1MacroPeek:"<<",property:P,propertyPeek:"'s",belongingProperty:T,possessiveOperator:C,belongingOperator:L,belongingOperatorPeek:"of",itsOperator:M,itsOperatorPeek:"its",belongingItOperator:E,belongingItOperatorPeek:"of",variable:A,variablePeek:"$",hookRef:"\\?("+d+"+)\\b",hookRefPeek:"?",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)"+c,colour:r(r("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),number:z,boolean:r("true","false")+c,identifier:j,itsProperty:S,itsPropertyPeek:"its",belongingItProperty:B,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',is:"is"+i(" not"," in")+c,isNot:"is not"+c,and:"and"+c,or:"or"+c,not:"not"+c,inequality:r("<(?!=)","<=",">(?!=)",">="),isIn:"is in"+c,contains:"contains"+c,addition:e("+")+i("="),subtraction:e("-")+i("="),multiplication:e("*")+i("="),division:r("/","%")+i("="),comma:",",spread:"\\.\\.\\."+i("\\."),to:r("to"+c,"="),into:"into"+c,augmentedAssign:r("\\+","\\-","\\*","\\/","%")+"="},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=o:"function"==typeof define&&define.amd?define("patterns",[],function(){return o}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=o):this.Patterns=o}.call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(e){function t(e){return e=e||"innerText",function(t){var n=t.reduceRight(function(e,t,n){return e||(n?t:"")},""),o={};return o[e]=n,o}}function o(e,t){var n={};return n[e]=t,function(){return{isFront:!0,matches:n,cannotCross:["verbatimOpener"]}}}function r(e,t){return Object.keys(t).forEach(function(n){var o=t[n].fn;t[n].fn=function(t){var r=o(t);return r.text||(r.text=t[0]),r.type||(r.type=n),r.innerMode||(r.innerMode=e),r}}),t}var i=Object.bind(0,null),a=[],l=[],s=r(a,{hr:{fn:i},bulleted:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},numbered:{fn:function(e){return{depth:e[1].length/2,innerText:e[2]}}},heading:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},align:{fn:function(e){var t=void 0,n=e[1],o=n.indexOf("><");return~o?(t=Math.round(o/(n.length-2)*50),25===t&&(t="center")):"<"===n[0]&&">"===n.slice(-1)?t="justify":n.indexOf(">")>-1?t="right":n.indexOf("<")>-1&&(t="left"),{align:t}}}});Object.keys(s).forEach(function(e){s[e].canFollow=[null,"br","hr","bulleted","numbered","heading","align"],s[e].cannotFollow=["text"]});var c=r(a,{twine1Macro:{fn:function(){return{type:"error",message:"Harlowe macros use a different syntax to Twine 1 and SugarCube macros."}}},br:{fn:i},emBack:{fn:function(){return{matches:{emFront:"em"},cannotCross:["verbatimOpener"]}}},strongBack:{fn:function(){return{matches:{strongFront:"strong"},cannotCross:["verbatimOpener"]}}},strongFront:{fn:function(){return{isFront:!0}}},emFront:{fn:function(){return{isFront:!0}}},boldOpener:{fn:o("boldOpener","bold")},italicOpener:{fn:o("italicOpener","italic")},delOpener:{fn:o("delOpener","del")},supOpener:{fn:o("supOpener","sup")},commentFront:{fn:function(){return{isFront:!0}}},commentBack:{fn:function(){return{matches:{commentFront:"comment"}}}},scriptStyleTag:{fn:i},tag:{fn:i},url:{fn:i},passageLink:{fn:function(e){var t=e[1],n=e[2],o=e[3];return{type:"twineLink",innerText:n?o:t,passage:t?o:n}}},simpleLink:{fn:function(e){return{type:"twineLink",innerText:e[1],passage:e[1]}}},hookPrependedFront:{fn:function(e){return{name:e[1],isFront:!0,tagPosition:"prepended"}}},hookAnonymousFront:{fn:function(){return{isFront:!0,demote:function(){this.error("This tagged hook doesn't have a matching ].")}}},canFollow:["macro","variable"]},hookAppendedFront:{fn:function(){return{isFront:!0}},cannotFollow:["macro","variable"]},hookBack:{fn:function(){return{type:"hookAppendedBack",matches:{hookPrependedFront:"hook",hookAnonymousFront:"hook"},cannotCross:["verbatimOpener"]}}},hookAppendedBack:{fn:function(e){return{name:e[1],tagPosition:"appended",matches:{hookAppendedFront:"hook"},cannotCross:["verbatimOpener"]}}},verbatimOpener:{fn:function(e){var t=e[0].length,n={};return n["verbatim"+t]="verbatim",{type:"verbatim"+t,isFront:!0,matches:n}}},collapsedFront:{fn:function(){return{isFront:!0}}},collapsedBack:{fn:function(){return{matches:{collapsedFront:"collapsed"},cannotCross:["verbatimOpener"]}}},escapedLine:{fn:i},legacyLink:{fn:function(e){return{type:"twineLink",innerText:e[1],passage:e[2]}}}}),u=r(l,{macroFront:{fn:function(e){return{isFront:!0,name:e[1]}}},groupingBack:{fn:function(){return{matches:{groupingFront:"grouping",macroFront:"macro"},cannotCross:["singleStringOpener","doubleStringOpener"]}}},hookRef:{fn:t("name")},variable:{fn:t("name")},whitespace:{fn:i,cannotFollow:"text"}}),p=r(l,Object.assign({macroName:{canFollow:["macroFront"],fn:function(e){return e[2]?{isMethodCall:!0,innerText:e[2]}:{isMethodCall:!1}}},groupingFront:{fn:function(){return{isFront:!0}}},property:{fn:t("name"),canFollow:["variable","hookRef","property","itsProperty","belongingItProperty","macro","grouping","string","boolean","number"]},possessiveOperator:{fn:i},itsProperty:{cannotFollow:["text"],fn:t("name")},itsOperator:{cannotFollow:["text"],fn:i},belongingItProperty:{cannotFollow:["text"],fn:t("name")},belongingItOperator:{cannotFollow:["text"],fn:i},belongingProperty:{cannotFollow:["text"],fn:t("name")},belongingOperator:{cannotFollow:["text"],fn:i},escapedStringChar:{fn:function(){return{type:"text"}}},singleStringOpener:{fn:function(){return{isFront:!0,matches:{singleStringOpener:"string"}}}},doubleStringOpener:{fn:function(){return{isFront:!0,matches:{doubleStringOpener:"string"}}}},cssTime:{fn:function(e){return{value:+e[1]*("s"===e[2].toLowerCase()?1e3:1)}}},colour:{cannotFollow:["text"],fn:function(e){var t,n=e[0].toLowerCase(),o={red:"e61919",orange:"e68019",yellow:"e5e619",lime:"80e619",green:"19e619",cyan:"19e5e6",aqua:"19e5e6",blue:"197fe6",navy:"1919e6",purple:"7f19e6",fuchsia:"e619e5",magenta:"e619e5",white:"fff",black:"000",gray:"888",grey:"888"};return t=Object.hasOwnProperty.call(o,n)?"#"+o[n]:n,{colour:t}}},number:{fn:function(e){return{value:parseFloat(e[0])}}},addition:{fn:i},subtraction:{fn:i},multiplication:{fn:i},division:{fn:i},inequality:{fn:function(e){return{operator:e[0]}}},augmentedAssign:{fn:function(e){return{operator:e[0][0]}}},identifier:{fn:t("name"),cannotFollow:["text"]}},["boolean","is","to","into","and","or","not","isNot","contains","isIn"].reduce(function(e,t){return e[t]={fn:i,cannotFollow:["text"]},e},{}),["comma","spread","addition","subtraction","multiplication","division"].reduce(function(e,t){return e[t]={fn:i},e},{})));a.push.apply(a,_toConsumableArray(Object.keys(s)).concat(_toConsumableArray(Object.keys(c)),_toConsumableArray(Object.keys(u)))),l.push.apply(l,_toConsumableArray(Object.keys(u)).concat(_toConsumableArray(Object.keys(p))));var d=Object.assign({},s,c,u,p);return Object.keys(d).forEach(function(e){var t=n[e];d[e].pattern="string"!=typeof t?t:new RegExp("^(?:"+t+")","i"),n[e+"Peek"]&&(d[e].peek=n[e+"Peek"])}),Object.assign(e.rules,d),e.startMode=a,e}function t(t){var o=Object.freeze({lex:e(t).lex,Patterns:n});return o}var n=void 0;Object.assign=Object.assign||function(e){for(var t=1;tHTML tags

are available.","To display special symbols without them being transformed, put them between `backticks`.","To link to another passage, write the link text and the passage name like this: [[link text->passage name]]\nor this: [[passage name<-link text]]\nor this: [[link text]].","Macros like (set:) and (display:) are the programming of your passage. If you've (set:) a $variable, you can just enter its name to print it out.","To make a 'hook', put [single square brackets] around text - or leave it empty [] - then put a macro like (if:), a $variable, or a |nametag> outside the front, |like>[so].","Hooks can be used for many things: showing text (if:) something happened, applying a (text-style:), making a place to (append:) text later on, and much more!","Consult the Harlowe documentation for more information."].join("\n\n"))),{pos:0}},blankLine:function(e){e.pos++},token:function(n,o){c&&c();var r=a.pathAt(o.pos),i=r[0];if(!i)return o.pos++,n.next(),null;for(;i===i.tokenAt(o.pos)&&!n.eol();)o.pos++,n.next();n.eol()&&o.pos++;for(var l={},s="",u=0;u1&&(d+="-"+l[d]),p){case"macroName":-1===t.indexOf(e(r[u].text.slice(0,-1)))&&(d+=" harlowe-1-error")}s+=d+" "}return s}}});var o=document.querySelector("style#cm-harlowe-1");o||(o=document.createElement("style"),o.setAttribute("id","cm-harlowe-1"),document.head.appendChild(o)),o.innerHTML=function(){function e(e,t,n){return function(o){return"background-color: hsla("+e+","+t+"%,"+n+"%,"+o+");"}}var t=e(40,100,50),n=e(220,100,50),o=function(t){return e(320,44,50)(t)+"color: #a84186;"},r="color: firebrick !important; background-color: hsla(17, 100%, 74%, 0.74) !important;",i="font-weight:100; color: hsla(0,0,0,0.5)";return{root:"box-sizing:border-box;",cursor:"border-bottom: 2px solid darkgray;",hook:t(.05),"hook-2":t(.1),"hook-3":t(.15),"hook-4":t(.2),"hook-5":t(.25),"hook-6":t(.3),"hook-7":t(.35),"hook-8":t(.4),"^=hook , ^=hook-":"font-weight:bold;",error:r,macro:o(.05),"macro-2":o(.1),"macro-3":o(.15),"macro-4":o(.2),"macro-5":o(.25),"macro-6":o(.3),"macro-7":o(.35),"macro-8":o(.4),macroName:"font-style:italic;","^=macro ":"font-weight:bold;","bold, strong":"font-weight:bold;","italic, em":"font-style:italic;",sup:"vertical-align: super;font-size:0.8em;",verbatim:"background-color: hsla(0,0%,50%,0.1);","^=bold, ^=strong, ^=italic, ^=em, ^=sup, ^=verbatim":i,"^=collapsed":"font-weight:bold; color: hsl(201, 100%, 30%);",collapsed:n(.025),"collapsed.hook":n(.05),"collapsed.hook-2":n(.1),"collapsed.hook-3":n(.15),"collapsed.hook-4":n(.2),"collapsed.hook-5":n(.25),"collapsed.hook-6":n(.3),"collapsed.hook-7":n(.35),"collapsed.hook-8":n(.4),"twineLink:not(.text)":"color: #3333cc;",tag:"color: #4d4d9d;",boolean:"color: #626262;",string:"color: #008282;",number:"color: #A15000;",variable:"color: #005682;",hookRef:"color: #007f54;","variableOccurrence, hookOccurrence":"background: #7fffd4 !important;",heading:"font-weight:bold;",hr:"display:block; background-image: linear-gradient(0deg, transparent, transparent 45%, silver 45%, transparent 55%, transparent);",align:"display:block; color: hsl(14, 99%, 27%); background-color: hsla(14, 99%, 87%, 0.2);",escapedLine:"font-weight:bold; color: hsl(51, 100%, 30%);","identifier, property, belongingProperty, itsProperty, belongingItProperty, belongingItOperator":"color: #0076b2;",toString:function(){var e=this;return Object.keys(this).reduce(function(t,n){var o;return"toString"===n?t:(o=n.split(", ").map(function e(t){return t.indexOf(".")>-1?t.split(/\./g).map(e).join(""):0===t.indexOf("^=")?"[class^='cm-harlowe-1-"+t.slice(2)+"']":".cm-harlowe-1-"+t}),t+o.join(", ")+"{"+e[n]+"}")},"")}}+""}()}.call(eval("this"));}}); diff --git a/story-formats/harlowe-1.2.4/icon.svg b/story-formats/harlowe-1.2.4/icon.svg new file mode 100644 index 000000000..cbad87815 --- /dev/null +++ b/story-formats/harlowe-1.2.4/icon.svg @@ -0,0 +1,78 @@ + + + + + + + + + + image/svg+xml + + + + + + + H + + + diff --git a/story-formats/harlowe-2.0.1/format.js b/story-formats/harlowe-2.0.1/format.js new file mode 100644 index 000000000..ca8b9dd3d --- /dev/null +++ b/story-formats/harlowe-2.0.1/format.js @@ -0,0 +1,2 @@ +window.storyFormat({"name":"Harlowe","version":"2.0.1","author":"Leon Arnott","description":"The default story format for Twine 2. See its documentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n\n\n","setup": function(){"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r-1)||e.cannotFollow&&(-1!==e.cannotFollow.indexOf(n&&n.type)||e.cannotFollow.indexOf("text")>-1&&t)||e.peek&&e.peek.toLowerCase()!==r.slice(0,e.peek.length).toLowerCase())}function t(e){for(var r=e.innerText,t=[],o=0,s=o,u=r.length,l=null;u>o;){for(var m=r.slice(o),c=(t.length?t[0]:e).innerMode,g=0,p=c.length;p>g;g+=1){var d=i[c[g]];if(n(d,m,l,o>s)&&d.pattern.test(m)){var h=d.pattern.exec(m),f=d.fn(h),y=!1,b=0;if(f.matches){for(;b-1&&(b=t.length-1)}if(b>=t.length&&!f.isFront)continue}o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:c}),l=e.addChild(f),o+=l.text.length,s=o,y&&(a(e,l,t[b]),t=t.slice(b+1)),l.isFrontToken()&&t.unshift(l);break}}g===p&&(o+=1,null===l&&(l={type:"text"}))}for(o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:(t.length?t[0]:e).innerMode});t.length>0;)t.shift().demote();return e}function a(e,n,t){var a=e.children.indexOf(n),o=e.children.indexOf(t);n.children=e.children.splice(o+1,a-(o+1)),n.children.forEach(function(e){r(n,e)}),n.type=n.matches[t.type],n.innerText="";for(var i=0,s=n.children.length;s>i;i++)n.innerText+=n.children[i].text;n.start=t.start,n.text=t.text+n.innerText+n.text,Object.keys(t).forEach(function(e){Object.hasOwnProperty.call(n,e)||(n[e]=t[e])}),n.isFront&&(n.isFront=!1),e.children.splice(o,1),r(e,n)}var o=void 0,i={};e.prototype={constructor:e,addChild:function(n){var a=this.lastChildEnd(),o=new e({start:a,end:n.text&&a+n.text.length,children:[]},n);return o.innerText&&t(o),this.children.push(o),r(this,o),o},lastChild:function(){return this.children?this.children[this.children.length-1]||null:null},lastChildEnd:function(){var e=this.lastChild();return e?e.end:this.start+Math.max(0,this.text.indexOf(this.innerText))},tokenAt:function(e){if(e=this.end)return null;if(this.childAt)return this.childAt[e]&&this.childAt[e].tokenAt(e)||this;if(this.children.length)for(var r=0;r=this.end)return[];if(this.childAt)return(this.childAt[e]&&this.childAt[e].pathAt(e)||[]).concat(this);var r=[];if(this.children.length)for(var n=0;n=this.end?null:this.children?this.children.reduce(function(r,n){return r||(e>=n.start&&e0&&(e+="["+this.children+"]"),e}},o={lex:function(r,n){return t(new e({type:"root",start:n||0,end:r.length,text:r,innerText:r,children:[],childAt:{},innerMode:o.modes.start}))},rules:i,modes:{}},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=o:"function"==typeof define&&define.amd?define("lexer",[],function(){return o}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Lexer=o):this.TwineLexer=o}).call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(r){return r&&"object"===("undefined"==typeof r?"undefined":_typeof(r))?(Object.keys(r).forEach(function(n){r[n]=e(r[n])}),r):(r+"").replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function r(){return"[^"+Array.apply(0,arguments).map(e).join("")+"]*"}function n(e){return function(){return"("+e+Array.apply(0,arguments).join("|")+")"}}var t=void 0,a=n("?:"),o=n("?!"),i=n("?="),s="[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*",u=s.replace("*","+"),l="\\b",m="\\\\\\n\\\\?|\\n\\\\",c="\\n(?!\\\\)",g="[\\w\\-\\u00c0-\\u00de\\u00df-\\u00ff\\u0150\\u0170\\u0151\\u0171\\uD800-\\uDFFF]",p=g.replace("\\-",""),d=a("\\n","$"),h="("+a(m,"[^\\n]")+"+)",f="\\*",y=s+"("+f+"+)"+u+h+d,b="(?:0\\.)",k=s+"("+b+"+)"+u+h+d,N=s+"-{3,}"+s+d,C=s+"(#{1,6})"+s+h+d,T=s+"(==+>|<=+|=+><=+|<==+>)"+s+d,S=s+"(=+\\|+|\\|+=+|=+\\|+=+|\\|=+\\|)"+s+d,v={opener:"\\[\\[(?!\\[)",text:"("+r("]")+")",rightSeparator:a("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+a("[^\\|\\]]","\\]"+o("\\]"))+"+)"},x=p+"*"+p.replace("\\w","a-zA-Z")+p+"*",A="\\$("+x+")",w="'s"+u+"("+x+")",O="("+x+")"+u+"of"+l+o("it"+l),F="'s"+u,L="of"+l,P=a("it","time")+l,H="its"+u+"("+x+")",j="its"+u,B="("+x+")"+u+"of"+u+"it"+l,M="of"+l+u+"it"+l,V={opener:"\\(",name:"("+a(g+"+",A)+"):"+o("\\/"),closer:"\\)"},I="<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",D=a("=<","=>","[gl]te?"+l,"n?eq"+l,"isnot"+l,"are"+l,"x"+l),E={name:"[a-zA-Z][\\w\\-]*",attrs:"(?:\"[^\"]*\"|'[^']*'|[^'\">])*?"},_="\\|("+g+"+)(>|\\))",R="(<|\\()("+g+"+)\\|",q="_("+x+")"+l,$="\\b(\\-?\\d+(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?|NaN)"+o("m?s")+l;v.main=v.opener+a(v.text+v.rightSeparator,v.text.replace("*","*?")+v.leftSeparator)+v.text,t={upperLetter:"[A-Z\\u00c0-\\u00de\\u0150\\u0170]",lowerLetter:"[a-z0-9_\\-\\u00df-\\u00ff\\u0151\\u0171]",anyLetter:g,anyLetterStrict:p,whitespace:u,escapedLine:m,br:c,commentFront:"",tag:"<\\/?"+E.name+E.attrs+">",tagPeek:"<",scriptStyleTag:"<("+a("script","style")+")"+E.attrs+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+a("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:f,hr:N,heading:C,align:T,column:S,bulleted:y,numbered:k,delOpener:e("~~"),italicOpener:e("//"),boldOpener:e("''"),supOpener:e("^^"),strongFront:e("**"),strongBack:e("**"),emFront:e("*"),emBack:e("*"),verbatimOpener:"`+",collapsedFront:"{",collapsedBack:"}",hookAppendedFront:"\\[",hookPrependedFront:_+"\\[",hookFront:"\\[",hookBack:"\\]"+o(R),hookAppendedBack:"\\]"+R,passageLink:v.main+v.closer,passageLinkPeek:"[[",legacyLink:v.opener+v.legacyText+v.legacySeparator+v.legacyText+v.closer,legacyLinkPeek:"[[",simpleLink:v.opener+v.legacyText+v.closer,simpleLinkPeek:"[[",macroFront:V.opener+i(V.name),macroFrontPeek:"(",macroName:V.name,groupingFront:"\\("+o(V.name),groupingFrontPeek:"(",groupingBack:"\\)",twine1Macro:I,twine1MacroPeek:"<<",property:w,propertyPeek:"'s",belongingProperty:O,possessiveOperator:F,belongingOperator:L,belongingOperatorPeek:"of",itsOperator:j,itsOperatorPeek:"its",belongingItOperator:M,belongingItOperatorPeek:"of",variable:A,variablePeek:"$",tempVariable:q,tempVariablePeek:"_",hookRef:"\\?("+g+"+)\\b",hookRefPeek:"?",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)"+l,colour:a(a("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),number:$,boolean:a("true","false")+l,identifier:P,itsProperty:H,itsPropertyPeek:"its",belongingItProperty:B,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',is:"is"+o(u+"not",u+"in",u+"<",u+">")+l,isNot:"is"+u+"not"+l,and:"and"+l,or:"or"+l,not:"not"+l,inequality:"((?:is(?:"+u+"not)?"+s+")*)("+a("<(?!=)","<=",">(?!=)",">=")+")",isIn:"is"+u+"in"+l,contains:"contains"+l,addition:e("+")+o("="),subtraction:e("-")+o("=","\\d"),multiplication:e("*")+o("="),division:a("/","%")+o("="),comma:",",spread:"\\.\\.\\."+o("\\."),to:a("to"+l,"="),into:"into"+l,making:"making"+l,where:"where"+l,via:"via"+l,with:"with"+l,each:"each"+l,augmentedAssign:a("\\+","\\-","\\*","\\/","%")+"=",incorrectOperator:D},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=t:"function"==typeof define&&define.amd?define("patterns",[],function(){return t}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=t):this.Patterns=t}.call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(e){function r(e){return e=e||"innerText",function(r){var n=r.reduceRight(function(e,r,n){return e||(n?r:"")},""),t={};return t[e]=n,t}}function t(e,r){var n={};return n[e]=r,function(){return{isFront:!0,matches:n,cannotCross:["verbatimOpener"]}}}function a(e,r){return Object.keys(r).forEach(function(n){var t=r[n].fn;r[n].fn=function(r){var a=t(r);return a.text||(a.text=r[0]),a.type||(a.type=n),a.innerMode||(a.innerMode=e),a}}),r}var o=Object.bind(0,null),i=[],s=[],u=a(i,{hr:{fn:o},bulleted:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},numbered:{fn:function(e){return{depth:e[1].length/2,innerText:e[2]}}},heading:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},align:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("><");return~t?(r=Math.round(t/(n.length-2)*50),25===r&&(r="center")):"<"===n[0]&&">"===n.slice(-1)?r="justify":n.indexOf(">")>-1?r="right":n.indexOf("<")>-1&&(r="left"),{align:r}}},column:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("|");return t&&t-1}}},augmentedAssign:{fn:function(e){return{operator:e[0][0]}}},identifier:{fn:r("name"),cannotFollow:["text"]},whitespace:{fn:o,cannotFollow:"text"},incorrectOperator:{fn:function(e){var r={"=>":">=","=<":"<=",gte:">=",lte:"<=",gt:">",lt:"<",eq:"is",isnot:"is not",neq:"is not",are:"is",x:"*"}[e[0].toLowerCase()];return{type:"error",message:"Please say "+(r?"'"+r+"'":"something else")+" instead of '"+e[0]+"'."}},cannotFollow:"text"}},["boolean","is","to","into","where","via","with","making","each","and","or","not","isNot","contains","isIn"].reduce(function(e,r){return e[r]={fn:o,cannotFollow:["text"]},e},{}),["comma","spread","addition","subtraction","multiplication","division"].reduce(function(e,r){return e[r]={fn:o},e},{})));i.push.apply(i,_toConsumableArray(Object.keys(u)).concat(_toConsumableArray(Object.keys(m)),_toConsumableArray(Object.keys(l)))),s.push.apply(s,_toConsumableArray(Object.keys(m)).concat(_toConsumableArray(Object.keys(c))));var g=Object.assign({},u,l,m,c);return Object.keys(g).forEach(function(e){var r=n[e];g[e].pattern="string"!=typeof r?r:new RegExp("^(?:"+r+")","i"),n[e+"Peek"]&&(g[e].peek=n[e+"Peek"])}),Object.assign(e.rules,g),e.modes.start=e.modes.markup=i,e.modes.macro=s,e}function r(r){return Object.freeze({lex:e(r).lex,Patterns:n})}var n=void 0;Object.assign=Object.assign||function(e){for(var r=1;r Command":{name:"display",sig:" String",returnType:"Command",aka:[]},"(print: Any) -> Command":{name:"print",sig:" Any",returnType:"Command",aka:[]},"(show: ...HookName) -> Command":{name:"show",sig:" ...HookName",returnType:"Command",aka:[]},"(go-to: String) -> Command":{name:"go-to",sig:" String",returnType:"Command",aka:[]},"(undo:) -> Command":{name:"undo",sig:"",returnType:"Command",aka:[]},"(live: [Number]) -> Changer":{name:"live",sig:" [Number]",returnType:"Changer",aka:[]},"(stop:) -> Command":{name:"stop",sig:"",returnType:"Command",aka:[]},"(save-game: String, [String]) -> Boolean":{name:"save-game",sig:" String, [String]",returnType:"Boolean",aka:[]},"(load-game: String) -> Command":{name:"load-game",sig:" String",returnType:"Command",aka:[]},"(alert: String) -> Command":{name:"alert",sig:" String",returnType:"Command",aka:[]},"(prompt: String, String) -> String":{name:"prompt",sig:" String, String",returnType:"String",aka:[]},"(confirm: String) -> Boolean":{name:"confirm",sig:" String",returnType:"Boolean",aka:[]},"(open-url: String) -> Command":{name:"open-url",sig:" String",returnType:"Command",aka:[]},"(reload:) -> Command":{name:"reload",sig:"",returnType:"Command",aka:[]},"(goto-url: String) -> Command":{name:"goto-url",sig:" String",returnType:"Command",aka:[]},"(page-url:) -> String":{name:"page-url",sig:"",returnType:"String",aka:[]},"(set: ...VariableToValue) -> Instant":{name:"set",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(put: ...VariableToValue) -> Instant":{name:"put",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(move: ...VariableToValue) -> Instant":{name:"move",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(a: [...Any]) -> Array":{name:"a",sig:" [...Any]",returnType:"Array",aka:["array"]},"(range: Number, Number) -> Array":{name:"range",sig:" Number, Number",returnType:"Array",aka:[]},"(subarray: Array, Number, Number) -> Array":{name:"subarray",sig:" Array, Number, Number",returnType:"Array",aka:[]},"(shuffled: Any, Any, [...Any]) -> Array":{name:"shuffled",sig:" Any, Any, [...Any]",returnType:"Array",aka:[]},"(sorted: Number or String, ...Number or String) -> Array":{name:"sorted",sig:" Number or String, ...Number or String",returnType:"Array",aka:[]},"(rotated: Number, [...Any]) -> Array":{name:"rotated",sig:" Number, [...Any]",returnType:"Array",aka:[]},"(repeated: Number, ...Any) -> Array":{name:"repeated",sig:" Number, ...Any",returnType:"Array",aka:[]},"(interlaced: Array, ...Array) -> Array":{name:"interlaced",sig:" Array, ...Array",returnType:"Array",aka:[]},"(altered: Lambda, ...Any) -> Array":{name:"altered",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(find: Lambda, ...Any) -> Array":{name:"find",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(all-pass: Lambda, ...Any) -> Boolean":{name:"all-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(some-pass: Lambda, ...Any) -> Boolean":{name:"some-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(none-pass: Lambda, ...Any) -> Boolean":{name:"none-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(folded: Lambda, ...Any) -> Any":{name:"folded",sig:" Lambda, ...Any",returnType:"Any",aka:[]},"(datanames: Datamap) -> Array":{name:"datanames",sig:" Datamap",returnType:"Array",aka:[]},"(datavalues: Datamap) -> Array":{name:"datavalues",sig:" Datamap",returnType:"Array",aka:[]},"(dataentries: Datamap) -> Array":{name:"dataentries",sig:" Datamap",returnType:"Array",aka:[]},"(history:) -> Array":{name:"history",sig:"",returnType:"Array",aka:[]},"(passage: [String]) -> Datamap":{name:"passage",sig:" [String]",returnType:"Datamap",aka:[]},"(saved-games:) -> Datamap":{name:"saved-games",sig:"",returnType:"Datamap",aka:[]},"(dm: [...Any]) -> Datamap":{name:"dm",sig:" [...Any]",returnType:"Datamap",aka:["datamap"]},"(ds: [...Any]) -> Dataset":{name:"ds",sig:" [...Any]",returnType:"Dataset",aka:["dataset"]},"(count: Array or String, ...Any) -> Number":{name:"count",sig:" Array or String, ...Any",returnType:"Number",aka:[]},"(enchant: HookName or String, Changer) -> Command":{name:"enchant",sig:" HookName or String, Changer",returnType:"Command",aka:[]},"(replace: ...HookName or String) -> Changer":{name:"replace",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(append: ...HookName or String) -> Changer":{name:"append",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(prepend: ...HookName or String) -> Changer":{name:"prepend",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(click: HookName or String) -> Changer":{name:"click",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover: HookName or String) -> Changer":{name:"mouseover",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout: HookName or String) -> Changer":{name:"mouseout",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-replace: HookName or String) -> Changer":{name:"click-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-append: HookName or String) -> Changer":{name:"click-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-prepend: HookName or String) -> Changer":{name:"click-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-replace: HookName or String) -> Changer":{name:"mouseover-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-append: HookName or String) -> Changer":{name:"mouseover-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-prepend: HookName or String) -> Changer":{name:"mouseover-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-replace: HookName or String) -> Changer":{name:"mouseout-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-append: HookName or String) -> Changer":{name:"mouseout-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-prepend: HookName or String) -> Changer":{name:"mouseout-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(link: String) -> Changer":{name:"link",sig:" String",returnType:"Changer",aka:["link-replace"]},"(link-reveal: String) -> Changer":{name:"link-reveal",sig:" String",returnType:"Changer",aka:[]},"(link-repeat: String) -> Changer":{name:"link-repeat",sig:" String",returnType:"Changer",aka:[]},"(link-goto: String, [String]) -> Command":{name:"link-goto",sig:" String, [String]",returnType:"Command",aka:[]},"(link-undo: String) -> Command":{name:"link-undo",sig:" String",returnType:"Command",aka:[]},"(if: Boolean) -> Changer":{name:"if",sig:" Boolean",returnType:"Changer",aka:[]},"(unless: Boolean) -> Changer":{name:"unless",sig:" Boolean",returnType:"Changer",aka:[]},"(else-if: Boolean) -> Changer":{name:"else-if",sig:" Boolean",returnType:"Changer",aka:[]},"(else:) -> Changer":{name:"else",sig:"",returnType:"Changer",aka:[]},"(hidden:) -> Changer":{name:"hidden",sig:"",returnType:"Changer",aka:[]},"(hook: String) -> Changer":{name:"hook",sig:" String",returnType:"Changer",aka:[]},"(for: Lambda, ...Any) -> Changer":{name:"for",sig:" Lambda, ...Any",returnType:"Changer",aka:["loop"]},"(transition: String) -> Changer":{name:"transition",sig:" String",returnType:"Changer",aka:["t8n"]},"(transition-time: Number) -> Changer":{name:"transition-time",sig:" Number",returnType:"Changer",aka:["t8n-time"]},"(font: String) -> Changer":{name:"font",sig:" String",returnType:"Changer",aka:[]},"(align: String) -> Changer":{name:"align",sig:" String",returnType:"Changer",aka:[]},"(text-colour: String or Colour) -> Changer":{name:"text-colour",sig:" String or Colour",returnType:"Changer",aka:["colour"]},"(text-rotate: Number) -> Changer":{name:"text-rotate",sig:" Number",returnType:"Changer",aka:[]},"(background: Colour or String) -> Changer":{name:"background",sig:" Colour or String",returnType:"Changer",aka:[]},"(text-style: String) -> Changer":{name:"text-style",sig:" String",returnType:"Changer",aka:[]},"(hover-style: Changer) -> Changer":{name:"hover-style",sig:" Changer",returnType:"Changer",aka:[]},"(css: String) -> Changer":{name:"css",sig:" String",returnType:"Changer",aka:[]},"(text: ...[Number or String or Boolean or Array]) -> String":{name:"text",sig:" ...[Number or String or Boolean or Array]",returnType:"String",aka:["string"]},"(substring: String, Number, Number) -> String":{name:"substring",sig:" String, Number, Number",returnType:"String",aka:[]},"(lowercase: String) -> String":{name:"lowercase",sig:" String",returnType:"String",aka:[]},"(uppercase: String) -> String":{name:"uppercase",sig:" String",returnType:"String",aka:[]},"(lowerfirst: String) -> String":{name:"lowerfirst",sig:" String",returnType:"String",aka:[]},"(upperfirst: String) -> String":{name:"upperfirst",sig:" String",returnType:"String",aka:[]},"(words: String) -> Array":{name:"words",sig:" String",returnType:"Array",aka:[]},"(num: String) -> Number":{name:"num",sig:" String",returnType:"Number",aka:["number"]},"(rgb: Number, Number, Number) -> Colour":{name:"rgb",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(rgba: Number, Number, Number, Number) -> Colour":{name:"rgba",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(hsl: Number, Number, Number) -> Colour":{name:"hsl",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(hsla: Number, Number, Number, Number) -> Colour":{name:"hsla",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(weekday:) -> String":{name:"weekday",sig:"",returnType:"String",aka:[]},"(monthday:) -> Number":{name:"monthday",sig:"",returnType:"Number",aka:[]},"(current-time:) -> String":{name:"current-time",sig:"",returnType:"String",aka:[]},"(current-date:) -> String":{name:"current-date",sig:"",returnType:"String",aka:[]},"(min: ...Number) -> Number":{name:"min",sig:" ...Number",returnType:"Number",aka:[]},"(max: ...Number) -> Number":{name:"max",sig:" ...Number",returnType:"Number",aka:[]},"(abs: Number) -> Number":{name:"abs",sig:" Number",returnType:"Number",aka:[]},"(sign: Number) -> Number":{name:"sign",sig:" Number",returnType:"Number",aka:[]},"(sin: Number) -> Number":{name:"sin",sig:" Number",returnType:"Number",aka:[]},"(cos: Number) -> Number":{name:"cos",sig:" Number",returnType:"Number",aka:[]},"(tan: Number) -> Number":{name:"tan",sig:" Number",returnType:"Number",aka:[]},"(floor: Number) -> Number":{name:"floor",sig:" Number",returnType:"Number",aka:[]},"(round: Number) -> Number":{name:"round",sig:" Number",returnType:"Number",aka:[]},"(ceil: Number) -> Number":{name:"ceil",sig:" Number",returnType:"Number",aka:[]},"(pow: Number, Number) -> Number":{name:"pow",sig:" Number, Number",returnType:"Number",aka:[]},"(exp: Number, Number) -> Number":{name:"exp",sig:" Number, Number",returnType:"Number",aka:[]},"(sqrt: Number) -> Number":{name:"sqrt",sig:" Number",returnType:"Number",aka:[]},"(log: Number) -> Number":{name:"log",sig:" Number",returnType:"Number",aka:[]},"(log10: Number) -> Number":{name:"log10",sig:" Number",returnType:"Number",aka:[]},"(log2: Number) -> Number":{name:"log2",sig:" Number",returnType:"Number",aka:[]},"(random: Number, [Number]) -> Number":{name:"random",sig:" Number, [Number]",returnType:"Number",aka:[]},"(either: ...Any) -> Any":{name:"either",sig:" ...Any",returnType:"Any",aka:[]}},n=r instanceof Object&&Object.keys(r).reduce(function(e,n){return e.concat.apply(e,[r[n].name].concat(_toConsumableArray(r[n].aka)))},[]).map(e),t=void 0;"function"==typeof define&&define.amd?define("markup",[],function(e){t=e.lex}):this&&this.loaded&&this.modules&&(t=this.modules.Markup.lex),window.CodeMirror&&CodeMirror.defineMode("harlowe-2",function(){function r(e,r){if(e.update){var n=e.from.line,t=r.split("\n").slice(0,e.from.line+1);return t[n]=t[n].slice(0,e.from.ch)+e.text[0],t=t.concat(e.text.slice(1)),e.update({line:0,ch:0},e.to,t),t.join("\n")}}function a(e){u.length&&(u.forEach(function(e){return e.clear()}),u=[]);var r=i.tokenAt(e.indexFromPos(e.getCursor()));if(r){if(u.push(e.markText(e.posFromIndex(r.start),e.posFromIndex(r.end),{className:"cm-harlowe-2-cursor"})),"variable"===r.type||"tempVariable"===r.type||"hookRef"===r.type||"hook"===r.type){var n="hook"===r.type?"hookRef":r.type;s[n].forEach(function(n){n!==r&&n.name===r.name&&u.push(e.markText(e.posFromIndex(n.start),e.posFromIndex(n.end),{className:"cm-harlowe-2-variableOccurrence"}))})}("hookRef"===r.type||"hook"===r.type)&&s.hook.forEach(function(n){if(n!==r&&n.name===r.name){var t="appended"===n.tagPosition?n.end-n.name.length-1:n.start+1;u.push(e.markText(e.posFromIndex(t),e.posFromIndex(t+n.name.length),{className:"cm-harlowe-2-hookOccurrence"}))}})}}var o=void 0,i=void 0,s={variable:[],tempVariable:[],hook:[],hookRef:[],populate:function(){var e=this;this.variable=[],this.tempVariable=[],this.hook=[],this.hookRef=[];var r=function r(n){("variable"===n.type||"tempVariable"===n.type||"hook"===n.type||"hookRef"===n.type)&&e[n.type].push(n),n.children.forEach(r)};i.children.forEach(r)}},u=[],l=function(){var e=o.doc;i=t(e.getValue()),s.populate(),e.on("beforeChange",function(n,t){var a=e.getValue();r(t,a)}),e.on("change",function(){var r=e.getValue();i=t(r),s.populate()}),e.on("swapDoc",l),e.on("cursorActivity",a),l=null};return{startState:function(){return o||(o=CodeMirror.modes["harlowe-2"].cm,o.setOption("placeholder",["Enter the body text of your passage here.","''Bold'', //italics//, ^^superscript^^, ~~strikethrough~~, and

HTML tags

are available.","To display special symbols without them being transformed, put them between `backticks`.","To link to another passage, write the link text and the passage name like this: [[link text->passage name]]\nor this: [[passage name<-link text]]\nor this: [[link text]].","Macros like (set:) and (display:) are the programming of your passage. If you've (set:) a $variable, you can just enter its name to print it out.","To make a 'hook', put [single square brackets] around text - or leave it empty [] - then put a macro like (if:), a $variable, or a |nametag> outside the front, |like>[so].","Hooks can be used for many things: showing text (if:) something happened, applying a (text-style:), making a place to (append:) text later on, and much more!","Consult the Harlowe documentation for more information."].join("\n\n")),o.setOption("lineNumbers",!0),o.setOption("lineNumberFormatter",function(){return"\u2022"})),{pos:0}},blankLine:function(e){e.pos++},token:function(r,t){l&&l();var a=i.pathAt(t.pos),o=a[0];if(!o)return t.pos++,r.next(),null;for(;o===o.tokenAt(t.pos)&&!r.eol();)t.pos++,r.next();r.eol()&&t.pos++;for(var s={},u="",m=0;m1&&(g+="-"+s[g]),c){case"macroName":-1===n.indexOf(e(a[m].text.slice(0,-1)))&&(g+=" harlowe-2-error")}u+=g+" "}return u}}});var a=document.querySelector("style#cm-harlowe-2");a||(a=document.createElement("style"),a.setAttribute("id","cm-harlowe-2"),document.head.appendChild(a)),a.innerHTML=function(){var e=function(e,r,n){return function(t){return"background-color: hsla("+e+","+r+"%,"+n+"%,"+t+");"}},r=e(40,100,50),n=e(220,100,50),t=function(r){return e(320,44,50)(r)+"color: #a84186;"},a="color: firebrick !important; background-color: hsla(17, 100%, 74%, 0.74) !important;",o="font-weight:100; color: hsla(0,0,0,0.5)";return{root:"box-sizing:border-box;","cursor:not([class^='cm-harlowe-2-text cm-harlowe-2-root'])":"border-bottom: 2px solid darkgray;",CodeMirror:"padding: 0 !important","CodeMirror-linenumber":"color: #ccc;","CodeMirror-gutters":"left: 0px !important;",hook:r(.05),"hook-2":r(.1),"hook-3":r(.15),"hook-4":r(.2),"hook-5":r(.25),"hook-6":r(.3),"hook-7":r(.35),"hook-8":r(.4),"^=hook , ^=hook-":"font-weight:bold;","error:not([class*='cm-harlowe-2-string'])":a,macro:t(.05),"macro-2":t(.1),"macro-3":t(.15),"macro-4":t(.2),"macro-5":t(.25),"macro-6":t(.3),"macro-7":t(.35),"macro-8":t(.4),macroName:"font-style:italic;","^=macro ":"font-weight:bold;","bold, strong":"font-weight:bold;","italic, em":"font-style:italic;",sup:"vertical-align: super;font-size:0.8em;",verbatim:"background-color: hsla(0,0%,50%,0.1);","^=bold, ^=strong, ^=italic, ^=em, ^=sup, ^=verbatim":o, +"^=string":"font-style:italic; display:inline-block; transform: scaleX(-1);","string + ^=string":"transform: none;","^=collapsed":"font-weight:bold; color: hsl(201, 100%, 30%);",collapsed:n(.025),"collapsed.hook":n(.05),"collapsed.hook-2":n(.1),"collapsed.hook-3":n(.15),"collapsed.hook-4":n(.2),"collapsed.hook-5":n(.25),"collapsed.hook-6":n(.3),"collapsed.hook-7":n(.35),"collapsed.hook-8":n(.4),"twineLink:not(.text)":"color: #3333cc;",tag:"color: #4d4d9d;",boolean:"color: #626262;",string:"color: #008282;",number:"color: #A15000;",variable:"color: #0076b2;",tempVariable:"color: #1a6e97;",hookRef:"color: #007f54;","variableOccurrence, hookOccurrence":"background: #9fdfc9 !important;",where:"color: #007f00; font-style:italic;",via:"color: #007f00; font-style:italic;",with:"color: #007f00; font-style:italic;",making:"color: #007f00; font-style:italic;",each:"color: #007f00; font-style:italic;",heading:"font-weight:bold;",hr:"display:block; background-image: linear-gradient(0deg, transparent, transparent 45%, silver 45%, transparent 55%, transparent);",align:"display:block; color: hsl(14, 99%, 37%); background-color: hsla(14, 99%, 87%, 0.2);",column:"display:block; color: hsl(204, 99%, 37%); background-color: hsla(204, 99%, 87%, 0.2);",escapedLine:"font-weight:bold; color: hsl(51, 100%, 30%);","identifier, property, belongingProperty, itsProperty, belongingItProperty, belongingItOperator":"color: #0076b2;",toString:function(){var e=this;return Object.keys(this).reduce(function(r,n){var t;return"toString"===n?r:"CodeMirror"===n.slice(0,10)?r+"."+n+"{"+e[n]+"}":(t=n.split(", ").map(function e(r){return r.indexOf(".")>-1?r.split(/\./g).map(e).join(""):r.indexOf(" + ")>-1?r.split(/ \+ /g).map(e).join(" + "):0===r.indexOf("^=")?"[class^='cm-harlowe-2-"+r.slice(2)+"']":".cm-harlowe-2-"+r}),r+t.join(", ")+"{"+e[n]+"}")},"")}}+""}()}.call(eval("this"));}}); \ No newline at end of file diff --git a/story-formats/harlowe-2.0.1/icon.svg b/story-formats/harlowe-2.0.1/icon.svg new file mode 100644 index 000000000..cbad87815 --- /dev/null +++ b/story-formats/harlowe-2.0.1/icon.svg @@ -0,0 +1,78 @@ + + + + + + + + + + image/svg+xml + + + + + + + H + + + diff --git a/story-formats/paperthin-1.0.0/format.js b/story-formats/paperthin-1.0.0/format.js new file mode 100644 index 000000000..aaec67f18 --- /dev/null +++ b/story-formats/paperthin-1.0.0/format.js @@ -0,0 +1 @@ +window.storyFormat({"name":"Paperthin","version":"1.0.0","description":"The default proofing format for Twine 2. Icon designed by Simon Child from the Noun Project","author":"Chris Klimas","image":"icon.svg","url":"http://twinery.org/","license":"ZLib/Libpng","proofing":true,"source":"\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n

{{STORY_NAME}}\n

\n{{STORY_DATA}}\n\n\n\n\n"}); diff --git a/story-formats/paperthin-1.0.0/icon.svg b/story-formats/paperthin-1.0.0/icon.svg new file mode 100644 index 000000000..62e9760ff --- /dev/null +++ b/story-formats/paperthin-1.0.0/icon.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/story-formats/snowman-1.3.0/format.js b/story-formats/snowman-1.3.0/format.js new file mode 100644 index 000000000..84684fb2b --- /dev/null +++ b/story-formats/snowman-1.3.0/format.js @@ -0,0 +1 @@ +window.storyFormat({"description":"A minimal story format for authors experienced with HTML, CSS, and JavaScript.","author":"Chris Klimas","image":"icon.svg","name":"Snowman","url":"https://bitbucket.org/klembot/snowman-2","version":"1.3.0","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n
\n\n{{STORY_DATA}}\n\n\n\n\n"}); \ No newline at end of file diff --git a/story-formats/snowman-1.3.0/icon.svg b/story-formats/snowman-1.3.0/icon.svg new file mode 100644 index 000000000..fd7ae5b53 --- /dev/null +++ b/story-formats/snowman-1.3.0/icon.svg @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/story-formats/sugarcube-1.0.35/LICENSE b/story-formats/sugarcube-1.0.35/LICENSE new file mode 100755 index 000000000..16c827dd2 --- /dev/null +++ b/story-formats/sugarcube-1.0.35/LICENSE @@ -0,0 +1,23 @@ + +Copyright (c) 2013-2016 Thomas Michael Edwards . +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/story-formats/sugarcube-1.0.35/format.js b/story-formats/sugarcube-1.0.35/format.js new file mode 100755 index 000000000..771fa2fde --- /dev/null +++ b/story-formats/sugarcube-1.0.35/format.js @@ -0,0 +1 @@ +window.storyFormat({"name":"SugarCube","version":"1.0.35","description":"A Twine 2 port of the Twine 1 story format by the same name. See its documentation.","author":"Thomas Michael Edwards","image":"icon.svg","url":"http://www.motoslave.net/sugarcube/","license":"Simplified BSD License","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n\n\n\n\n\t
\n\t\t

\n\t\t

Apologies! Your web browser lacks required capabilities. Please consider upgrading it or switching to a more modern web browser.

\n\t\t

Initializing. Please wait…

\n\t
\n\t\n\t\n\n\n"}); \ No newline at end of file diff --git a/story-formats/sugarcube-1.0.35/icon.svg b/story-formats/sugarcube-1.0.35/icon.svg new file mode 100755 index 000000000..2893c9df0 --- /dev/null +++ b/story-formats/sugarcube-1.0.35/icon.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Open Clip Art Library + + + Sugar Cube icon + 2010-10-10T11:46:52 + A sugar cube. + http://openclipart.org/detail/89407/sugar-cube-icon-by-jhnri4 + + + jhnri4 + + + + + SVG + block + clip art + clipart + cube + icon + sugar + white + + + + + + + + + + + diff --git a/story-formats/sugarcube-2.18.0/LICENSE b/story-formats/sugarcube-2.18.0/LICENSE new file mode 100644 index 000000000..1e72fe93d --- /dev/null +++ b/story-formats/sugarcube-2.18.0/LICENSE @@ -0,0 +1,23 @@ + +Copyright (c) 2013-2017 Thomas Michael Edwards . +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/story-formats/sugarcube-2.18.0/format.js b/story-formats/sugarcube-2.18.0/format.js new file mode 100644 index 000000000..2dac121b7 --- /dev/null +++ b/story-formats/sugarcube-2.18.0/format.js @@ -0,0 +1 @@ +window.storyFormat({"name":"SugarCube","version":"2.18.0","description":"A Twine 2 port of the Twine 1 story format by the same name. See its documentation.","author":"Thomas Michael Edwards","image":"icon.svg","url":"http://www.motoslave.net/sugarcube/","license":"BSD-2-Clause","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
\n\t\t
\n\t\t
Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
\n\t\t
Loading…
\n\t
\n\t\n\t\n\n\n"}); \ No newline at end of file diff --git a/story-formats/sugarcube-2.18.0/icon.svg b/story-formats/sugarcube-2.18.0/icon.svg new file mode 100644 index 000000000..2893c9df0 --- /dev/null +++ b/story-formats/sugarcube-2.18.0/icon.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Open Clip Art Library + + + Sugar Cube icon + 2010-10-10T11:46:52 + A sugar cube. + http://openclipart.org/detail/89407/sugar-cube-icon-by-jhnri4 + + + jhnri4 + + + + + SVG + block + clip art + clipart + cube + icon + sugar + white + + + + + + + + + + + diff --git a/webpack.config.cdn.js b/webpack.config.cdn.js new file mode 100644 index 000000000..23ead8377 --- /dev/null +++ b/webpack.config.cdn.js @@ -0,0 +1,37 @@ +var config = require('./webpack.config.release'); + +config.output.path = __dirname + '/dist/web-cdn'; + +/* Signal to the HTML that we're doing a CDN build. */ + +config.plugins.find(plugin => plugin.options && plugin.options.template).options.cdn = true; + +config.module.rules.pop(); + +config.module.rules[config.module.rules.length - 1].test = + /\.(eot|png|svg|ttf|woff|woff2)(\?.*)?$/; + +/* Externalize a bunch of dependencies. */ + +Object.assign( + config.externals, + { + 'codemirror': 'CodeMirror', + /* + core-js has no external interface, so we borrow an existing global + property. + */ + 'core-js': 'location', + 'fastclick': 'FastClick', + 'jed': 'Jed', + 'jszip': 'JSZip', + 'moment': 'moment', + 'svg.js': 'SVG', + 'tether-drop': 'Drop', + 'vue': 'Vue', + 'vue-router': 'VueRouter', + 'vuex': 'Vuex' + } +); + +module.exports = config; diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000..9e57af9f0 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,93 @@ +const CopyPlugin = require('copy-webpack-plugin'); +const ExtractTextPlugin = require('extract-text-webpack-plugin'); +const HtmlPlugin = require('html-webpack-plugin'); +const PoPlugin = require('./webpack/po-webpack-plugin'); +const Autoprefixer = require('less-plugin-autoprefix'); +const package = require('./package.json'); + +module.exports = { + entry: './src/index.js', + output: { + path: __dirname + '/build', + filename: 'twine.js' + }, + devtool: 'source-map', + stats: 'none', + module: { + rules: [ + /* + Inline any resurces below 10k in size. + */ + { + test: /\.(eot|png|svg|ttf|woff|woff2)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: 'rsrc/[name].[hash].[ext]' + } + }, + /* + We must exclude the top-level template, as I think the HTML plugin + is expecting a string as output, not a function. + */ + { + test: /\.ejs$/, + exclude: /index\.ejs$/, + loader: 'ejs-loader' + }, + { + test: /\.html$/, + loader: 'html-loader' + }, + { + test: /\.less$/, + loader: ExtractTextPlugin.extract({ + use: [ + 'css-loader', + { + loader: 'less-loader', + options: { + plugins: [ + new Autoprefixer({ + browsers: ['iOS 1-9', 'last 2 versions'] + }) + ] + } + } + ] + }) + } + ] + }, + /* + Leave Node requires that are used in NW.js alone. This is apparently the + magic invocation to do so. + */ + externals: { + child_process: 'commonjs child_process', + fs: 'commonjs fs', + 'nw.gui': 'commonjs nw.gui', + 'os': 'commonjs os', + path: 'commonjs path', + }, + plugins: [ + new CopyPlugin([{ from: 'src/common/img/favicon.ico', to: 'rsrc/favicon.ico' }]), + new CopyPlugin([{ from: 'story-formats/', to: 'story-formats/' }]), + new CopyPlugin([{ from: 'src/locale/view/img', to: 'rsrc/' }]), + new ExtractTextPlugin('twine.css'), + new HtmlPlugin({ + template: './src/index.ejs', + package: package, + buildNumber: require('./scripts/build-number'), + inject: false + }), + new PoPlugin({ + src: 'src/locale/po/*.po', + dest: 'locale', + options: { + format: 'jed1.x', + domain: 'messages' + } + }) + ] +}; diff --git a/webpack.config.release.js b/webpack.config.release.js new file mode 100644 index 000000000..bfb41b5c4 --- /dev/null +++ b/webpack.config.release.js @@ -0,0 +1,49 @@ +const UglifyPlugin = require('webpack').optimize.UglifyJsPlugin; +const CleanPlugin = require('less-plugin-clean-css'); +var config = require('./webpack.config'); + +delete config.devtool; +config.output.path = __dirname + '/dist/web'; + +/* Transpile down to ES5. */ + +config.module.rules.push({ + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel-loader', + options: { + presets: ['es2015'] + } +}); + +/* +Base64 encode all fonts to work around a bug in NW.js -- see +https://github.com/nwjs/nw.js/issues/5080 +*/ + +config.module.rules.splice(0, 1); + +config.module.rules.push({ + test: /\.(png|svg)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: 'rsrc/[name].[hash].[ext]' + } +}); + +config.module.rules.push({ + test: /\.(woff|woff2|ttf|eot|svg)(\?.*)?$/, + exclude: /img/, + loader: 'base64-font-loader' +}); + +/* Minify the JS. */ + +config.plugins.push(new UglifyPlugin({ minimize: true })); + +/* Minify the CSS. */ + +//config.lessLoader.lessPlugins.push(new CleanPlugin()); + +module.exports = config; diff --git a/webpack.config.test.js b/webpack.config.test.js new file mode 100644 index 000000000..1e9b995f9 --- /dev/null +++ b/webpack.config.test.js @@ -0,0 +1,18 @@ +var nodeExternals = require('webpack-node-externals'); +var config = require('./webpack.config'); + +/* Recommended setup from http://zinserjan.github.io/mocha-webpack/docs/installation/webpack-configuration.html. */ + +config.target = 'node'; +config.externals = [nodeExternals()]; +config.plugins = []; + +/* Disable the ExtractText plugin. */ + +config.module.rules.forEach(function(r) { + if (typeof r.loader === 'object') { + r.loader = 'null-loader'; + } +}); + +module.exports = config; \ No newline at end of file diff --git a/webpack/po-webpack-plugin.js b/webpack/po-webpack-plugin.js new file mode 100644 index 000000000..193a89e7a --- /dev/null +++ b/webpack/po-webpack-plugin.js @@ -0,0 +1,43 @@ +/* +A Webpack plugin to convert .po files to JSONP format. We do this instead of +using po-loader so that they exist as separate files that only are loaded as +needed. + +This uses synchronous operations everywhere, and thus could stand to be +optimized. +*/ + +'use strict'; +const glob = require('glob'); +const path = require('path'); +const po2json = require('po2json'); + +function PoPlugin(options) { + this.sources = glob.sync(options.src); + this.dest = options.dest; + this.convertOptions = options.options; +} + +PoPlugin.prototype.apply = function(compiler) { + compiler.plugin('emit', (compilation, callback) => { + this.sources.forEach(filename => { + const source = 'window.locale(' + + JSON.stringify( + po2json.parseFileSync(filename, this.convertOptions) + ) + ');'; + const outputFilename = path.join( + this.dest, + path.basename(filename, '.po') + '.js' + ); + + compilation.assets[outputFilename] = { + source() { return source; }, + size() { return source.length; } + }; + }); + + callback(); + }); +}; + +module.exports = PoPlugin; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..ba061f02b --- /dev/null +++ b/yarn.lock @@ -0,0 +1,5903 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +accepts@1.3.3, accepts@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + +acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + dependencies: + acorn "^4.0.3" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" + +acorn@^5.0.0, acorn@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + +ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + +ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1: + version "4.11.7" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" + dependencies: + string-width "^1.0.1" + +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +aproba@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" + +archiver-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" + dependencies: + glob "^7.0.0" + graceful-fs "^4.1.0" + lazystream "^1.0.0" + lodash "^4.8.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +archiver@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.3.0.tgz#4f2194d6d8f99df3f531e6881f14f15d55faaf22" + dependencies: + archiver-utils "^1.3.0" + async "^2.0.0" + buffer-crc32 "^0.2.1" + glob "^7.0.0" + lodash "^4.8.0" + readable-stream "^2.0.0" + tar-stream "^1.5.0" + walkdir "^0.0.11" + zip-stream "^1.1.0" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arraybuffer.slice@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" + +asn1.js@^4.0.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assertion-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^2.0.0, async@^2.1.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9" + dependencies: + lodash "^4.14.0" + +async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer@^6.0.0, autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-core@^6.18.2, babel-core@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" + dependencies: + babel-code-frame "^6.22.0" + babel-generator "^6.24.1" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.11.0" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-loader@^6.2.10: + version "6.4.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca" + dependencies: + find-cache-dir "^0.1.1" + loader-utils "^0.2.16" + mkdirp "^0.5.1" + object-assign "^4.0.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" + dependencies: + regenerator-transform "0.9.11" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-es2015@^6.18.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.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.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.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.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-register@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" + dependencies: + babel-core "^6.24.1" + babel-runtime "^6.22.0" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-template@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.11.0" + lodash "^4.2.0" + +babel-traverse@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" + dependencies: + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + babylon "^6.15.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.19.0, babel-types@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" + dependencies: + babel-runtime "^6.22.0" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babylon@^6.11.0, babylon@^6.15.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + +balanced-match@^0.4.1, balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +base62@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/base62/-/base62-1.1.2.tgz#22ced6a49913565bc0b8d9a11563a465c084124c" + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + +base64-font-loader@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/base64-font-loader/-/base64-font-loader-0.0.4.tgz#344ed6d7e3c4969433641f67bb0daf549320b824" + dependencies: + loader-utils "~0.2.5" + +base64-js@1.1.2, base64-js@^1.0.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.1.2.tgz#d6400cac1c4c660976d90d07a04351d89395f5e8" + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + +batch@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + +big.js@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + +binary-extensions@^1.0.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + +binary@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + dependencies: + buffers "~0.1.1" + chainsaw "~0.1.0" + +bl@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98" + dependencies: + readable-stream "^2.0.5" + +blob-polyfill@^1.0.20150320: + version "1.0.20150320" + resolved "https://registry.yarnpkg.com/blob-polyfill/-/blob-polyfill-1.0.20150320.tgz#03692dd6820569ef25a87632fa619c951d5748da" + +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^2.10.2: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + +bluebird@^3.3.0, bluebird@^3.4.0, bluebird@^3.4.7: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + +body-parser@^1.16.1: + version "1.17.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47" + dependencies: + bytes "2.4.0" + content-type "~1.0.2" + debug "2.6.1" + depd "~1.1.0" + http-errors "~1.6.1" + iconv-lite "0.4.15" + on-finished "~2.3.0" + qs "6.4.0" + raw-body "~2.2.0" + type-is "~1.6.14" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boxen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" + dependencies: + ansi-align "^1.1.0" + camelcase "^2.1.0" + chalk "^1.1.1" + cli-boxes "^1.0.0" + filled-array "^1.0.0" + object-assign "^4.0.1" + repeating "^2.0.0" + string-width "^1.0.1" + widest-line "^1.0.0" + +brace-expansion@^1.0.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + dependencies: + expand-range "^0.1.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browser-saveas@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-saveas/-/browser-saveas-1.0.1.tgz#1f91cbf5a685a6fa424bf8e01ba7fa9825e3b5e9" + +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" + dependencies: + buffer-xor "^1.0.2" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + inherits "^2.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +buffer-crc32@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +buffer-xor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +bytes@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" + +bytes@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000660" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000660.tgz#d2d57b309dc5a11bb5b46018f51855f7a41efee5" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" + dependencies: + assertion-error "^1.0.1" + deep-eql "^0.1.3" + type-detect "^1.0.0" + +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + dependencies: + traverse ">=0.3.0 <0.4" + +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +chmodr@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chmodr/-/chmodr-1.0.2.tgz#04662b932d0f02ec66deaa2b0ea42811968e3eb9" + +chokidar@^1.4.1, chokidar@^1.4.3: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +cipher-base@^1.0.0, cipher-base@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" + dependencies: + inherits "^2.0.1" + +circular-json@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + +clap@^1.0.9: + version "1.1.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.3.tgz#b3bd36e93dd4cbfb395a3c26896352445265c05b" + dependencies: + chalk "^1.1.3" + +clean-css@4.0.x: + version "4.0.12" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.12.tgz#a02e61707f1840bd3338f54dbc9acbda4e772fa3" + dependencies: + source-map "0.5.x" + +clean-css@^3.0.1: + version "3.4.25" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.25.tgz#9e9a52d5c1e6bc5123e1b2783fa65fe958946ede" + dependencies: + commander "2.8.x" + source-map "0.4.x" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-width@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +codemirror@^5.5.0: + version "5.25.2" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.25.2.tgz#8c77677ca9c9248d757d3a07ed1e89a8404850b7" + +color-convert@^1.3.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@^1.1.0, colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + dependencies: + lodash "^4.5.0" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@2.8.x: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commander@2.9.0, commander@2.9.x, commander@^2.5.0, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +commoner@^0.10.1: + version "0.10.8" + resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" + dependencies: + commander "^2.5.0" + detective "^4.3.1" + glob "^5.0.15" + graceful-fs "^4.1.2" + iconv-lite "^0.4.5" + mkdirp "^0.5.0" + private "^0.1.6" + q "^1.1.2" + recast "^0.11.17" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-clone@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/component-clone/-/component-clone-0.2.2.tgz#c7f5979822880fad8cfb0962ba29186d061ee04f" + dependencies: + component-type "*" + +component-emitter@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + +component-emitter@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe" + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + +component-raf@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/component-raf/-/component-raf-1.2.0.tgz#b2bc72d43f1b014fde7a4b3c447c764bc73ccbaa" + +component-tween@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/component-tween/-/component-tween-1.2.0.tgz#cc39ce5dbab05b52825f41d1947638a0b01b2b8a" + dependencies: + component-clone "0.2.2" + component-emitter "1.2.0" + component-type "1.1.0" + ease-component "1.0.0" + +component-type@*, component-type@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/component-type/-/component-type-1.1.0.tgz#95b666aad53e5c8d1f2be135c45b5d499197c0c5" + +compress-commons@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.0.tgz#58587092ef20d37cb58baf000112c9278ff73b9f" + dependencies: + buffer-crc32 "^0.2.1" + crc32-stream "^2.0.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +compressible@~2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" + dependencies: + mime-db ">= 1.27.0 < 2" + +compression@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" + dependencies: + accepts "~1.3.3" + bytes "2.3.0" + compressible "~2.0.8" + debug "~2.2.0" + on-headers "~1.0.1" + vary "~1.1.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + +concat-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" + dependencies: + dot-prop "^3.0.0" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + object-assign "^4.0.1" + os-tmpdir "^1.0.0" + osenv "^0.1.0" + uuid "^2.0.1" + write-file-atomic "^1.1.2" + xdg-basedir "^2.0.0" + +connect-history-api-fallback@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + +connect@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.1.tgz#b7760693a74f0454face1d9378edb3f885b43227" + dependencies: + debug "2.6.3" + finalhandler "1.0.1" + parseurl "~1.3.1" + utils-merge "1.0.0" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" + +convert-source-map@^1.1.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +copy-webpack-plugin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz#9728e383b94316050d0c7463958f2b85c0aa8200" + dependencies: + bluebird "^2.10.2" + fs-extra "^0.26.4" + glob "^6.0.4" + is-glob "^3.1.0" + loader-utils "^0.2.15" + lodash "^4.3.0" + minimatch "^3.0.0" + node-dir "^0.1.10" + +core-js@^2.2.0, core-js@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +crc32-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" + dependencies: + crc "^3.4.4" + readable-stream "^2.0.0" + +crc@^3.4.4: + version "3.4.4" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^1.0.0" + sha.js "^2.3.6" + +create-hmac@^1.1.0, create-hmac@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" + dependencies: + create-hash "^1.1.0" + inherits "^2.0.1" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +crypto-browserify@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +css-loader@^0.26.0: + version "0.26.4" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.4.tgz#b61e9e30db94303e6ffc892f10ecd09ad025a1fd" + dependencies: + babel-code-frame "^6.11.0" + css-selector-tokenizer "^0.7.0" + cssnano ">=2.6.1 <4" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + object-assign "^4.0.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.0" + source-list-map "^0.1.7" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +"cssnano@>=2.6.1 <4": + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +debug@2.2.0, debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" + dependencies: + ms "0.7.2" + +debug@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" + dependencies: + ms "0.7.2" + +debug@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" + dependencies: + ms "0.7.2" + +debug@2.6.4, debug@^2.1.1, debug@^2.2.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" + dependencies: + ms "0.7.3" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decompress-zip@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.3.0.tgz#ae3bcb7e34c65879adfe77e19c30f86602b4bdb0" + dependencies: + binary "^0.3.0" + graceful-fs "^4.1.3" + mkpath "^0.1.0" + nopt "^3.0.1" + q "^1.1.2" + readable-stream "^1.1.8" + touch "0.0.3" + +deep-eql@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + dependencies: + type-detect "0.1.1" + +deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.0, depd@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" + +deprecate@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/deprecate/-/deprecate-1.0.0.tgz#661490ed2428916a6c8883d8834e5646f4e4a4a8" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detective@^4.3.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" + dependencies: + acorn "^4.0.3" + defined "^1.0.0" + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + +diff@3.2.0, diff@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domhandler@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1, domutils@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +duplexer2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +ease-component@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ease-component/-/ease-component-1.0.0.tgz#b375726db0b5b04595b77440396fec7daa5d77c9" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +ejs-html-loader@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ejs-html-loader/-/ejs-html-loader-2.0.2.tgz#55e4de152ea4272c081a7601032ff19bdff0f204" + dependencies: + loader-utils "^0.2.15" + +ejs-loader@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ejs-loader/-/ejs-loader-0.3.0.tgz#68736fdc231a490edf919a6446ad9d9055a587be" + dependencies: + loader-utils "^0.2.7" + lodash "^3.6.0" + +ejs@^2.5.2: + version "2.5.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88" + +electron-to-chromium@^1.2.7: + version "1.3.8" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.8.tgz#b2c8a2c79bb89fbbfd3724d9555e15095b5f5fb6" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + dependencies: + once "^1.4.0" + +engine.io-client@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "2.3.3" + engine.io-parser "1.3.2" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.2" + xmlhttprequest-ssl "1.5.3" + yeast "0.1.2" + +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" + dependencies: + after "0.8.2" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary "0.1.7" + wtf-8 "1.0.0" + +engine.io@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" + dependencies: + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.2" + +enhanced-resolve@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.5" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +envify@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/envify/-/envify-3.4.1.tgz#d7122329e8df1688ba771b12501917c9ce5cbce8" + dependencies: + jstransform "^11.0.3" + through "~2.3.4" + +errno@^0.1.1, errno@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.15" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-promise@~4.0.3: + version "4.0.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-templates@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" + dependencies: + recast "~0.11.12" + through "~2.3.6" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@^3.10.2: + version "3.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.5.2" + debug "^2.1.1" + doctrine "^2.0.0" + escope "^3.6.0" + espree "^3.4.0" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.14.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~2.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +espree@^3.4.0: + version "3.4.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.2.tgz#38dbdedbedc95b8961a1fbf04734a8f6a9c8c592" + dependencies: + acorn "^5.0.1" + acorn-jsx "^3.0.0" + +esprima-fb@^15001.1.0-dev-harmony-fb: + version "15001.1.0-dev-harmony-fb" + resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^3.1.1, esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + dependencies: + estraverse "~4.1.0" + object-assign "^4.0.1" + +estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +evp_bytestokey@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" + dependencies: + create-hash "^1.1.1" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +express@^4.13.3: + version "4.15.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35" + dependencies: + 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.1" + depd "~1.1.0" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.0" + finalhandler "~1.0.0" + 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.3" + qs "6.4.0" + range-parser "~1.2.0" + send "0.15.1" + serve-static "1.12.1" + setprototypeof "1.0.3" + statuses "~1.3.1" + type-is "~1.6.14" + utils-merge "1.0.0" + vary "~1.1.0" + +extend@^3.0.0, extend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extract-text-webpack-plugin@^2.0.0-rc.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz#69315b885f876dbf96d3819f6a9f1cca7aebf159" + dependencies: + ajv "^4.11.2" + async "^2.1.2" + loader-utils "^1.0.2" + webpack-sources "^0.1.0" + +extract-zip@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" + dependencies: + concat-stream "1.5.0" + debug "0.7.4" + mkdirp "0.5.0" + yauzl "2.4.1" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fastclick@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/fastclick/-/fastclick-1.0.6.tgz#161625b27b1a5806405936bda9a2c1926d06be6a" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-loader@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42" + dependencies: + loader-utils "~0.2.5" + +filename-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + +fill-keys@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20" + dependencies: + is-object "~1.0.1" + merge-descriptors "~1.0.0" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +filled-array@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" + +finalhandler@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8" + dependencies: + debug "2.6.3" + 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" + +finalhandler@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.2.tgz#d0e36f9dbc557f2de14423df6261889e9d60c93a" + dependencies: + debug "2.6.4" + 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" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +flat-cache@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +font-awesome@^4.3.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +formatio@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" + dependencies: + samsam "1.x" + +forwarded@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" + +fresh@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" + +fs-extra@^0.26.4: + version "0.26.7" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^1.0.0, fs-extra@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +gauge@~2.7.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +getpass@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + dependencies: + assert-plus "^1.0.0" + +gettext-parser@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gettext-parser/-/gettext-parser-1.1.0.tgz#2c5a6638d893934b9b55037d0ad82cb7004b2679" + dependencies: + encoding "^0.1.11" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~3.2.8: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +globals@^9.0.0, globals@^9.14.0: + version "9.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +graceful-fs-extra@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/graceful-fs-extra/-/graceful-fs-extra-2.0.0.tgz#7d1e57fcc726e2b0cc707d78b4acea542fa9be4e" + dependencies: + fs-extra "^0.30.0" + graceful-ncp "^3.0.0" + proxyquire "^1.4.0" + +graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +graceful-ncp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/graceful-ncp/-/graceful-ncp-3.0.0.tgz#5805ea25585ef984cccaa8086a3c530ee4128a8a" + dependencies: + graceful-fs "^4.1.4" + ncp "^2.0.0" + proxyquire "^1.4.0" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-binary@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + dependencies: + isarray "0.0.1" + +has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" + dependencies: + inherits "^2.0.1" + +hasha@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.4.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +html-loader@^0.4.4: + version "0.4.5" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.4.5.tgz#5fbcd87cd63a5c49a7fce2fe56f425e05729c68c" + dependencies: + es6-templates "^0.2.2" + fastparse "^1.1.1" + html-minifier "^3.0.1" + loader-utils "^1.0.2" + object-assign "^4.1.0" + +html-minifier@^3.0.1, html-minifier@^3.2.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.4.3.tgz#eb3a7297c804611f470454eeebe0aacc427e424a" + dependencies: + camel-case "3.0.x" + clean-css "4.0.x" + commander "2.9.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "~2.8.22" + +html-webpack-plugin@^2.28.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" + dependencies: + bluebird "^3.4.7" + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + toposort "^1.0.0" + +htmlparser2@^3.9.2: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-errors@~1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" + dependencies: + inherits "2.0.3" + setprototypeof "1.0.2" + statuses ">= 1.3.1 < 2" + +http-errors@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" + dependencies: + depd "1.1.0" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-proxy-middleware@~0.17.1: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.13.0, http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +iconv-lite@0.4.15, iconv-lite@^0.4.5, iconv-lite@~0.4.13: + version "0.4.15" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + +icss-replace-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ignore@^3.2.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.7.tgz#4810ca5f1d8eca5595213a34b94f2eb4ed926bbd" + +image-size@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +interpret@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + +invariant@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ipaddr.js@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-object@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isbinaryfile@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jed@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jed/-/jed-1.1.1.tgz#7a549bbd9ffe1585b0cd0a191e203055bee574b4" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +jquery@^2.1.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02" + +js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-tokens@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" + +js-yaml@^3.5.1: + version "3.8.3" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-loader@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2, json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + dependencies: + assert-plus "1.0.0" + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +jstransform@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223" + dependencies: + base62 "^1.1.0" + commoner "^0.10.1" + esprima-fb "^15001.1.0-dev-harmony-fb" + object-assign "^2.0.0" + source-map "^0.4.2" + +jszip@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-2.6.1.tgz#b88f3a7b2e67a2a048152982c7a3756d9c4828f0" + dependencies: + pako "~1.0.2" + +karma-cli@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960" + dependencies: + resolve "^1.1.6" + +karma-mocha-reporter@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz#04fdda45a1d9697a73871c7472223c581701ab20" + dependencies: + chalk "1.1.3" + +karma-mocha@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" + dependencies: + minimist "1.2.0" + +karma-phantomjs-launcher@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" + dependencies: + lodash "^4.0.1" + phantomjs-prebuilt "^2.1.7" + +karma-webpack@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-1.8.1.tgz#39d5fd2edeea3cc3ef5b405989b37d5b0e6a3b4e" + dependencies: + async "~0.9.0" + loader-utils "^0.2.5" + lodash "^3.8.0" + source-map "^0.1.41" + webpack-dev-middleware "^1.0.11" + +karma@^1.3.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.6.0.tgz#0e871d4527d5eac56c41d181f03c5c0a7e6dbf3e" + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^3.8.0" + log4js "^0.6.31" + mime "^1.3.4" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "1.7.3" + source-map "^0.5.3" + tmp "0.0.31" + useragent "^2.1.12" + +kew@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + +kind-of@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" + dependencies: + is-buffer "^1.0.2" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +latest-version@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" + dependencies: + package-json "^2.0.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lazy-req@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +less-loader@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528" + dependencies: + loader-utils "^0.2.5" + +less-plugin-autoprefix@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/less-plugin-autoprefix/-/less-plugin-autoprefix-1.5.1.tgz#bca4e5b2e48cac6965a1783142e3b32c3c00ce07" + dependencies: + autoprefixer "^6.0.0" + postcss "^5.0.0" + +less-plugin-clean-css@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz#cc57af7aa3398957e56decebe63cb60c23429703" + dependencies: + clean-css "^3.0.1" + +less@^2.7.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.72.0" + source-map "^0.5.3" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.7, loader-utils@~0.2.5: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash@^3.6.0, lodash@^3.8.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.8.0, lodash@~4.17.4: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +lodash@~2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + +log4js@^0.6.31: + version "0.6.38" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" + dependencies: + readable-stream "~1.0.2" + semver "~4.3.3" + +lolex@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@2, lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +math-expression-evaluator@^1.2.14: + version "1.2.16" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1, merge-descriptors@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +miller-rabin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +"mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" + +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: + version "2.1.15" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + dependencies: + mime-db "~1.27.0" + +mime@1.3.4, mime@1.3.x, mime@^1.2.11, mime@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.14: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@1.2.0, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mkdirp@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mkpath@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" + +mocha@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.3.0.tgz#d29b7428d3f52c82e2e65df1ecb7064e1aabbfb5" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.0" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + +module-not-found-error@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" + +moment@^2.10.3: + version "2.18.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" + +mute-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + +nan@^2.3.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + +native-promise-only@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +ncp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +no-case@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" + dependencies: + lower-case "^1.1.1" + +node-dir@^0.1.10: + version "0.1.16" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4" + dependencies: + minimatch "^3.0.2" + +node-libs-browser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.1.4" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "0.0.1" + os-browserify "^0.2.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.0.5" + stream-browserify "^2.0.1" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.29: + version "0.6.34" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +nomnom@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" + dependencies: + chalk "~0.4.0" + underscore "~1.6.0" + +nopt@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npmlog@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.1" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +nw-builder@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/nw-builder/-/nw-builder-3.2.0.tgz#cb45b89aed8c427661f097253b8ebc55d63afd39" + dependencies: + archiver "^1.3.0" + bluebird "^3.4.0" + decompress-zip "0.3.0" + deprecate "~1.0.0" + graceful-fs-extra "^2.0.0" + graceful-ncp "^3.0.0" + inherits "~2.0.1" + lodash "~4.17.4" + optimist "^0.6.1" + platform-overrides "~1.0.1" + plist "^2.0.1" + progress "~1.1.7" + rcedit "^0.7.0" + recursive-readdir-sync "^1.0.6" + request "~2.79.0" + rimraf "^2.5.2" + semver "^2.3.2" + simple-glob "~0.1.0" + tar-fs "^1.13.0" + temp "~0.7.0" + update-notifier "^1.0.2" + winresourcer "^0.9.0" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +open@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" + +optimist@^0.6.1, optimist@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + +os-browserify@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.0, osenv@^0.1.3, osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +package-json@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" + dependencies: + got "^5.0.0" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +pako@~1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.5.tgz#d2205dfe5b9da8af797e7c163db4d1f84e4600bc" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pbkdf2@^3.0.3: + version "3.0.9" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" + dependencies: + create-hmac "^1.1.2" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +phantomjs-prebuilt@^2.1.7: + version "2.1.14" + resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0" + dependencies: + es6-promise "~4.0.3" + extract-zip "~1.5.0" + fs-extra "~1.0.0" + hasha "~2.2.0" + kew "~0.7.0" + progress "~1.1.8" + request "~2.79.0" + request-progress "~2.0.1" + which "~1.2.10" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +platform-overrides@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/platform-overrides/-/platform-overrides-1.0.1.tgz#914ce17b276717461d1cf71d8f8837aafbfb739f" + dependencies: + lodash "~2.4.1" + +plist@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/plist/-/plist-2.0.1.tgz#0a32ca9481b1c364e92e18dc55c876de9d01da8b" + dependencies: + base64-js "1.1.2" + xmlbuilder "8.2.2" + xmldom "0.1.x" + +pluralize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + +po2json@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/po2json/-/po2json-0.4.5.tgz#47bb2952da32d58a1be2f256a598eebc0b745118" + dependencies: + gettext-parser "1.1.0" + nomnom "1.8.1" + +pofile@^1.0.2: + version "1.0.8" + resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.0.8.tgz#09246a1788035404fc4d1ee087fa5e9ea686567d" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-modules-extract-imports@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341" + dependencies: + postcss "^5.0.4" + +postcss-modules-local-by-default@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-scope@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-values@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1" + dependencies: + icss-replace-symbols "^1.0.2" + postcss "^5.0.14" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-error@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.0.tgz#87f4e9d706a24c87d6cbee9fabec001fcf8c75d8" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.6, private@~0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.0: + version "0.11.9" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" + +progress@^1.1.8, progress@~1.1.7, progress@~1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +promise@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" + dependencies: + asap "~2.0.3" + +proxy-addr@~1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" + dependencies: + forwarded "~0.1.0" + ipaddr.js "1.3.0" + +proxyquire@^1.4.0: + version "1.7.11" + resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-1.7.11.tgz#13b494eb1e71fb21cc3ebe3699e637d3bec1af9e" + dependencies: + fill-keys "^1.0.2" + module-not-found-error "^1.0.0" + resolve "~1.1.7" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +pump@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qjobs@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" + +qs@6.4.0, qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +qs@~6.3.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +randombytes@^2.0.0, randombytes@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" + +range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" + dependencies: + bytes "2.4.0" + iconv-lite "0.4.15" + unpipe "1.0.0" + +raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + +rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +rcedit@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rcedit/-/rcedit-0.7.0.tgz#560b2920165034a135316e6a111f8274b9cec521" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@1.0, readable-stream@~1.0.2: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^1.1.8: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: + version "2.2.9" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readable-stream@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +recast@^0.11.17, recast@~0.11.12: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +recursive-readdir-sync@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz#1dbf6d32f3c5bb8d3cde97a6c588d547a9e13d56" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" + +regenerator-transform@0.9.11: + version "0.9.11" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.0.tgz#57ae67347e73d96345ed1bc01294c7237c02aa63" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +remove-trailing-separator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + +renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request-progress@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + dependencies: + throttleit "^1.0.0" + +request@^2.72.0, request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@1.0.x, requires-port@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve@^1.1.6: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" + +resolve@~1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + +ripemd160@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" + +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + +samsam@1.x, samsam@^1.1.3: + version "1.2.1" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" + +sax@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" + +scroll-to-element@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/scroll-to-element/-/scroll-to-element-2.0.0.tgz#3467330e3384743b7295ac64b30279990c5ac164" + dependencies: + scroll-to "0.0.2" + +scroll-to@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/scroll-to/-/scroll-to-0.0.2.tgz#936d398a9133660a2492145c2c0081dfcb0728f3" + dependencies: + component-raf "1.2.0" + component-tween "1.2.0" + +segseg@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/segseg/-/segseg-0.2.2.tgz#9620ac8d60d2f098c874b945c91cddfaffe3e3d7" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +semver-utils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.1.tgz#27d92fec34d27cfa42707d3b40d025ae9855f2df" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +semver@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" + +semver@~4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +send@0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" + dependencies: + debug "2.6.1" + 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 "0.7.2" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.1" + +serve-index@^1.7.2: + version "1.8.0" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" + dependencies: + accepts "~1.3.3" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.5.0" + mime-types "~2.1.11" + parseurl "~1.3.1" + +serve-static@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.1" + send "0.15.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +sha.js@^2.3.6: + version "2.4.8" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" + dependencies: + inherits "^2.0.1" + +shelljs@^0.7.5: + version "0.7.7" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +simple-glob@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/simple-glob/-/simple-glob-0.1.1.tgz#282bfa012d7206643df61d34c6bb9e4ce3fd7714" + dependencies: + glob "~3.2.8" + lodash "~2.4.1" + minimatch "~0.2.14" + +sinon@^2.0.0-pre.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.1.0.tgz#e057a9d2bf1b32f5d6dd62628ca9ee3961b0cafb" + dependencies: + diff "^3.1.0" + formatio "1.2.0" + lolex "^1.6.0" + native-promise-only "^0.8.1" + path-to-regexp "^1.7.0" + samsam "^1.1.3" + text-encoding "0.6.4" + type-detect "^4.0.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" + +socket.io-client@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.3" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.5" + socket.io-parser "2.3.1" + to-array "0.1.4" + +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + dependencies: + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + +socket.io@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" + dependencies: + debug "2.3.3" + engine.io "1.8.3" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.3" + socket.io-parser "2.3.1" + +sockjs-client@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5" + dependencies: + debug "^2.2.0" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.1" + +sockjs@^0.3.15: + version "0.3.18" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" + dependencies: + faye-websocket "^0.10.0" + uuid "^2.0.2" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^0.1.7, source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + +source-list-map@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4" + +source-map-support@^0.4.2: + version "0.4.14" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef" + dependencies: + source-map "^0.5.6" + +source-map@0.4.x, source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@^0.1.41: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +"statuses@>= 1.3.1 < 2", statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-cache@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stream-cache/-/stream-cache-0.0.2.tgz#1ac5ad6832428ca55667dbdee395dad4e6db118f" + +stream-http@^2.3.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.0.tgz#cec1f4e3b494bc4a81b451808970f8b20b4ed5f6" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.2.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" + dependencies: + buffer-shims "~1.0.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +style-loader@^0.13.1: + version "0.13.2" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb" + dependencies: + loader-utils "^1.0.2" + +supports-color@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +svg.js@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/svg.js/-/svg.js-1.1.1.tgz#66a3adad0509d8b8f1b0bde196453c7cc13eb99a" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + +tapable@^0.2.5, tapable@~0.2.5: + version "0.2.6" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" + +tar-fs@^1.13.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.15.2.tgz#761f5b32932c7b39461a60d537faea0d8084830c" + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar-stream@^1.1.2, tar-stream@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" + dependencies: + bl "^1.0.0" + end-of-stream "^1.0.0" + readable-stream "^2.0.0" + xtend "^4.0.0" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +temp@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.7.0.tgz#d34bdc8e7f955da2a6a473fea07ad601d68ba78f" + dependencies: + rimraf "~2.2.6" + +tether-drop@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/tether-drop/-/tether-drop-1.4.2.tgz#28e240cce077f4ae1d8e5990a03b71e0cd6fbfec" + dependencies: + tether "^1.1.0" + +tether@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/tether/-/tether-1.4.0.tgz#0f9fa171f75bf58485d8149e94799d7ae74d1c1a" + +text-encoding@0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + +through@^2.3.6, through@~2.3.4, through@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timed-out@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + +timers-browserify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" + dependencies: + setimmediate "^1.0.4" + +tiny-uuid@^1.0.0: + version v1.0.0 + resolved "https://registry.yarnpkg.com/tiny-uuid/-/tiny-uuid-1.0.0.tgz#aea34a2f89c7b71435eb38af3139aa3a025351ca" + +tmp@0.0.31, tmp@0.0.x: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" + +toposort@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" + +touch@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/touch/-/touch-0.0.3.tgz#51aef3d449571d4f287a5d87c9c8b49181a0db1d" + dependencies: + nopt "~1.0.10" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + +type-detect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" + +type-detect@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" + +type-is@~1.6.14: + version "1.6.15" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.15" + +typedarray@^0.0.6, typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@^2.8.5, uglify-js@~2.8.22: + version "2.8.22" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + +underscore@^1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +update-notifier@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" + dependencies: + boxen "^0.6.0" + chalk "^1.0.0" + configstore "^2.0.0" + is-npm "^1.0.0" + latest-version "^2.0.0" + lazy-req "^1.1.0" + semver-diff "^2.0.0" + xdg-basedir "^2.0.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +url-loader@^0.5.7: + version "0.5.8" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5" + dependencies: + loader-utils "^1.0.2" + mime "1.3.x" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.1: + version "1.1.8" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + +useragent@^2.1.12: + version "2.1.13" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.13.tgz#bba43e8aa24d5ceb83c2937473e102e21df74c10" + dependencies: + lru-cache "2.2.x" + tmp "0.0.x" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +uuid@^2.0.1, uuid@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +vary@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + +vue-router@^0.7.13: + version "0.7.13" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-0.7.13.tgz#e1f0f042ac2561504b27f46f6dcd17b832b1c8d1" + +vue@^1.0.18: + version "1.0.28" + resolved "https://registry.yarnpkg.com/vue/-/vue-1.0.28.tgz#ed2ff07b200bde15c87a90ef8727ceea7d38567d" + dependencies: + envify "^3.4.0" + +vuex@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vuex/-/vuex-1.0.1.tgz#b93c3415b5e86e54660164a1a17e2b376c759feb" + +walkdir@^0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" + +watchpack@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" + dependencies: + async "^2.1.2" + chokidar "^1.4.3" + graceful-fs "^4.1.2" + +webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz#2e252ce1dfb020dbda1ccb37df26f30ab014dbd1" + dependencies: + memory-fs "~0.4.1" + mime "^1.3.4" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + +webpack-dev-server@^1.16.3: + version "1.16.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-1.16.4.tgz#9a5b8e86aafa2c478e8a24d29ddb282ac696ef50" + dependencies: + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + express "^4.13.3" + http-proxy-middleware "~0.17.1" + open "0.0.5" + optimist "~0.6.1" + serve-index "^1.7.2" + sockjs "^0.3.15" + sockjs-client "^1.0.3" + stream-cache "~0.0.1" + strip-ansi "^3.0.0" + supports-color "^3.1.1" + webpack-dev-middleware "^1.10.2" + +webpack-sources@^0.1.0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" + dependencies: + source-list-map "~0.1.7" + source-map "~0.5.3" + +webpack-sources@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" + dependencies: + source-list-map "^1.1.1" + source-map "~0.5.3" + +webpack@^2.2.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.4.1.tgz#15a91dbe34966d8a4b99c7d656efd92a2e5a6f6a" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^4.7.0" + ajv-keywords "^1.1.1" + async "^2.1.2" + enhanced-resolve "^3.0.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^0.2.16" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^3.1.0" + tapable "~0.2.5" + uglify-js "^2.8.5" + watchpack "^1.3.1" + webpack-sources "^0.2.3" + yargs "^6.0.0" + +websocket-driver@>=0.5.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + dependencies: + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which@~1.2.10: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +winresourcer@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/winresourcer/-/winresourcer-0.9.0.tgz#0afca30f3c6e7458058d28a0b673c9dda622b9b5" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^1.1.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.3.tgz#831dd22d491bdc135180bb996a0eb3f8bf587791" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +ws@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + +xdg-basedir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" + dependencies: + os-homedir "^1.0.0" + +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + +xmlbuilder@8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" + +xmldom@0.1.x: + version "0.1.27" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + +xtend@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs@^6.0.0, yargs@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + +zip-stream@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.1.1.tgz#5216b48bbb4d2651f64d5c6e6f09eb4a7399d557" + dependencies: + archiver-utils "^1.3.0" + compress-commons "^1.1.0" + lodash "^4.8.0" + readable-stream "^2.0.0" From 63b5947a405c7cafb375cfbd696693562277ec70 Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Wed, 6 Dec 2017 21:23:53 -0500 Subject: [PATCH 06/12] Add spec for save queue --- src/nw/save-queue.spec.js | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/nw/save-queue.spec.js diff --git a/src/nw/save-queue.spec.js b/src/nw/save-queue.spec.js new file mode 100644 index 000000000..fe7bf0c57 --- /dev/null +++ b/src/nw/save-queue.spec.js @@ -0,0 +1,47 @@ +const { expect } = require('chai'); +const { stub } = require('sinon'); +const storyFile = require('./story-file'); +const saveQueue = require('./save-queue'); + +describe('SaveQueue', () => { + let fakeStore = { + state: { + story: { + stories: [ + { + name: 'test', + id: 'not-a-real-id' + } + ] + } + } + }; + + beforeEach(() => { + stub(storyFile, 'save'); + }); + + afterEach(() => { + storyFile.save.restore(); + }); + + it('triggers a save action after its delay elapses', done => { + storyFile.save.callsFake(story => { + expect(story.name).to.equal('test'); + expect(story.id).to.equal('not-a-real-id'); + done(); + }); + saveQueue.attachStore(fakeStore); + saveQueue.delay = 100; + saveQueue.queue('not-a-real-id'); + }); + + it('immediately saves on flush()', () => { + saveQueue.attachStore(fakeStore); + saveQueue.delay = 10000; + saveQueue.queue('not-a-real-id'); + saveQueue.flush(); + expect(storyFile.save.calledOnce); + expect(storyFile.save.firstCall.calledWith('not-a-real-id')); + }); +}); \ No newline at end of file From 78a12d47076926905f131576c57c22bc930d4413 Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Wed, 6 Dec 2017 21:27:08 -0500 Subject: [PATCH 07/12] eslint fixes --- package-lock.json | 19823 +++++++++------------ package.json | 9 +- src/nw/patches/store/file-persistence.js | 5 +- src/nw/save-queue.js | 5 +- 4 files changed, 8606 insertions(+), 11236 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47541a6fc..34084d849 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,12 +9,109 @@ "integrity": "sha1-9hjxGpRPahjZK1xHIChyij49S2Y=", "dev": true }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "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" + } + }, + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "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" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "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": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, "array-includes": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", @@ -25,6 +122,62 @@ "es-abstract": "1.10.0" } }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "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" + } + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "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 + }, "babel-core": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", @@ -1193,6 +1346,22 @@ } } }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, "base64-font-loader": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/base64-font-loader/-/base64-font-loader-0.0.4.tgz", @@ -1240,11 +1409,41 @@ } } }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, "blob-polyfill": { "version": "1.0.20150320", "resolved": "https://registry.npmjs.org/blob-polyfill/-/blob-polyfill-1.0.20150320.tgz", "integrity": "sha1-A2kt1oIFae8lqHYy+mGclR1XSNo=" }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, "body-parser": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", @@ -1263,18 +1462,6 @@ "type-is": "1.6.15" }, "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -1283,109 +1470,50 @@ "requires": { "ms": "2.0.0" } - }, - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.4.0" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "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 - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "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" - } - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "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 - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "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.17" - } } } }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.1", + "multicast-dns-service-types": "1.1.0" + } + }, + "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=", + "dev": true, + "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 + }, "browser-process-hrtime": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", @@ -1397,6 +1525,99 @@ "resolved": "https://registry.npmjs.org/browser-saveas/-/browser-saveas-1.0.1.tgz", "integrity": "sha1-H5HL9aaFpvpCS/jgG6f6mCXjtek=" }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "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.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "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.4", + "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.8", + "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.8", + "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.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "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-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, "build": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz", @@ -1423,6 +1644,50 @@ } } }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "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" + } + }, "chai": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", @@ -1465,6 +1730,27 @@ } } }, + "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 + } + } + }, "cheerio": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", @@ -1575,11 +1861,147 @@ "integrity": "sha1-BGYrky0PAuxm3qorDqQoEZaOPrk=", "dev": true }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "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" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "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" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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 + }, "codemirror": { "version": "5.32.0", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.32.0.tgz", "integrity": "sha512-95OxAlYiigW0g4n4ixFdavG07clJGILp3MvHh2pKR3FvyrTuHHvqtKSVbrV3/Jz6o0YqGvyCDLDTbH4h6ciaSw==" }, + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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 + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "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" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "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.2.3", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.2.3.tgz", @@ -1695,6 +2117,78 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" }, + "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 + }, + "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.8", + "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.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "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.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.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.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" + } + }, "css-loader": { "version": "0.28.7", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", @@ -2996,12 +3490,57 @@ "integrity": "sha1-3c5MVHtRCuDVlKjx+/iq+OLFwA0=", "dev": true }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, "cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", "dev": true }, + "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.37" + } + }, + "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 + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", @@ -3012,12 +3551,102 @@ "object-keys": "1.0.11" } }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "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-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "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.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", + "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "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 + }, "domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz", "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==", "dev": true }, + "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.7", "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", @@ -3078,6 +3707,63 @@ } } }, + "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.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "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.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "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" + } + }, "es-abstract": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", @@ -3089,23 +3775,6 @@ "has": "1.0.1", "is-callable": "1.1.3", "is-regex": "1.0.4" - }, - "dependencies": { - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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.1" - } - } } }, "es-to-primitive": { @@ -3119,6 +3788,100 @@ "is-symbol": "1.0.1" } }, + "es5-ext": { + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "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.37", + "es6-iterator": "2.0.3", + "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.37", + "es6-iterator": "2.0.3", + "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.37" + } + }, + "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.37", + "es6-iterator": "2.0.3", + "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", @@ -4019,6 +4782,15 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "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" + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -4030,15 +4802,6 @@ "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" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -4196,132 +4959,210 @@ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, - "estraverse": { + "esrecurse": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "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 }, - "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=", + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "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": { - "async": "2.6.0", - "loader-utils": "1.1.0", - "schema-utils": "0.3.0", - "webpack-sources": "1.1.0" + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "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": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" }, "dependencies": { - "ajv": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", - "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "requires": { - "lodash": "4.17.4" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" - }, - "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=" - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "requires": { - "ajv": "5.5.1" - } - }, - "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==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true }, - "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" + "ms": "2.0.0" } } } }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "dev": true, + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + } + }, "eyes": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", "dev": true }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "fastclick": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz", "integrity": "sha1-FhYlsnsaWAZAWTa9qaLBkm0Gvmo=" }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, "file-loader": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", @@ -4362,17 +5203,98 @@ } } }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, "font-awesome": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, "foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, "fs-extra": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", @@ -4410,1199 +5332,1218 @@ } } }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, + "optional": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "ajv": { + "version": "4.11.8", + "bundled": true, "dev": true, + "optional": true, "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "ansi-regex": { + "version": "2.1.1", + "bundled": true, "dev": true }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "delegates": "1.0.0", + "readable-stream": "2.2.9" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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 }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "1.1.8" + "tweetnacl": "0.14.5" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "block-stream": { + "version": "0.0.9", + "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "inherits": "2.0.3" } }, - "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 - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } - }, - "html-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz", - "integrity": "sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA==", - "dev": true, - "requires": { - "es6-templates": "0.2.3", - "fastparse": "1.1.1", - "html-minifier": "3.5.7", - "loader-utils": "1.1.0", - "object-assign": "4.1.1" - }, - "dependencies": { - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", - "dev": true - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "boom": { + "version": "2.10.1", + "bundled": true, "dev": true, "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "hoek": "2.16.3" } }, - "clean-css": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", - "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "brace-expansion": { + "version": "1.1.7", + "bundled": true, "dev": true, "requires": { - "source-map": "0.5.7" + "balanced-match": "0.4.2", + "concat-map": "0.0.1" } }, - "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "buffer-shims": { + "version": "1.0.0", + "bundled": true, "dev": true }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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 }, - "es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "combined-stream": { + "version": "1.0.5", + "bundled": true, "dev": true, "requires": { - "recast": "0.11.23", - "through": "2.3.8" + "delayed-stream": "1.0.0" } }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "concat-map": { + "version": "0.0.1", + "bundled": true, "dev": true }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "console-control-strings": { + "version": "1.1.0", + "bundled": true, "dev": true }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "core-util-is": { + "version": "1.0.2", + "bundled": true, "dev": true }, - "html-minifier": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", - "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", + "cryptiles": { + "version": "2.0.5", + "bundled": true, "dev": true, "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.9", - "commander": "2.12.2", - "he": "1.1.1", - "ncname": "1.0.0", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.2.1" + "boom": "2.10.1" } }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "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 + } + } }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "debug": { + "version": "2.6.8", + "bundled": true, "dev": true, + "optional": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "ms": "2.0.0" } }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, "dev": true }, - "ncname": { + "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "bundled": true, "dev": true, - "requires": { - "xml-char-classes": "1.0.0" - } + "optional": true }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "lower-case": "1.1.4" + "jsbn": "0.1.1" } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, "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=", + "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": { - "no-case": "2.3.2" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "fs.realpath": { + "version": "1.0.0", + "bundled": true, "dev": true }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "fstream": { + "version": "1.0.11", + "bundled": true, "dev": true, "requires": { - "ast-types": "0.9.6", - "esprima": "3.1.3", - "private": "0.1.8", - "source-map": "0.5.7" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "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" + } }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "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" + } }, - "uglify-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.1.tgz", - "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==", + "getpass": { + "version": "0.1.7", + "bundled": true, "dev": true, + "optional": true, "requires": { - "commander": "2.12.2", - "source-map": "0.6.1" + "assert-plus": "1.0.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": 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 - }, - "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 - } - } - }, - "html-webpack-plugin": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", - "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "html-minifier": "3.5.7", - "loader-utils": "0.2.17", - "lodash": "4.17.4", - "pretty-error": "2.1.1", - "toposort": "1.0.6" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "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 + "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" + } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "graceful-fs": { + "version": "4.1.11", + "bundled": true, "dev": true }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "har-schema": { + "version": "1.0.5", + "bundled": true, "dev": true, - "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" - } + "optional": true }, - "clean-css": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", - "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "har-validator": { + "version": "4.2.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "source-map": "0.5.7" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, - "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", - "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 + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "hawk": { + "version": "3.1.3", + "bundled": true, "dev": true, "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, - "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=", + "hoek": { + "version": "2.16.3", + "bundled": true, "dev": true }, - "dom-converter": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", - "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "http-signature": { + "version": "1.1.1", + "bundled": true, "dev": true, + "optional": 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 - } + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" } }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "inflight": { + "version": "1.0.6", + "bundled": true, "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 - } + "once": "1.4.0", + "wrappy": "1.0.2" } }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "inherits": { + "version": "2.0.3", + "bundled": true, "dev": true }, - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "ini": { + "version": "1.3.4", + "bundled": true, "dev": true, - "requires": { - "domelementtype": "1.3.0" - } + "optional": true }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "number-is-nan": "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 + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "isarray": { + "version": "1.0.0", + "bundled": true, "dev": true }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true }, - "html-minifier": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", - "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", + "jodid25519": { + "version": "1.0.2", + "bundled": true, "dev": true, + "optional": true, "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.9", - "commander": "2.12.2", - "he": "1.1.1", - "ncname": "1.0.0", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.2.1" + "jsbn": "0.1.1" } }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "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": { - "domelementtype": "1.3.0", - "domhandler": "2.1.0", - "domutils": "1.1.6", - "readable-stream": "1.0.34" - }, - "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - } + "jsonify": "0.0.0" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "jsprim": { + "version": "1.4.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "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 + } } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "mime-db": { + "version": "1.27.0", + "bundled": true, "dev": true }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "mime-types": { + "version": "2.1.15", + "bundled": true, "dev": true, "requires": { - "xml-char-classes": "1.0.0" + "mime-db": "1.27.0" } }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "minimatch": { + "version": "3.0.4", + "bundled": true, "dev": true, "requires": { - "lower-case": "1.1.4" + "brace-expansion": "1.1.7" } }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, "dev": true, "requires": { - "boolbase": "1.0.0" + "minimist": "0.0.8" } }, - "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 + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, "dev": true, + "optional": true, "requires": { - "no-case": "2.3.2" + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "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" } }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "nopt": { + "version": "4.0.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "renderkid": "2.0.1", - "utila": "0.4.0" + "abbrev": "1.1.0", + "osenv": "0.1.4" } }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "npmlog": { + "version": "4.1.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "number-is-nan": { + "version": "1.0.1", + "bundled": true, "dev": true }, - "renderkid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", - "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "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": { - "css-select": "1.2.0", - "dom-converter": "0.1.4", - "htmlparser2": "3.3.0", - "strip-ansi": "3.0.1", - "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 - } + "wrappy": "1.0.2" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true }, - "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 + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "osenv": { + "version": "0.1.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-regex": "2.1.1" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, - "toposort": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", - "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, "dev": true }, - "uglify-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.1.tgz", - "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==", + "performance-now": { + "version": "0.2.0", + "bundled": true, "dev": true, - "requires": { - "commander": "2.12.2", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "optional": true }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, "dev": true }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": 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 - } - } - }, - "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.3" - }, - "dependencies": { - "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 + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "rc": { + "version": "1.2.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true } } }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": 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" + } }, - "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "request": { + "version": "2.81.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "domelementtype": "1.3.0" + "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" } }, - "domutils": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", - "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "rimraf": { + "version": "2.6.1", + "bundled": true, "dev": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "glob": "7.1.2" } }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "safe-buffer": { + "version": "5.0.1", + "bundled": true, "dev": true }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": 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 + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "sntp": { + "version": "1.0.9", + "bundled": true, "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" + "hoek": "2.16.3" } }, - "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 + "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_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.0.1", + "bundled": true, "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.0.1" } }, - "util-deprecate": { + "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", - "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", - "dev": true - }, - "import-local": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", - "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "dev": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { - "locate-path": "2.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "ansi-regex": "2.1.1" } }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "tar": { + "version": "2.2.1", + "bundled": true, "dev": true, "requires": { - "p-limit": "1.1.0" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "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" + } }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "tough-cookie": { + "version": "2.3.2", + "bundled": true, "dev": true, + "optional": true, "requires": { - "find-up": "2.1.0" + "punycode": "1.4.1" } - } - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "1.0.1" - }, - "dependencies": { - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + }, + "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 }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "function-bind": "1.1.1" + "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 } } }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "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 }, - "jed": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", - "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=" + "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 }, - "jsdom": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", - "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==", + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "abab": "1.0.4", - "acorn": "5.2.1", - "acorn-globals": "4.1.0", - "array-equal": "1.0.0", - "browser-process-hrtime": "0.1.2", - "content-type-parser": "1.0.2", - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "domexception": "1.0.0", - "escodegen": "1.9.0", - "html-encoding-sniffer": "1.0.2", - "left-pad": "1.2.0", - "nwmatcher": "1.4.3", - "parse5": "3.0.3", - "pn": "1.0.0", - "request": "2.83.0", - "request-promise-native": "1.0.5", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.3.3", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.3", - "whatwg-url": "6.3.0", - "xml-name-validator": "2.0.1" + "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" }, "dependencies": { - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true - }, - "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "acorn-globals": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", - "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", - "dev": true, - "requires": { - "acorn": "5.2.1" - } - }, - "ajv": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", - "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "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": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "balanced-match": "1.0.0", + "concat-map": "0.0.1" } }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "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 }, - "assert-plus": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "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" + } }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "optional": true, "requires": { - "tweetnacl": "0.14.5" + "brace-expansion": "1.1.8" } }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "hoek": "4.2.0" + "wrappy": "1.0.2" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "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 }, - "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" - } - }, - "content-type-parser": { + "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "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=", + } + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "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.1" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "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.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "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.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } + }, + "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-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz", + "integrity": "sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA==", + "dev": true, + "requires": { + "es6-templates": "0.2.3", + "fastparse": "1.1.1", + "html-minifier": "3.5.7", + "loader-utils": "1.1.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", "dev": true }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.2.0" - } - } - } - }, - "cssom": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "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": { - "cssom": "0.3.2" + "no-case": "2.3.2", + "upper-case": "1.1.3" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "source-map": "0.5.7" } }, - "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=", + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "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" - } - }, - "escodegen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.5.7" + "recast": "0.11.23", + "through": "2.3.8" } }, "esprima": { @@ -5611,615 +6552,362 @@ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", "dev": true }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "html-minifier": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", + "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.2.1" + } }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "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 + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "xml-char-classes": "1.0.0" } }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, "requires": { - "assert-plus": "1.0.0" + "lower-case": "1.1.4" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "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 }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "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": { - "ajv": "5.5.1", - "har-schema": "2.0.0" + "no-case": "2.3.2" } }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", "dev": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" } }, - "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "dev": true }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "1.0.3" - } + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "uglify-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.1.tgz", + "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==", "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, - "is-typedarray": { + "xml-char-classes": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + } + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.7", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, - "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=", + "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 }, - "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=", + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "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": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "no-case": "2.3.2", + "upper-case": "1.1.3" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "source-map": "0.5.7" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", "dev": true }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "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 }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "nwmatcher": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", - "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "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" - } - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "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": { - "@types/node": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz" + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" } }, - "performance-now": { + "css-what": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", - "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", "dev": true }, - "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "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": { - "lodash": "4.17.4" + "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 + } } }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "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": { - "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.3" + "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 + } } }, - "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 - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", "dev": true }, - "sntp": { + "domhandler": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", "dev": true, "requires": { - "hoek": "4.2.0" + "domelementtype": "1.3.0" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true - }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "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" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", "dev": true }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "html-minifier": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", + "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", "dev": true, "requires": { - "punycode": "1.4.1" + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.2.1" } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", "dev": true, "requires": { - "punycode": "2.1.0" + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" }, "dependencies": { - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", - "dev": true + "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" + } } } }, - "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" - } - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", - "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.19" - } - }, - "whatwg-url": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz", - "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==", - "dev": true, - "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true - } - } - }, - "jsdom-global": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", - "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", - "dev": true - }, - "jsmin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", - "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", - "dev": true - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, - "jsonp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", - "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=", - "requires": { - "debug": "2.6.9" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "jszip": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", - "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", - "requires": { - "pako": "1.0.6" - }, - "dependencies": { - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" - } - } - }, - "jxLoader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz", - "integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=", - "dev": true, - "requires": { - "js-yaml": "0.3.7", - "moo-server": "1.3.0", - "promised-io": "0.3.5", - "walker": "1.0.7" - }, - "dependencies": { - "js-yaml": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", - "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=", - "dev": true - } - } - }, - "karma-webpack": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.6.tgz", - "integrity": "sha512-dcKvtiW00caWrceCKwIvlKwHQu8zI+e3zWZYDLk7kr7nl1lYSp8uP+8fQoBvRCnZiPUGuwU5Psm20NbEIn7KlA==", - "dev": true, - "requires": { - "async": "0.9.2", - "loader-utils": "0.2.17", - "lodash": "3.10.1", - "source-map": "0.5.7", - "webpack-dev-middleware": "1.12.2" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "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 - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "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" - } - }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -6227,9 +6915,9 @@ "dev": true }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, "json5": { @@ -6251,26 +6939,43 @@ } }, "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "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=", + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", "dev": true, "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" + "xml-char-classes": "1.0.0" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "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" + } }, "object-assign": { "version": "4.1.1", @@ -6278,28 +6983,214 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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.2" + } + }, + "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" + } + }, + "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" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "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=", + "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": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "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 }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "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" + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "dev": true + }, + "uglify-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.1.tgz", + "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==", + "dev": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "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 + } + } + }, + "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.3" + }, + "dependencies": { + "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 + }, + "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 + } + } + }, + "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" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "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 }, "readable-stream": { @@ -6323,12 +7214,6 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", @@ -6338,1086 +7223,1230 @@ "safe-buffer": "5.1.1" } }, - "time-stamp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", - "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", - "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 - }, - "webpack-dev-middleware": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", - "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", - "dev": true, - "requires": { - "memory-fs": "0.4.1", - "mime": "1.6.0", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "time-stamp": "2.0.0" - } } } }, - "killable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", - "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", - "dev": true - }, - "left-pad": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", - "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", "dev": true }, - "less": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", - "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", "dev": true, "requires": { - "errno": "0.1.4", - "graceful-fs": "4.1.11", - "image-size": "0.5.5", - "mime": "1.6.0", - "mkdirp": "0.5.1", - "promise": "7.3.1", - "request": "2.81.0", - "source-map": "0.5.7" + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" }, "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true, - "optional": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true, - "optional": true - }, - "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, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true, - "optional": 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" - } - }, - "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" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "optional": 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" - } - }, - "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, - "optional": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "optional": 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, - "optional": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", "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" - } - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, - "optional": true, - "requires": { - "prr": "0.0.0" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + } + } + }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, + "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" + }, + "dependencies": { + "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 }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": 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, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, - "optional": 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, - "optional": true - } + "is-extglob": "2.1.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, - "optional": true - }, - "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, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + } + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "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" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "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.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "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": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-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.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "jed": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=" + }, + "jsdom": { + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", + "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "5.2.1", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.0", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "3.0.3", + "pn": "1.0.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.3.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", "dev": true, - "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "acorn": "5.2.1" } }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", "dev": true, - "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, - "is-typedarray": { + "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, - "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, - "optional": true + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true, - "optional": true + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true }, - "json-stable-stringify": { + "bcrypt-pbkdf": { "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=", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "tweetnacl": "0.14.5" } }, - "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, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, - "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } + "hoek": "4.2.0" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "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": { - "mime-db": "1.30.0" + "delayed-stream": "1.0.0" } }, - "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, - "optional": true + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true }, - "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, - "optional": 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 }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, - "optional": true, "requires": { - "asap": "2.0.6" + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } } }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true, - "optional": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, - "optional": true + "requires": { + "cssom": "0.3.2" + } }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "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.17", - "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.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "assert-plus": "1.0.0" } }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "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 }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "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 + }, + "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": { - "hoek": "2.16.3" + "jsbn": "0.1.1" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, - "optional": true + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "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 + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "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", - "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, - "optional": true - } + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, - "optional": true + "requires": { + "assert-plus": "1.0.0" + } }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, - "optional": true, "requires": { - "punycode": "1.4.1" + "ajv": "5.5.1", + "har-schema": "2.0.0" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, - "optional": true, "requires": { - "safe-buffer": "5.1.1" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" } }, - "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 + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, - "optional": true + "requires": { + "whatwg-encoding": "1.0.3" + } }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, - "optional": true, "requires": { "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } + "jsprim": "1.4.1", + "sshpk": "1.13.1" } - } - } - }, - "less-loader": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz", - "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=", - "dev": true, - "requires": { - "clone": "2.1.1", - "loader-utils": "1.1.0", - "pify": "2.3.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "dev": true }, - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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 }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": 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 }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "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-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 + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "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" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true - } - } - }, - "less-plugin-autoprefix": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/less-plugin-autoprefix/-/less-plugin-autoprefix-1.5.1.tgz", - "integrity": "sha1-vKTlsuSMrGlloXgxQuOzLDwAzgc=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "postcss": "5.2.18" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", "dev": true }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000778", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "mime-db": "1.30.0" } }, - "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.30000778", - "electron-to-chromium": "1.3.27" - } + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true }, - "caniuse-db": { - "version": "1.0.30000778", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000778.tgz", - "integrity": "sha1-Fnxg6VQqKqYFN8RG+ziB2FOjByo=", + "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 }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "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 - } + "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" } }, - "electron-to-chromium": { - "version": "1.3.27", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", - "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", - "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 - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "@types/node": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz" } }, - "has-flag": { + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pn": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", + "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=", "dev": true }, - "js-base64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", - "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", + "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 }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "dev": true }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" } }, - "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 - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "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=", + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "lodash": "4.17.4" } }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" } - } - } - }, - "less-plugin-clean-css": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz", - "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=", - "dev": true, - "requires": { - "clean-css": "3.4.28" - }, - "dependencies": { - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "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 + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "dev": true, "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" + "hoek": "4.2.0" } }, - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "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" } }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { - "amdefine": "1.0.1" + "punycode": "1.4.1" } - } - } - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "lodash.values": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", - "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=" - }, - "lodash.without": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", - "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=" - }, - "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", - "dev": true, - "requires": { - "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.4" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } } }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "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" + } }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "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": { - "graceful-readlink": "1.0.1" + "prelude-ls": "1.1.2" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", "dev": true }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "ms": "2.0.0" + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" } }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, - "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 + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } }, - "fs.realpath": { + "whatwg-url": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz", + "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + } + } + }, + "jsdom-global": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", + "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", + "dev": true + }, + "jsmin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", + "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "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 + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", + "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=", + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "ms": "2.0.0" } }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "jszip": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", + "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "requires": { + "pako": "1.0.6" + }, + "dependencies": { + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + } + } + }, + "jxLoader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz", + "integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=", + "dev": true, + "requires": { + "js-yaml": "0.3.7", + "moo-server": "1.3.0", + "promised-io": "0.3.5", + "walker": "1.0.7" + }, + "dependencies": { + "js-yaml": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", + "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=", + "dev": true + } + } + }, + "karma-webpack": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.6.tgz", + "integrity": "sha512-dcKvtiW00caWrceCKwIvlKwHQu8zI+e3zWZYDLk7kr7nl1lYSp8uP+8fQoBvRCnZiPUGuwU5Psm20NbEIn7KlA==", + "dev": true, + "requires": { + "async": "0.9.2", + "loader-utils": "0.2.17", + "lodash": "3.10.1", + "source-map": "0.5.7", + "webpack-dev-middleware": "1.12.2" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", "dev": true }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "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 }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "prr": "0.0.0" } }, "inherits": { @@ -7426,754 +8455,797 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "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=", + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "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": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } }, - "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._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "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": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "errno": "0.1.4", + "readable-stream": "2.3.3" } }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "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 }, - "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" - } + "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 }, - "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" - } + "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 }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", "dev": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "wrappy": "1.0.2" + "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" } }, - "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=", + "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 }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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": { - "has-flag": "1.0.0" + "safe-buffer": "5.1.1" } }, - "wrappy": { + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "dev": true + }, + "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } } } }, - "mocha-webpack": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/mocha-webpack/-/mocha-webpack-0.7.0.tgz", - "integrity": "sha1-065ax93PKc+UfosO7Xc/pCKODM4=", + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "anymatch": "1.3.2", - "fs-extra": "0.30.0", - "glob-parent": "2.0.0", - "interpret": "1.1.0", - "invariant": "2.2.2", - "is-glob": "2.0.1", - "loader-utils": "0.2.17", - "lodash": "4.17.4", - "normalize-path": "2.1.1", - "object-hash": "1.2.0", - "webpack-info-plugin": "0.1.0", - "webpack-sources": "0.1.5", - "yargs": "4.8.1" + "is-buffer": "1.1.6" + } + }, + "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" + } + }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, + "less": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "dev": true, + "requires": { + "errno": "0.1.4", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.81.0", + "source-map": "0.5.7" }, "dependencies": { - "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.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, + "optional": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "optional": true }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true + "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, + "optional": true }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } + "optional": 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 + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "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": { - "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" + "tweetnacl": "0.14.5" } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "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": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "hoek": "2.16.3" } }, - "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 - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "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 + "optional": true }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } + "optional": true }, - "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=", + "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": { - "fill-range": "2.2.3" + "delayed-stream": "1.0.0" } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "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, - "requires": { - "is-extglob": "1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true + "optional": 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=", + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, + "optional": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "boom": "2.10.1" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, + "optional": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "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, + "optional": true + } } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "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 }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "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": { - "for-in": "1.0.2" + "jsbn": "0.1.1" } }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", "dev": true, + "optional": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.2" + "prr": "0.0.0" } }, - "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=", + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": 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, + "optional": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, + "optional": true, "requires": { - "is-glob": "2.0.1" + "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, + "optional": true + } } }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true + "optional": true }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true + "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, + "optional": true }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "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, + "optional": true, "requires": { - "loose-envify": "1.3.1" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, - "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 - }, - "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-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, + "optional": true, "requires": { - "builtin-modules": "1.1.1" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "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, + "optional": true, "requires": { - "is-primitive": "2.0.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true }, - "is-extglob": { + "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "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, - "requires": { - "number-is-nan": "1.0.1" - } + "optional": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, - "requires": { - "is-extglob": "1.0.0" - } + "optional": true }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": 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, + "optional": true, "requires": { - "kind-of": "3.2.2" + "jsonify": "0.0.0" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "optional": true }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, + "optional": true, "requires": { - "isarray": "1.0.0" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", "dev": true }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "mime-db": "1.30.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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, - "requires": { - "is-buffer": "1.1.6" - } + "optional": true }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "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, - "requires": { - "graceful-fs": "4.1.11" - } + "optional": true }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, + "optional": true, "requires": { - "invert-kv": "1.0.0" + "asap": "2.0.6" } }, - "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=", + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", "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" - } + "optional": true }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": 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, + "optional": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, + "optional": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "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.17", + "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.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "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 }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, + "optional": true, "requires": { - "js-tokens": "3.0.2" + "hoek": "2.16.3" } }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } + "optional": true }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": true, + "optional": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "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, + "optional": true + } } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "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.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", - "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==", - "dev": true + "optional": true }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, + "optional": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "punycode": "1.4.1" } }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, + "optional": true, "requires": { - "lcid": "1.0.0" + "safe-buffer": "5.1.1" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } + "optional": true }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", "dev": true, - "requires": { - "error-ex": "1.3.1" - } + "optional": true }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, + "optional": true, "requires": { - "pinkie-promise": "2.0.1" + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } } + } + } + }, + "less-loader": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz", + "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=", + "dev": true, + "requires": { + "clone": "2.1.1", + "loader-utils": "1.1.0", + "pify": "2.3.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true }, - "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=", + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", "dev": true }, - "path-type": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" } }, "pify": { @@ -8181,145 +9253,143 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true + } + } + }, + "less-plugin-autoprefix": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/less-plugin-autoprefix/-/less-plugin-autoprefix-1.5.1.tgz", + "integrity": "sha1-vKTlsuSMrGlloXgxQuOzLDwAzgc=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "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=", + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "dev": true, "requires": { - "pinkie": "2.0.4" + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000778", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" } }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "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.30000778", + "electron-to-chromium": "1.3.27" + } + }, + "caniuse-db": { + "version": "1.0.30000778", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000778.tgz", + "integrity": "sha1-Fnxg6VQqKqYFN8RG+ziB2FOjByo=", "dev": true }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "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": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } + "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 } } }, - "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.4.0", - "path-type": "1.1.0" - } + "electron-to-chromium": { + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", + "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", + "dev": true }, - "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" - } + "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 }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "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": { - "is-equal-shallow": "0.1.3" + "ansi-regex": "2.1.1" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "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 }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "js-base64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==", "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=", + "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 }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "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 + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } }, - "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=", + "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 }, "source-map": { @@ -8328,38 +9398,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "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 - }, - "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" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -8369,1702 +9407,1848 @@ "ansi-regex": "2.1.1" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, "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 - }, - "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" - } - }, - "webpack-info-plugin": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/webpack-info-plugin/-/webpack-info-plugin-0.1.0.tgz", - "integrity": "sha1-3/56qI/LlsWcxFCXZCHq+YzbeQE=", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "chalk": "1.1.3" + "has-flag": "1.0.0" } + } + } + }, + "less-plugin-clean-css": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz", + "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=", + "dev": true, + "requires": { + "clean-css": "3.4.28" + }, + "dependencies": { + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true }, - "webpack-sources": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", - "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", "dev": true, "requires": { - "source-list-map": "0.1.8", - "source-map": "0.5.7" + "commander": "2.8.1", + "source-map": "0.4.4" } }, - "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 - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "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=", + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "graceful-readlink": "1.0.1" } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "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 }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dev": true, - "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "lodash.assign": "4.2.0", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "window-size": "0.2.0", - "y18n": "3.2.1", - "yargs-parser": "2.4.1" - } - }, - "yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "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": { - "camelcase": "3.0.0", - "lodash.assign": "4.2.0" + "amdefine": "1.0.1" } } } }, - "mock-local-storage": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/mock-local-storage/-/mock-local-storage-1.0.5.tgz", - "integrity": "sha1-iZ/zAAJ87+1HgW5txTm7BZ/M5Ik=", + "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": { - "core-js": "0.8.4", - "global": "4.3.2" + "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": { - "core-js": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.8.4.tgz", - "integrity": "sha1-wiZl8eDRucPF4bCNq9HxCGleT88=", - "dev": true - }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", - "dev": true - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "dev": true, - "requires": { - "min-document": "2.19.0", - "process": "0.5.2" - } - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "requires": { - "dom-walk": "0.1.1" - } - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } } }, - "moment": { - "version": "2.19.3", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.3.tgz", - "integrity": "sha1-vbmdJw1tf9p4zA+6zoVeJ/59pp8=" + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true }, - "moo-server": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz", - "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE=", + "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.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "null-loader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", - "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=", + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", "dev": true }, - "nw-builder": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/nw-builder/-/nw-builder-3.5.1.tgz", - "integrity": "sha512-+GHIPyK5SsShWvicNEW5x0IHXUYlrqBsKgWf8FPIw5slLI3lJRfdCGi+9U0FeSdKYUpjwXOa18ttmRSPA7S0Cg==", + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=" + }, + "lodash.without": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", + "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=" + }, + "loglevel": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", + "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "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": { - "archiver": "1.3.0", - "boxen": "1.3.0", - "chalk": "1.1.3", - "deprecate": "1.0.0", - "extract-zip": "1.6.6", - "graceful-fs-extra": "2.0.0", - "graceful-ncp": "3.0.0", - "inherits": "2.0.3", - "lazy-req": "2.0.0", - "lodash": "4.17.4", - "optimist": "0.6.1", - "platform-overrides": "1.0.1", - "plist": "2.1.0", - "progress": "1.1.8", - "rcedit": "0.9.0", - "recursive-readdir-sync": "1.0.6", - "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "2.3.2", - "simple-glob": "0.1.0", - "tar-fs": "1.16.0", - "temp": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", - "thenify": "3.3.0", - "update-notifier": "1.0.3", - "winresourcer": "0.9.0" + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "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" + } + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" }, "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "2.1.1" - } - }, - "ansi-regex": { + "pify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "archiver": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", - "dev": true, - "requires": { - "archiver-utils": "1.3.0", - "async": "2.6.0", - "buffer-crc32": "0.2.13", - "glob": "7.1.2", - "lodash": "4.17.4", - "readable-stream": "2.3.3", - "tar-stream": "1.5.5", - "walkdir": "0.0.11", - "zip-stream": "1.2.0" - } - }, - "archiver-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", - "dev": true, - "requires": { - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lazystream": "1.0.0", - "lodash": "4.17.4", - "normalize-path": "2.1.1", - "readable-stream": "2.3.3" - } - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "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=", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "lodash": "4.17.4" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "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 - }, - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "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.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "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=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.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": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "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, - "optional": true, "requires": { - "tweetnacl": "0.14.5" + "balanced-match": "1.0.0", + "concat-map": "0.0.1" } }, - "bl": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "graceful-readlink": "1.0.1" } }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "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 + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "requires": { - "hoek": "2.16.3" + "ms": "2.0.0" } }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "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 + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.3.0", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - } + "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" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "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 }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", "dev": true }, - "capture-stack-trace": { + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "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 - }, - "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" - } - }, - "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 - } + "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" } }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", "dev": true }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "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 }, - "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=", + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", "dev": true }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "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.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { - "color-name": "1.1.3" + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "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 }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "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": { - "delayed-stream": "1.0.0" + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" } }, - "compress-commons": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.3" + "brace-expansion": "1.1.8" } }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "wrappy": "1.0.2" } }, - "configstore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", - "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "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 + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "dot-prop": "3.0.0", - "graceful-fs": "4.1.11", - "mkdirp": "0.5.0", - "object-assign": "4.1.1", - "os-tmpdir": "1.0.2", - "osenv": "0.1.4", - "uuid": "2.0.3", - "write-file-atomic": "1.3.4", - "xdg-basedir": "2.0.0" - }, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } + "has-flag": "1.0.0" } }, - "core-util-is": { + "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "crc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", - "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", + } + } + }, + "mocha-webpack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mocha-webpack/-/mocha-webpack-1.0.1.tgz", + "integrity": "sha512-E/gGw0knbee7/8OWnjoD3VwUXSKLc1wYXsWgpMeLtM60JjR6k24j0J8UCAqRK5/iFrRBoKWDJWuuZ+E32/nUwQ==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "chalk": "1.1.3", + "chokidar": "1.7.0", + "glob-parent": "2.0.0", + "globby": "6.1.0", + "interpret": "1.1.0", + "is-glob": "2.0.1", + "loader-utils": "1.1.0", + "lodash": "4.17.4", + "memory-fs": "0.4.1", + "nodent-runtime": "3.0.4", + "normalize-path": "2.1.1", + "progress": "1.1.8", + "source-map-support": "0.4.18", + "toposort": "1.0.6", + "yargs": "4.8.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 }, - "crc32-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "crc": "3.5.0", - "readable-stream": "2.3.3" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "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": { - "capture-stack-trace": "1.0.0" + "lcid": "1.0.0" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "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": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" - } + "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 }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", "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 - } + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "lodash.assign": "4.2.0", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "window-size": "0.2.0", + "y18n": "3.2.1", + "yargs-parser": "2.4.1" } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", "dev": true, "requires": { - "ms": "2.0.0" + "camelcase": "3.0.0", + "lodash.assign": "4.2.0" } - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + } + } + }, + "mock-local-storage": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/mock-local-storage/-/mock-local-storage-1.0.5.tgz", + "integrity": "sha1-iZ/zAAJ87+1HgW5txTm7BZ/M5Ik=", + "dev": true, + "requires": { + "core-js": "0.8.4", + "global": "4.3.2" + }, + "dependencies": { + "core-js": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.8.4.tgz", + "integrity": "sha1-wiZl8eDRucPF4bCNq9HxCGleT88=", "dev": true }, - "deprecate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", - "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=", + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", "dev": true }, - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", "dev": true, "requires": { - "is-obj": "1.0.1" + "min-document": "2.19.0", + "process": "0.5.2" } }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "dom-walk": "0.1.1" } }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "moment": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.3.tgz", + "integrity": "sha1-vbmdJw1tf9p4zA+6zoVeJ/59pp8=" + }, + "moo-server": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz", + "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", + "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", + "dev": true, + "requires": { + "dns-packet": "1.2.2", + "thunky": "0.1.0" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "node-forge": { + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", + "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "nodent-runtime": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nodent-runtime/-/nodent-runtime-3.0.4.tgz", + "integrity": "sha1-qAHst7sPbDmmmyTML6Nwz6i0kto=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "null-loader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", + "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=", + "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 + }, + "nw-builder": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/nw-builder/-/nw-builder-3.5.1.tgz", + "integrity": "sha512-+GHIPyK5SsShWvicNEW5x0IHXUYlrqBsKgWf8FPIw5slLI3lJRfdCGi+9U0FeSdKYUpjwXOa18ttmRSPA7S0Cg==", + "dev": true, + "requires": { + "archiver": "1.3.0", + "boxen": "1.3.0", + "chalk": "1.1.3", + "deprecate": "1.0.0", + "extract-zip": "1.6.6", + "graceful-fs-extra": "2.0.0", + "graceful-ncp": "3.0.0", + "inherits": "2.0.3", + "lazy-req": "2.0.0", + "lodash": "4.17.4", + "optimist": "0.6.1", + "platform-overrides": "1.0.1", + "plist": "2.1.0", + "progress": "1.1.8", + "rcedit": "0.9.0", + "recursive-readdir-sync": "1.0.6", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "2.3.2", + "simple-glob": "0.1.0", + "tar-fs": "1.16.0", + "temp": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", + "thenify": "3.3.0", + "update-notifier": "1.0.3", + "winresourcer": "0.9.0" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, - "optional": true, "requires": { - "jsbn": "0.1.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, - "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "once": "1.4.0" + "string-width": "2.1.1" } }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "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 - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "extract-zip": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", - "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "concat-stream": "1.6.0", - "debug": "2.6.9", - "mkdirp": "0.5.0", - "yauzl": "2.4.1" + "color-convert": "1.9.1" } }, - "extsprintf": { + "any-promise": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", "dev": true }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", "dev": true, "requires": { - "pend": "1.2.0" + "archiver-utils": "1.3.0", + "async": "2.6.0", + "buffer-crc32": "0.2.13", + "glob": "7.1.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3", + "tar-stream": "1.5.5", + "walkdir": "0.0.11", + "zip-stream": "1.2.0" } }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "dev": true, "requires": { - "is-object": "1.0.1", - "merge-descriptors": "1.0.1" + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lazystream": "1.0.0", + "lodash": "4.17.4", + "normalize-path": "2.1.1", + "readable-stream": "2.3.3" } }, - "filled-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", - "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "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 }, - "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.17" - } - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "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.2" + "lodash": "4.17.4" } }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "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 - } - } + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true }, - "got": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", - "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "dev": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer2": "0.1.4", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "node-status-codes": "1.0.0", - "object-assign": "4.1.1", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "timed-out": "3.1.3", - "unzip-response": "1.0.2", - "url-parse-lax": "1.0.0" - } + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "base64-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", + "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", "dev": true }, - "graceful-fs-extra": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs-extra/-/graceful-fs-extra-2.0.0.tgz", - "integrity": "sha1-fR5X/Mcm4rDMcH14tKzqVC+pvk4=", + "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": { - "fs-extra": "0.30.0", - "graceful-ncp": "3.0.0", - "proxyquire": "1.8.0" + "tweetnacl": "0.14.5" } }, - "graceful-ncp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/graceful-ncp/-/graceful-ncp-3.0.0.tgz", - "integrity": "sha1-WAXqJVhe+YTMyqgIajxTDuQSioo=", + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "ncp": "2.0.0", - "proxyquire": "1.8.0" + "readable-stream": "2.3.3" } }, - "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=", + "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": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "hoek": "2.16.3" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "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" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", "dev": true }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "ansi-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 + }, + "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" + } + }, + "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 + } } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-object": { + "chownr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true }, - "is-redirect": { + "cli-boxes": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, - "is-stream": { + "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, - "optional": true + "requires": { + "color-name": "1.1.3" + } }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "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=", + "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": { - "jsonify": "0.0.0" + "delayed-stream": "1.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 - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "buffer-crc32": "0.2.13", + "crc32-stream": "2.0.0", + "normalize-path": "2.1.1", + "readable-stream": "2.3.3" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "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": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" } }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.0", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } } }, - "latest-version": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", - "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", - "dev": true, - "requires": { - "package-json": "2.4.0" - } + "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 }, - "lazy-req": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz", - "integrity": "sha1-yUUKNj7N2i5vDHATKtTzf48G8rQ=", + "crc": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", + "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", "dev": true }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "dev": true, "requires": { + "crc": "3.5.0", "readable-stream": "2.3.3" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "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==", + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "capture-stack-trace": "1.0.0" } }, - "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 - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "mime-db": "1.30.0" + "boom": "2.10.1" } }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" + "assert-plus": "1.0.0" }, "dependencies": { - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "minimist": "0.0.8" + "ms": "2.0.0" } }, - "module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "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 }, - "node-status-codes": { + "deprecate": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", + "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=", "dev": true }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "is-obj": "1.0.1" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "path-key": "2.0.1" + "readable-stream": "2.3.3" } }, - "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 - }, - "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 + "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" + } }, - "once": { + "end-of-stream": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", "dev": true, "requires": { - "wrappy": "1.0.2" + "once": "1.4.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "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": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "is-arrayish": "0.2.1" } }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "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 }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "package-json": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", - "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", - "dev": true, - "requires": { - "got": "5.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - } - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "error-ex": "1.3.1" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, - "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-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "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=", + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", "dev": true, "requires": { - "pinkie": "2.0.4" + "concat-stream": "1.6.0", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" } }, - "platform-overrides": { + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fd-slicer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/platform-overrides/-/platform-overrides-1.0.1.tgz", - "integrity": "sha1-kUzheydnF0YdHPcdj4g3qvv7c58=", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "lodash": "2.4.2" - }, - "dependencies": { - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - } + "pend": "1.2.0" } }, - "plist": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", - "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", "dev": true, "requires": { - "base64-js": "1.2.0", - "xmlbuilder": "8.2.2", - "xmldom": "0.1.27" + "is-object": "1.0.1", + "merge-descriptors": "1.0.1" } }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "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=", + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", "dev": true }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, - "proxyquire": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", - "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "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": { - "fill-keys": "1.0.2", - "module-not-found-error": "1.0.1", - "resolve": "1.1.7" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "dev": true, "requires": { - "end-of-stream": "1.4.0", - "once": "1.4.0" + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, - "rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "assert-plus": "1.0.0" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", "dev": true, "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", "pinkie-promise": "2.0.1", - "readable-stream": "2.3.3" + "read-all-stream": "3.1.0", + "readable-stream": "2.3.3", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" } }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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-fs-extra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs-extra/-/graceful-fs-extra-2.0.0.tgz", + "integrity": "sha1-fR5X/Mcm4rDMcH14tKzqVC+pvk4=", "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" + "fs-extra": "0.30.0", + "graceful-ncp": "3.0.0", + "proxyquire": "1.8.0" } }, - "recursive-readdir-sync": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", - "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=", + "graceful-ncp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/graceful-ncp/-/graceful-ncp-3.0.0.tgz", + "integrity": "sha1-WAXqJVhe+YTMyqgIajxTDuQSioo=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "ncp": "2.0.0", + "proxyquire": "1.8.0" + } + }, + "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 }, - "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "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": { - "rc": "1.2.2", - "safe-buffer": "5.1.1" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "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": { - "rc": "1.2.2" + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "is-finite": "1.0.2" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "requires": { - "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.17", - "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.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" } }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "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==", + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "semver": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", - "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=", + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "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 }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "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": { - "shebang-regex": "1.0.0" + "number-is-nan": "1.0.1" } }, - "shebang-regex": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-npm": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", "dev": true }, - "sigmund": { + "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", "dev": true }, - "simple-glob": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/simple-glob/-/simple-glob-0.1.0.tgz", - "integrity": "sha1-9ehPuGkttzDqhlTU2kLRte+MFFY=", - "dev": true, - "requires": { - "glob": "3.2.11", - "lodash": "2.4.2", - "minimatch": "0.2.14" - }, - "dependencies": { - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - }, - "dependencies": { - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - } - } - }, - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - } - } - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "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 + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": 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-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": { - "hoek": "2.16.3" + "jsonify": "0.0.0" } }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "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 + }, + "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 + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "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" + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" }, "dependencies": { "assert-plus": { @@ -10075,5691 +11259,867 @@ } } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "graceful-fs": "4.1.11" } }, - "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==", + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "package-json": "2.4.0" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "lazy-req": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz", + "integrity": "sha1-yUUKNj7N2i5vDHATKtTzf48G8rQ=", "dev": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "readable-stream": "2.3.3" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", "dev": true }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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": { - "has-flag": "2.0.0" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, - "tar-fs": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz", - "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", - "dev": true, - "requires": { - "chownr": "1.0.1", - "mkdirp": "0.5.1", - "pump": "1.0.3", - "tar-stream": "1.5.5" - }, - "dependencies": { - "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" - } - } - } + "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 }, - "tar-stream": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", - "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.0", - "readable-stream": "2.3.3", - "xtend": "4.0.1" + "mime-db": "1.30.0" } }, - "temp": { - "version": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", "dev": true, "requires": { - "rimraf": "2.2.8" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" }, "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true } } }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "0.7.0" - } + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, - "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", "dev": true, "requires": { - "any-promise": "1.3.0" + "minimist": "0.0.8" } }, - "timed-out": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", - "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "punycode": "1.4.1" + "remove-trailing-separator": "1.1.0" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "path-key": "2.0.1" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true + "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 }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "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 }, - "unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "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 }, - "update-notifier": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", - "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "boxen": "0.6.0", - "chalk": "1.1.3", - "configstore": "2.1.0", - "is-npm": "1.0.0", - "latest-version": "2.0.0", - "lazy-req": "1.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "2.0.0" - }, - "dependencies": { - "ansi-align": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", - "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "boxen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", - "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", - "dev": true, - "requires": { - "ansi-align": "1.1.0", - "camelcase": "2.1.1", - "chalk": "1.1.3", - "cli-boxes": "1.0.0", - "filled-array": "1.1.0", - "object-assign": "4.1.1", - "repeating": "2.0.1", - "string-width": "1.0.2", - "widest-line": "1.0.0" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "lazy-req": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", - "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - } + "wrappy": "1.0.2" } }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "minimist": "0.0.8", + "wordwrap": "0.0.3" } }, - "util-deprecate": { + "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "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 }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "got": "5.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true } } }, - "walkdir": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", - "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", - "dev": true - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "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": { - "isexe": "2.0.0" + "error-ex": "1.3.1" } }, - "widest-line": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", - "dev": true, - "requires": { - "string-width": "2.1.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 }, - "winresourcer": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/winresourcer/-/winresourcer-0.9.0.tgz", - "integrity": "sha1-CvyjDzxudFgFjSigtnPJ3aYiubU=", + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "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 }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "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": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "pinkie": "2.0.4" } }, - "xdg-basedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", - "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "platform-overrides": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/platform-overrides/-/platform-overrides-1.0.1.tgz", + "integrity": "sha1-kUzheydnF0YdHPcdj4g3qvv7c58=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } } }, - "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", - "dev": true + "plist": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", + "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", + "dev": true, + "requires": { + "base64-js": "1.2.0", + "xmlbuilder": "8.2.2", + "xmldom": "0.1.27" + } }, - "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "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 }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "dev": true }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", "dev": true, "requires": { - "fd-slicer": "1.0.1" + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1", + "resolve": "1.1.7" } }, - "zip-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", - "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.2", - "lodash": "4.17.4", - "readable-stream": "2.3.3" + "end-of-stream": "1.4.0", + "once": "1.4.0" } - } - } - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - }, - "dependencies": { - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, - "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=" - } - } - }, - "po2json": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", - "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", - "dev": true, - "requires": { - "gettext-parser": "1.1.0", - "nomnom": "1.8.1" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", "dev": true, "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", "dev": true, "requires": { - "iconv-lite": "0.4.19" + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" } }, - "gettext-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", - "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "encoding": "0.1.12" + "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" } }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "recursive-readdir-sync": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", + "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=", "dev": true }, - "nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", "dev": true, "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" + "rc": "1.2.2", + "safe-buffer": "5.1.1" } }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.2" + } }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true - } - } - }, - "pofile": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.10.tgz", - "integrity": "sha512-bkQlDA9YYNaZGLLrxBoQgydzjc2tasbUfxa94/kx2FO/FCiHAJG6B40Jr3fWQgDC7kr+a9q7q5x7449B91CF0A==", - "dev": true - }, - "promised-io": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz", - "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y=", - "dev": true - }, - "randomfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", - "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", - "dev": true, - "requires": { - "randombytes": "2.0.5", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "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.17", + "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.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" } }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "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 - } - } - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true }, - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=", "dev": true }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.4.0" + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } } }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", "dev": true }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - } - } - }, - "raw-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", - "dev": true - }, - "rcedit": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-0.9.0.tgz", - "integrity": "sha1-ORDfVzRTmeKwMl9KUZAH+J5V7xw=", - "dev": true - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true - } - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "scroll": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/scroll/-/scroll-2.0.1.tgz", - "integrity": "sha1-tMfSfovPOuiligQvJyaK4/VfnM0=", - "requires": { - "rafl": "1.2.2" - }, - "dependencies": { - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "requires": { - "min-document": "2.19.0", - "process": "0.5.2" - } - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "requires": { - "dom-walk": "0.1.1" - } - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" }, - "rafl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rafl/-/rafl-1.2.2.tgz", - "integrity": "sha1-/pMPdYIRAg1H44gV9Rlqi+QVB0A=", + "simple-glob": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-glob/-/simple-glob-0.1.0.tgz", + "integrity": "sha1-9ehPuGkttzDqhlTU2kLRte+MFFY=", + "dev": true, "requires": { - "global": "4.3.2" - } - } - } - }, - "segseg": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/segseg/-/segseg-0.2.2.tgz", - "integrity": "sha1-liCsjWDS8JjIdLlFyRzd+v/j49c=" - }, - "semver-utils": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.1.tgz", - "integrity": "sha1-J9kv7DTSfPpCcH07QNAlrphV8t8=" - }, - "sinon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.3.0.tgz", - "integrity": "sha512-/flfGfIxIRXSvZBHJzIf3iAyGYkmMQq6SQjA0cx9SOuVuq+4ZPPO4LJtH1Ce0Lznax1KSG1U6Dad85wIcSW19w==", - "dev": true, - "requires": { - "build": "0.1.4", - "diff": "3.4.0", - "formatio": "1.2.0", - "lodash.get": "4.4.2", - "lolex": "2.3.1", - "native-promise-only": "0.8.1", - "nise": "1.2.0", - "path-to-regexp": "1.7.0", - "samsam": "1.3.0", - "text-encoding": "0.6.4", - "type-detect": "4.0.5" - }, - "dependencies": { - "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", - "dev": true - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.3.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "just-extend": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", - "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", - "dev": true - }, - "lolex": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.1.tgz", - "integrity": "sha512-mQuW55GhduF3ppo+ZRUTz1PRjEh1hS5BbqU7d8D0ez2OKxHDod7StPPeAVKisZR5aLkHZjdGWSL42LSONUJsZw==", - "dev": true - }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", - "dev": true - }, - "nise": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", - "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", - "dev": true, - "requires": { - "formatio": "1.2.0", - "just-extend": "1.1.27", - "lolex": "1.6.0", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" + "glob": "3.2.11", + "lodash": "2.4.2", + "minimatch": "0.2.14" }, "dependencies": { - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", - "dev": true - } - } - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "dev": true - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, - "type-detect": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", - "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", - "dev": true - } - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "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": { - "ajv": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", - "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", - "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 - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "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.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "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.5.1" - } - } - } - }, - "tether-drop": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tether-drop/-/tether-drop-1.4.2.tgz", - "integrity": "sha1-KOJAzOB39K4djlmQoDtx4M1vv+w=", - "requires": { - "tether": "1.4.3" - }, - "dependencies": { - "tether": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.3.tgz", - "integrity": "sha512-YCfE/Ym9MpZpzUmzbek7MiLEyTofxx2YS0rJfSOUXX0aZtfQgxcgw7/Re2oGJUsREWZtEF0DzBKCjqH+DzgL6A==" - } - } - }, - "timespan": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", - "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", - "dev": true - }, - "tiny-uuid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tiny-uuid/-/tiny-uuid-1.0.0.tgz", - "integrity": "sha1-rqNKL4nHtxQ16zivMTmqOgJTUco=" - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "unfetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-3.0.0.tgz", - "integrity": "sha1-jR4FE6Ts0OX/LUGmund3Gq6LZII=" - }, - "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.6" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "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.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "mime": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", - "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", - "dev": true - } - } - }, - "vue": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/vue/-/vue-1.0.28.tgz", - "integrity": "sha1-7S/weyAL3hXIepDvhyfO6n04Vn0=", - "requires": { - "envify": "3.4.1" - }, - "dependencies": { - "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base62": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.1.tgz", - "integrity": "sha512-xVtfFHNPUzpCNHygpXFGMlDk3saxXLQcOOQzAAk6ibvlAHgT6WKXLv9rMFhcyEK1n9LuDmp/LxyGW/Fm9L8++g==" - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" - }, - "commoner": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", - "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", - "requires": { - "commander": "2.12.2", - "detective": "4.7.0", - "glob": "5.0.15", - "graceful-fs": "4.1.11", - "iconv-lite": "0.4.19", - "mkdirp": "0.5.1", - "private": "0.1.8", - "q": "1.5.1", - "recast": "0.11.23" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "detective": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.0.tgz", - "integrity": "sha512-4mBqSEdMfBpRAo/DQZnTcAXenpiSIJmVKbCMSotS+SFWWcrP/CKM6iBRPdTiEO+wZhlfEsoZlGqpG6ycl5vTqw==", - "requires": { - "acorn": "5.2.1", - "defined": "1.0.0" - } - }, - "envify": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", - "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", - "requires": { - "jstransform": "11.0.3", - "through": "2.3.8" - } - }, - "esprima-fb": { - "version": "15001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", - "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=" - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "requires": { - "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=" - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "jstransform": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", - "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", - "requires": { - "base62": "1.2.1", - "commoner": "0.10.8", - "esprima-fb": "15001.1.0-dev-harmony-fb", - "object-assign": "2.1.1", - "source-map": "0.4.4" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "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=" - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "requires": { - "ast-types": "0.9.6", - "esprima": "3.1.3", - "private": "0.1.8", - "source-map": "0.5.7" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": "1.0.1" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - } - } - }, - "vue-router": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-0.7.13.tgz", - "integrity": "sha1-4fDwQqwlYVBLJ/Rvbc0XuDKxyNE=" - }, - "vuex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-1.0.1.tgz", - "integrity": "sha1-uTw0FbXoblRmAWShoX4rN2x1n+s=" - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.11" - } - }, - "webpack": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", - "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", - "dev": true, - "requires": { - "acorn": "5.2.1", - "acorn-dynamic-import": "2.0.2", - "ajv": "5.5.1", - "ajv-keywords": "2.1.1", - "async": "2.6.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.5.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.1.0", - "yargs": "8.0.2" - }, - "dependencies": { - "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", - "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 - } - } - }, - "ajv": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", - "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "asn1.js": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", - "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "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" - } - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "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 - }, - "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 - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "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=", - "dev": true, - "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.1.1", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", - "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "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.1.1", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" - } - }, - "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.4", - "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.8", - "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.8", - "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.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "1.0.6" - } - }, - "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 - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "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" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "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" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "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" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "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 - }, - "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 - }, - "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" - } - }, - "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 - }, - "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 - }, - "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.8", - "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.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.9" - } - }, - "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.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.9" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.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.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5", - "randomfill": "1.0.3" - } - }, - "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.37" - } - }, - "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 - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "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" - } - }, - "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.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.5" - } - }, - "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 - }, - "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.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "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 - }, - "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" - } - }, - "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" - } - }, - "es5-ext": { - "version": "0.10.37", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", - "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", - "dev": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.37", - "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.37", - "es6-iterator": "2.0.3", - "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.37", - "es6-iterator": "2.0.3", - "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.37" - } - }, - "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.37", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "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" - } - }, - "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" - } - }, - "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.37" - } - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", - "dev": true - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.8.0", - "node-pre-gyp": "0.6.39" - }, - "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, - "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 - }, - "detect-libc": { - "version": "1.0.2", - "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, - "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.39", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "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, - "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 - } - } - }, - "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-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "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.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "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.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "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 - }, - "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.11.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "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 - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "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" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "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" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.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" - } - }, - "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", - "dev": true, - "optional": true - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.4", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "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.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "1.1.0" - } - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "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.2", - "browserify-aes": "1.1.1", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "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" - } - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", - "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.9" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "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 - }, - "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.8", - "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 - }, - "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==", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "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.3", - "set-immediate-shim": "1.0.1" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "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-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 - }, - "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" - } - }, - "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" - } - }, - "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 - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "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 - }, - "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "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 - }, - "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.3" - } - }, - "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.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "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 - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "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-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - }, - "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", - "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 - }, - "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 - }, - "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.7", - "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" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, - "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" - } - }, - "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 - } - } - }, - "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 - }, - "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" - } - }, - "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" - } - }, - "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", - "dev": true, - "requires": { - "async": "2.6.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - } - }, - "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", - "dev": true, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "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": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "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": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.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 - }, - "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" - }, - "dependencies": { - "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" - } - } - } - } - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "4.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 - } - } - } - } - }, - "webpack-dev-server": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.5.tgz", - "integrity": "sha512-o0lS6enIxyOPiRJTh8vcgK5TsGNTn7lH1q/pNniAgs46mCE8sQYeqv7Y/oAIh/+u4kiBsFizLJo5EWC+ezz6FQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "array-includes": "3.0.3", - "bonjour": "3.5.0", - "chokidar": "1.7.0", - "compression": "1.7.1", - "connect-history-api-fallback": "1.5.0", - "debug": "3.1.0", - "del": "3.0.0", - "express": "4.16.2", - "html-entities": "1.2.1", - "http-proxy-middleware": "0.17.4", - "import-local": "0.1.1", - "internal-ip": "1.2.0", - "ip": "1.1.5", - "killable": "1.0.0", - "loglevel": "1.6.0", - "opn": "5.1.0", - "portfinder": "1.0.13", - "selfsigned": "1.10.1", - "serve-index": "1.9.1", - "sockjs": "0.3.18", - "sockjs-client": "1.1.4", - "spdy": "3.4.7", - "strip-ansi": "3.0.1", - "supports-color": "4.5.0", - "webpack-dev-middleware": "1.12.2", - "yargs": "6.6.0" - }, - "dependencies": { - "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "dev": true, - "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" - } - }, - "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 - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "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": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "2.1.1", - "deep-equal": "1.0.1", - "dns-equal": "1.0.0", - "dns-txt": "2.0.2", - "multicast-dns": "6.2.1", - "multicast-dns-service-types": "1.1.0" - } - }, - "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=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "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 - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "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" - } - }, - "compressible": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", - "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", - "dev": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "compression": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", - "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", - "dev": true, - "requires": { - "accepts": "1.3.4", - "bytes": "3.0.0", - "compressible": "2.0.12", - "debug": "2.6.9", - "on-headers": "1.0.1", - "safe-buffer": "5.1.1", - "vary": "1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "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 - }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "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 - }, - "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 - }, - "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" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.2" - } - }, - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", - "dev": true - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", - "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", - "dev": true, - "requires": { - "ip": "1.1.5", - "safe-buffer": "5.1.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "1.1.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", - "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" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": "1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "express": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", - "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", - "dev": true, - "requires": { - "accepts": "1.3.4", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "1.1.1", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.0", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.2", - "qs": "6.5.1", - "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.1", - "serve-static": "1.13.1", - "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.1", - "vary": "1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "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" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.8.0", - "node-pre-gyp": "0.6.39" - }, - "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, - "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 - }, - "detect-libc": { - "version": "1.0.2", - "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, - "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.39", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "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, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", "dev": true, - "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "inherits": "2.0.3", + "minimatch": "0.3.0" + }, + "dependencies": { + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", "dev": true }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "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, + } + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "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" + } + }, + "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 + } + } + }, + "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" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-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 + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "tar-fs": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz", + "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", + "dev": true, + "requires": { + "chownr": "1.0.1", + "mkdirp": "0.5.1", + "pump": "1.0.3", + "tar-stream": "1.5.5" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "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 - } + "minimist": "0.0.8" } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, + } + } + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.0", + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "temp": { + "version": "github:adam-lynch/node-temp#279c1350cb7e4f02515d91da9e35d39a40774016", + "dev": true, + "requires": { + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "1.3.0" + } + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "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 + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", + "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "dev": true, + "requires": { + "boxen": "0.6.0", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "lazy-req": "1.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", "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" + "string-width": "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" - } + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, - "rimraf": { - "version": "2.6.1", - "bundled": true, + "boxen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", + "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", "dev": true, "requires": { - "glob": "7.1.2" + "ansi-align": "1.1.0", + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" } }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "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, + "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": { - "hoek": "2.16.3" + "number-is-nan": "1.0.1" } }, - "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 - } - } + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "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", @@ -15767,1449 +12127,2371 @@ "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, + "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-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, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", "dev": true, - "optional": true, "requires": { "string-width": "1.0.2" } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "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 - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "prepend-http": "1.0.4" } }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", "dev": true }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", - "dev": true + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, - "has-flag": { + "widest-line": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "inherits": "2.0.3", - "obuf": "1.1.1", - "readable-stream": "2.3.3", - "wbuf": "1.7.2" + "string-width": "2.1.1" } }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "winresourcer": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/winresourcer/-/winresourcer-0.9.0.tgz", + "integrity": "sha1-CvyjDzxudFgFjSigtnPJ3aYiubU=", "dev": true }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - }, - "dependencies": { - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "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=", + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { - "http-proxy": "1.16.2", - "is-glob": "3.1.0", - "lodash": "4.17.4", - "micromatch": "2.3.11" - }, - "dependencies": { - "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-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" - } - } + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" } }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", "dev": true, "requires": { - "repeating": "2.0.1" + "os-homedir": "1.0.2" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", "dev": true }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", "dev": true }, - "ipaddr.js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", - "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "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=", + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "fd-slicer": "1.0.1" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "archiver-utils": "1.3.0", + "compress-commons": "1.2.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3" } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + } + } + }, + "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-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, + "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" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "querystringify": "0.0.4", + "requires-port": "1.0.0" } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + }, + "dependencies": { + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "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=" + } + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "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.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "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.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-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" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true - }, - "is-extglob": { + } + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "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.9" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "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": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "po2json": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz", + "integrity": "sha1-R7spUtoy1Yob4vJWpZjuvAt0URg=", + "dev": true, + "requires": { + "gettext-parser": "1.1.0", + "nomnom": "1.8.1" + }, + "dependencies": { + "ansi-styles": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" } }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "iconv-lite": "0.4.19" } }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "gettext-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz", + "integrity": "sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=", "dev": true, "requires": { - "kind-of": "3.2.2" + "encoding": "0.1.12" } }, - "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=", + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", "dev": true }, - "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.1" - } + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "chalk": "0.4.0", + "underscore": "1.6.0" } }, - "is-posix-bracket": { + "strip-ansi": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", "dev": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + } + } + }, + "pofile": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.10.tgz", + "integrity": "sha512-bkQlDA9YYNaZGLLrxBoQgydzjc2tasbUfxa94/kx2FO/FCiHAJG6B40Jr3fWQgDC7kr+a9q7q5x7449B91CF0A==", + "dev": true + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "isarray": "1.0.0" + "ms": "2.0.0" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "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 + }, + "promised-io": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz", + "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "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.8", + "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 + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" } - }, - "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=", + } + } + }, + "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" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.5", + "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 + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "rcedit": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-0.9.0.tgz", + "integrity": "sha1-ORDfVzRTmeKwMl9KUZAH+J5V7xw=", + "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.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "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": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "loglevel": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", - "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", - "dev": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "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": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "pinkie-promise": "2.0.1" } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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.3", + "set-immediate-shim": "1.0.1" + } + }, + "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" + } + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "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-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 + }, + "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-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "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" + } + }, + "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 + }, + "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.5.1" + } + }, + "scroll": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/scroll/-/scroll-2.0.1.tgz", + "integrity": "sha1-tMfSfovPOuiligQvJyaK4/VfnM0=", + "requires": { + "rafl": "1.2.2" + }, + "dependencies": { + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "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, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" + "min-document": "2.19.0", + "process": "0.5.2" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "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.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "dom-walk": "0.1.1" } }, - "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 + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "rafl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rafl/-/rafl-1.2.2.tgz", + "integrity": "sha1-/pMPdYIRAg1H44gV9Rlqi+QVB0A=", + "requires": { + "global": "4.3.2" + } + } + } + }, + "segseg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/segseg/-/segseg-0.2.2.tgz", + "integrity": "sha1-liCsjWDS8JjIdLlFyRzd+v/j49c=" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", + "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "dev": true, + "requires": { + "node-forge": "0.6.33" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "semver-utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.1.tgz", + "integrity": "sha1-J9kv7DTSfPpCcH07QNAlrphV8t8=" + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "ms": "2.0.0" } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "mime-db": "1.30.0" + "ms": "2.0.0" } - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + } + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "sinon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.3.0.tgz", + "integrity": "sha512-/flfGfIxIRXSvZBHJzIf3iAyGYkmMQq6SQjA0cx9SOuVuq+4ZPPO4LJtH1Ce0Lznax1KSG1U6Dad85wIcSW19w==", + "dev": true, + "requires": { + "build": "0.1.4", + "diff": "3.4.0", + "formatio": "1.2.0", + "lodash.get": "4.4.2", + "lolex": "2.3.1", + "native-promise-only": "0.8.1", + "nise": "1.2.0", + "path-to-regexp": "1.7.0", + "samsam": "1.3.0", + "text-encoding": "0.6.4", + "type-detect": "4.0.5" + }, + "dependencies": { + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", "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": { + "formatio": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multicast-dns": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.1.tgz", - "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", "dev": true, "requires": { - "dns-packet": "1.2.2", - "thunky": "0.1.0" + "samsam": "1.3.0" } }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", - "dev": true, - "optional": true + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "lolex": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.1.tgz", + "integrity": "sha512-mQuW55GhduF3ppo+ZRUTz1PRjEh1hS5BbqU7d8D0ez2OKxHDod7StPPeAVKisZR5aLkHZjdGWSL42LSONUJsZw==", "dev": true }, - "node-forge": { - "version": "0.6.33", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", - "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", "dev": true }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "nise": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", + "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "formatio": "1.2.0", + "just-extend": "1.1.27", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" + }, + "dependencies": { + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "dev": true + } } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "isarray": "0.0.1" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", "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=", + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", "dev": true }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "type-detect": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", + "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "ms": "2.0.0" } }, - "obuf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", - "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", "dev": true, "requires": { - "ee-first": "1.1.1" + "websocket-driver": "0.7.0" } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + } + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true - }, - "opn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", - "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + } + } + }, + "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 + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "is-wsl": "1.1.0" + "ms": "2.0.0" } - }, - "original": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", - "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + } + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "url-parse": "1.0.5" - }, - "dependencies": { - "url-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", - "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "dev": true, - "requires": { - "querystringify": "0.0.4", - "requires-port": "1.0.0" - } - } + "ms": "2.0.0" } + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "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.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.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" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "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 }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "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": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "ansi-regex": "3.0.0" } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + } + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "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": { + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", "dev": true, "requires": { - "error-ex": "1.3.1" + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, - "path-exists": { + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "emojis-list": { "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" - } + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", "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=", + "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 }, - "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=", + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "path-type": { + "loader-utils": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "big.js": "3.2.0", + "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 - }, - "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=", + "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": { - "pinkie": "2.0.4" + "ajv": "5.5.1" } + } + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "tether-drop": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tether-drop/-/tether-drop-1.4.2.tgz", + "integrity": "sha1-KOJAzOB39K4djlmQoDtx4M1vv+w=", + "requires": { + "tether": "1.4.3" + }, + "dependencies": { + "tether": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.3.tgz", + "integrity": "sha512-YCfE/Ym9MpZpzUmzbek7MiLEyTofxx2YS0rJfSOUXX0aZtfQgxcgw7/Re2oGJUsREWZtEF0DzBKCjqH+DzgL6A==" + } + } + }, + "thunky": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "dev": true + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "timespan": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", + "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", + "dev": true + }, + "tiny-uuid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tiny-uuid/-/tiny-uuid-1.0.0.tgz", + "integrity": "sha1-rqNKL4nHtxQ16zivMTmqOgJTUco=" + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "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 + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "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 + }, + "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.17" + } + }, + "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.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, - "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { - "async": "1.5.2", - "debug": "2.6.9", - "mkdirp": "0.5.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "unfetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-3.0.0.tgz", + "integrity": "sha1-jR4FE6Ts0OX/LUGmund3Gq6LZII=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "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.6" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "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=", + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "proxy-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", - "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "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": { - "forwarded": "0.1.2", - "ipaddr.js": "1.5.2" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" } }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "mime": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", "dev": true - }, + } + } + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { "querystringify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", - "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "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 + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "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.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "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": "1.0.28", + "resolved": "https://registry.npmjs.org/vue/-/vue-1.0.28.tgz", + "integrity": "sha1-7S/weyAL3hXIepDvhyfO6n04Vn0=", + "requires": { + "envify": "3.4.1" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" }, - "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.4.0", - "path-type": "1.1.0" - } + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "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" - } + "base62": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.1.tgz", + "integrity": "sha512-xVtfFHNPUzpCNHygpXFGMlDk3saxXLQcOOQzAAk6ibvlAHgT6WKXLv9rMFhcyEK1n9LuDmp/LxyGW/Fm9L8++g==" }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "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" + "balanced-match": "1.0.0", + "concat-map": "0.0.1" } }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", "requires": { + "commander": "2.12.2", + "detective": "4.7.0", + "glob": "5.0.15", "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" + "iconv-lite": "0.4.19", + "mkdirp": "0.5.1", + "private": "0.1.8", + "q": "1.5.1", + "recast": "0.11.23" } }, - "redent": { + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "defined": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "detective": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.0.tgz", + "integrity": "sha512-4mBqSEdMfBpRAo/DQZnTcAXenpiSIJmVKbCMSotS+SFWWcrP/CKM6iBRPdTiEO+wZhlfEsoZlGqpG6ycl5vTqw==", "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "acorn": "5.2.1", + "defined": "1.0.0" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, + "envify": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", + "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", "requires": { - "is-equal-shallow": "0.1.3" + "jstransform": "11.0.3", + "through": "2.3.8" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=" }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "requires": { - "is-finite": "1.0.2" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, - "selfsigned": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", - "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", - "dev": true, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "node-forge": "0.6.33" + "once": "1.4.0", + "wrappy": "1.0.2" } }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", - "dev": true, + "jstransform": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", + "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", "requires": { - "debug": "2.6.9", - "depd": "1.1.1", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "base62": "1.2.1", + "commoner": "0.10.8", + "esprima-fb": "15001.1.0-dev-harmony-fb", + "object-assign": "2.1.1", + "source-map": "0.4.4" } }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "accepts": "1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.2", - "mime-types": "2.1.17", - "parseurl": "1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "brace-expansion": "1.1.8" } }, - "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", - "dev": true, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.1" + "wrappy": "1.0.2" } }, - "set-immediate-shim": { + "path-is-absolute": { "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 - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, - "sockjs": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", - "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", - "dev": true, - "requires": { - "faye-websocket": "0.10.0", - "uuid": "2.0.3" - } + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", "requires": { - "debug": "2.6.9", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.2.0" + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, - "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, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "requires": { - "spdx-license-ids": "1.2.2" + "amdefine": "1.0.1" } }, - "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=", + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } + }, + "vue-router": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-0.7.13.tgz", + "integrity": "sha1-4fDwQqwlYVBLJ/Rvbc0XuDKxyNE=" + }, + "vuex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-1.0.1.tgz", + "integrity": "sha1-uTw0FbXoblRmAWShoX4rN2x1n+s=" + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "webpack": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.1", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", "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=", + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, - "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true, - "requires": { - "debug": "2.6.9", - "handle-thing": "1.2.5", - "http-deceiver": "1.2.7", - "safe-buffer": "5.1.1", - "select-hose": "2.0.0", - "spdy-transport": "2.0.20" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true }, - "spdy-transport": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", - "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "debug": "2.6.9", - "detect-node": "2.0.3", - "hpack.js": "2.1.6", - "obuf": "1.1.1", - "readable-stream": "2.3.3", - "safe-buffer": "5.1.1", - "wbuf": "1.7.2" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "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": { - "ms": "2.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } } } }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, - "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" - } - }, - "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": { + "load-json-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" } }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "has-flag": "2.0.0" + "pify": "2.3.0" } }, - "thunky": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, - "time-stamp": { + "read-pkg": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", - "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.17" + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" } }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "url-parse": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", - "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" - }, - "dependencies": { - "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", - "dev": true - } + "find-up": "2.1.0", + "read-pkg": "2.0.0" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "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=", + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "wbuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", - "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, "requires": { - "minimalistic-assert": "1.0.0" + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" } + } + } + }, + "webpack-dev-server": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.5.tgz", + "integrity": "sha512-o0lS6enIxyOPiRJTh8vcgK5TsGNTn7lH1q/pNniAgs46mCE8sQYeqv7Y/oAIh/+u4kiBsFizLJo5EWC+ezz6FQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true }, "webpack-dev-middleware": { "version": "1.12.2", @@ -17222,31 +14504,7 @@ "path-is-absolute": "1.0.1", "range-parser": "1.2.0", "time-stamp": "2.0.0" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": "0.4.9", - "websocket-extensions": "0.1.3" } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true } } }, @@ -17256,6 +14514,53 @@ "integrity": "sha1-Iyxi7GCSsQBjWj0p2DwXRxKN+b0=", "dev": true }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "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 + }, "winston": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz", @@ -17290,12 +14595,59 @@ } } }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "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" + }, + "dependencies": { + "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" + } + } + } + }, "wrench": { "version": "1.3.9", "resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz", "integrity": "sha1-bxPsNRRTF+spLKX2UxORskQRFBE=", "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", @@ -17667,6 +15019,23 @@ } } } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.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 + } + } } } } diff --git a/package.json b/package.json index 1ac75874b..312d662ce 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,6 @@ "jed": "^1.1.0", "jsonp": "^0.2.1", "jszip": "^2.5.0", - "lodash.debounce": "^4.0.8", "lodash.escape": "^4.0.1", "lodash.uniq": "^4.5.0", "lodash.values": "^4.3.0", @@ -72,7 +71,7 @@ "ejs-loader": "^0.3.0", "eslint": "^3.10.2", "estraverse": "^4.2.0", - "extract-text-webpack-plugin": "^2.1.2", + "extract-text-webpack-plugin": "^3.0.2", "file-loader": "^0.11.2", "fs-extra": "^1.0.0", "glob": "^7.1.1", @@ -88,7 +87,7 @@ "less-plugin-autoprefix": "^1.5.1", "less-plugin-clean-css": "^1.5.1", "mocha": "^3.2.0", - "mocha-webpack": "^0.7.0", + "mocha-webpack": "^1.0.1", "mock-local-storage": "^1.0.4", "null-loader": "^0.1.1", "nw-builder": "^3.2.0", @@ -99,8 +98,8 @@ "sinon": "^3.2.1", "style-loader": "^0.18.2", "url-loader": "^0.5.9", - "webpack": "^3.5.5", - "webpack-dev-server": "^2.7.1", + "webpack": "^3.10.0", + "webpack-dev-server": "^2.9.5", "webpack-node-externals": "^1.6.0", "yargs": "^6.6.0" } diff --git a/src/nw/patches/store/file-persistence.js b/src/nw/patches/store/file-persistence.js index 327f276a5..9f79a7656 100644 --- a/src/nw/patches/store/file-persistence.js +++ b/src/nw/patches/store/file-persistence.js @@ -1,6 +1,5 @@ const saveQueue = require('../../save-queue'); const storyFile = require('../../story-file'); -const debounce = require('lodash.debounce'); let enabled = true; let previousStories; @@ -23,7 +22,9 @@ module.exports = store => { case 'CREATE_STORY': case 'IMPORT_STORY': storyFile.save( - state.story.stories.find(story => story.name === mutation.payload[0].name), + state.story.stories.find( + story => story.name === mutation.payload[0].name + ), state.appInfo ); break; diff --git a/src/nw/save-queue.js b/src/nw/save-queue.js index 4c89b2402..f586b5d4e 100644 --- a/src/nw/save-queue.js +++ b/src/nw/save-queue.js @@ -27,7 +27,8 @@ const SaveQueue = module.exports = { }, /* - Queues an story to be saved. Repeated requests to save the same story don't change the queue, but they do reset the delay to save. + Queues an story to be saved. Repeated requests to save the same story don't + change the queue, but they do reset the delay to save. */ queue(id) { @@ -60,4 +61,4 @@ const SaveQueue = module.exports = { StoryFile.save(story, SaveQueue.store.state.appInfo); } } -} \ No newline at end of file +}; \ No newline at end of file From d6834358550b97f2ad456c3bbf5ce24d46312037 Mon Sep 17 00:00:00 2001 From: Leon <83939+webbedspace@users.noreply.github.com> Date: Fri, 8 Dec 2017 00:13:57 +1000 Subject: [PATCH 08/12] Update Harlowe to 2.1.0. --- story-formats/harlowe-2.0.1/format.js | 2 -- story-formats/harlowe-2.1.0/format.js | 2 ++ story-formats/{harlowe-2.0.1 => harlowe-2.1.0}/icon.svg | 0 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 story-formats/harlowe-2.0.1/format.js create mode 100644 story-formats/harlowe-2.1.0/format.js rename story-formats/{harlowe-2.0.1 => harlowe-2.1.0}/icon.svg (100%) diff --git a/story-formats/harlowe-2.0.1/format.js b/story-formats/harlowe-2.0.1/format.js deleted file mode 100644 index ca8b9dd3d..000000000 --- a/story-formats/harlowe-2.0.1/format.js +++ /dev/null @@ -1,2 +0,0 @@ -window.storyFormat({"name":"Harlowe","version":"2.0.1","author":"Leon Arnott","description":"The default story format for Twine 2. See its documentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n\n\n","setup": function(){"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r-1)||e.cannotFollow&&(-1!==e.cannotFollow.indexOf(n&&n.type)||e.cannotFollow.indexOf("text")>-1&&t)||e.peek&&e.peek.toLowerCase()!==r.slice(0,e.peek.length).toLowerCase())}function t(e){for(var r=e.innerText,t=[],o=0,s=o,u=r.length,l=null;u>o;){for(var m=r.slice(o),c=(t.length?t[0]:e).innerMode,g=0,p=c.length;p>g;g+=1){var d=i[c[g]];if(n(d,m,l,o>s)&&d.pattern.test(m)){var h=d.pattern.exec(m),f=d.fn(h),y=!1,b=0;if(f.matches){for(;b-1&&(b=t.length-1)}if(b>=t.length&&!f.isFront)continue}o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:c}),l=e.addChild(f),o+=l.text.length,s=o,y&&(a(e,l,t[b]),t=t.slice(b+1)),l.isFrontToken()&&t.unshift(l);break}}g===p&&(o+=1,null===l&&(l={type:"text"}))}for(o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:(t.length?t[0]:e).innerMode});t.length>0;)t.shift().demote();return e}function a(e,n,t){var a=e.children.indexOf(n),o=e.children.indexOf(t);n.children=e.children.splice(o+1,a-(o+1)),n.children.forEach(function(e){r(n,e)}),n.type=n.matches[t.type],n.innerText="";for(var i=0,s=n.children.length;s>i;i++)n.innerText+=n.children[i].text;n.start=t.start,n.text=t.text+n.innerText+n.text,Object.keys(t).forEach(function(e){Object.hasOwnProperty.call(n,e)||(n[e]=t[e])}),n.isFront&&(n.isFront=!1),e.children.splice(o,1),r(e,n)}var o=void 0,i={};e.prototype={constructor:e,addChild:function(n){var a=this.lastChildEnd(),o=new e({start:a,end:n.text&&a+n.text.length,children:[]},n);return o.innerText&&t(o),this.children.push(o),r(this,o),o},lastChild:function(){return this.children?this.children[this.children.length-1]||null:null},lastChildEnd:function(){var e=this.lastChild();return e?e.end:this.start+Math.max(0,this.text.indexOf(this.innerText))},tokenAt:function(e){if(e=this.end)return null;if(this.childAt)return this.childAt[e]&&this.childAt[e].tokenAt(e)||this;if(this.children.length)for(var r=0;r=this.end)return[];if(this.childAt)return(this.childAt[e]&&this.childAt[e].pathAt(e)||[]).concat(this);var r=[];if(this.children.length)for(var n=0;n=this.end?null:this.children?this.children.reduce(function(r,n){return r||(e>=n.start&&e0&&(e+="["+this.children+"]"),e}},o={lex:function(r,n){return t(new e({type:"root",start:n||0,end:r.length,text:r,innerText:r,children:[],childAt:{},innerMode:o.modes.start}))},rules:i,modes:{}},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=o:"function"==typeof define&&define.amd?define("lexer",[],function(){return o}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Lexer=o):this.TwineLexer=o}).call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(r){return r&&"object"===("undefined"==typeof r?"undefined":_typeof(r))?(Object.keys(r).forEach(function(n){r[n]=e(r[n])}),r):(r+"").replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function r(){return"[^"+Array.apply(0,arguments).map(e).join("")+"]*"}function n(e){return function(){return"("+e+Array.apply(0,arguments).join("|")+")"}}var t=void 0,a=n("?:"),o=n("?!"),i=n("?="),s="[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*",u=s.replace("*","+"),l="\\b",m="\\\\\\n\\\\?|\\n\\\\",c="\\n(?!\\\\)",g="[\\w\\-\\u00c0-\\u00de\\u00df-\\u00ff\\u0150\\u0170\\u0151\\u0171\\uD800-\\uDFFF]",p=g.replace("\\-",""),d=a("\\n","$"),h="("+a(m,"[^\\n]")+"+)",f="\\*",y=s+"("+f+"+)"+u+h+d,b="(?:0\\.)",k=s+"("+b+"+)"+u+h+d,N=s+"-{3,}"+s+d,C=s+"(#{1,6})"+s+h+d,T=s+"(==+>|<=+|=+><=+|<==+>)"+s+d,S=s+"(=+\\|+|\\|+=+|=+\\|+=+|\\|=+\\|)"+s+d,v={opener:"\\[\\[(?!\\[)",text:"("+r("]")+")",rightSeparator:a("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+a("[^\\|\\]]","\\]"+o("\\]"))+"+)"},x=p+"*"+p.replace("\\w","a-zA-Z")+p+"*",A="\\$("+x+")",w="'s"+u+"("+x+")",O="("+x+")"+u+"of"+l+o("it"+l),F="'s"+u,L="of"+l,P=a("it","time")+l,H="its"+u+"("+x+")",j="its"+u,B="("+x+")"+u+"of"+u+"it"+l,M="of"+l+u+"it"+l,V={opener:"\\(",name:"("+a(g+"+",A)+"):"+o("\\/"),closer:"\\)"},I="<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",D=a("=<","=>","[gl]te?"+l,"n?eq"+l,"isnot"+l,"are"+l,"x"+l),E={name:"[a-zA-Z][\\w\\-]*",attrs:"(?:\"[^\"]*\"|'[^']*'|[^'\">])*?"},_="\\|("+g+"+)(>|\\))",R="(<|\\()("+g+"+)\\|",q="_("+x+")"+l,$="\\b(\\-?\\d+(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?|NaN)"+o("m?s")+l;v.main=v.opener+a(v.text+v.rightSeparator,v.text.replace("*","*?")+v.leftSeparator)+v.text,t={upperLetter:"[A-Z\\u00c0-\\u00de\\u0150\\u0170]",lowerLetter:"[a-z0-9_\\-\\u00df-\\u00ff\\u0151\\u0171]",anyLetter:g,anyLetterStrict:p,whitespace:u,escapedLine:m,br:c,commentFront:"",tag:"<\\/?"+E.name+E.attrs+">",tagPeek:"<",scriptStyleTag:"<("+a("script","style")+")"+E.attrs+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+a("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:f,hr:N,heading:C,align:T,column:S,bulleted:y,numbered:k,delOpener:e("~~"),italicOpener:e("//"),boldOpener:e("''"),supOpener:e("^^"),strongFront:e("**"),strongBack:e("**"),emFront:e("*"),emBack:e("*"),verbatimOpener:"`+",collapsedFront:"{",collapsedBack:"}",hookAppendedFront:"\\[",hookPrependedFront:_+"\\[",hookFront:"\\[",hookBack:"\\]"+o(R),hookAppendedBack:"\\]"+R,passageLink:v.main+v.closer,passageLinkPeek:"[[",legacyLink:v.opener+v.legacyText+v.legacySeparator+v.legacyText+v.closer,legacyLinkPeek:"[[",simpleLink:v.opener+v.legacyText+v.closer,simpleLinkPeek:"[[",macroFront:V.opener+i(V.name),macroFrontPeek:"(",macroName:V.name,groupingFront:"\\("+o(V.name),groupingFrontPeek:"(",groupingBack:"\\)",twine1Macro:I,twine1MacroPeek:"<<",property:w,propertyPeek:"'s",belongingProperty:O,possessiveOperator:F,belongingOperator:L,belongingOperatorPeek:"of",itsOperator:j,itsOperatorPeek:"its",belongingItOperator:M,belongingItOperatorPeek:"of",variable:A,variablePeek:"$",tempVariable:q,tempVariablePeek:"_",hookRef:"\\?("+g+"+)\\b",hookRefPeek:"?",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)"+l,colour:a(a("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),number:$,boolean:a("true","false")+l,identifier:P,itsProperty:H,itsPropertyPeek:"its",belongingItProperty:B,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',is:"is"+o(u+"not",u+"in",u+"<",u+">")+l,isNot:"is"+u+"not"+l,and:"and"+l,or:"or"+l,not:"not"+l,inequality:"((?:is(?:"+u+"not)?"+s+")*)("+a("<(?!=)","<=",">(?!=)",">=")+")",isIn:"is"+u+"in"+l,contains:"contains"+l,addition:e("+")+o("="),subtraction:e("-")+o("=","\\d"),multiplication:e("*")+o("="),division:a("/","%")+o("="),comma:",",spread:"\\.\\.\\."+o("\\."),to:a("to"+l,"="),into:"into"+l,making:"making"+l,where:"where"+l,via:"via"+l,with:"with"+l,each:"each"+l,augmentedAssign:a("\\+","\\-","\\*","\\/","%")+"=",incorrectOperator:D},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=t:"function"==typeof define&&define.amd?define("patterns",[],function(){return t}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=t):this.Patterns=t}.call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(e){function r(e){return e=e||"innerText",function(r){var n=r.reduceRight(function(e,r,n){return e||(n?r:"")},""),t={};return t[e]=n,t}}function t(e,r){var n={};return n[e]=r,function(){return{isFront:!0,matches:n,cannotCross:["verbatimOpener"]}}}function a(e,r){return Object.keys(r).forEach(function(n){var t=r[n].fn;r[n].fn=function(r){var a=t(r);return a.text||(a.text=r[0]),a.type||(a.type=n),a.innerMode||(a.innerMode=e),a}}),r}var o=Object.bind(0,null),i=[],s=[],u=a(i,{hr:{fn:o},bulleted:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},numbered:{fn:function(e){return{depth:e[1].length/2,innerText:e[2]}}},heading:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},align:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("><");return~t?(r=Math.round(t/(n.length-2)*50),25===r&&(r="center")):"<"===n[0]&&">"===n.slice(-1)?r="justify":n.indexOf(">")>-1?r="right":n.indexOf("<")>-1&&(r="left"),{align:r}}},column:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("|");return t&&t-1}}},augmentedAssign:{fn:function(e){return{operator:e[0][0]}}},identifier:{fn:r("name"),cannotFollow:["text"]},whitespace:{fn:o,cannotFollow:"text"},incorrectOperator:{fn:function(e){var r={"=>":">=","=<":"<=",gte:">=",lte:"<=",gt:">",lt:"<",eq:"is",isnot:"is not",neq:"is not",are:"is",x:"*"}[e[0].toLowerCase()];return{type:"error",message:"Please say "+(r?"'"+r+"'":"something else")+" instead of '"+e[0]+"'."}},cannotFollow:"text"}},["boolean","is","to","into","where","via","with","making","each","and","or","not","isNot","contains","isIn"].reduce(function(e,r){return e[r]={fn:o,cannotFollow:["text"]},e},{}),["comma","spread","addition","subtraction","multiplication","division"].reduce(function(e,r){return e[r]={fn:o},e},{})));i.push.apply(i,_toConsumableArray(Object.keys(u)).concat(_toConsumableArray(Object.keys(m)),_toConsumableArray(Object.keys(l)))),s.push.apply(s,_toConsumableArray(Object.keys(m)).concat(_toConsumableArray(Object.keys(c))));var g=Object.assign({},u,l,m,c);return Object.keys(g).forEach(function(e){var r=n[e];g[e].pattern="string"!=typeof r?r:new RegExp("^(?:"+r+")","i"),n[e+"Peek"]&&(g[e].peek=n[e+"Peek"])}),Object.assign(e.rules,g),e.modes.start=e.modes.markup=i,e.modes.macro=s,e}function r(r){return Object.freeze({lex:e(r).lex,Patterns:n})}var n=void 0;Object.assign=Object.assign||function(e){for(var r=1;r Command":{name:"display",sig:" String",returnType:"Command",aka:[]},"(print: Any) -> Command":{name:"print",sig:" Any",returnType:"Command",aka:[]},"(show: ...HookName) -> Command":{name:"show",sig:" ...HookName",returnType:"Command",aka:[]},"(go-to: String) -> Command":{name:"go-to",sig:" String",returnType:"Command",aka:[]},"(undo:) -> Command":{name:"undo",sig:"",returnType:"Command",aka:[]},"(live: [Number]) -> Changer":{name:"live",sig:" [Number]",returnType:"Changer",aka:[]},"(stop:) -> Command":{name:"stop",sig:"",returnType:"Command",aka:[]},"(save-game: String, [String]) -> Boolean":{name:"save-game",sig:" String, [String]",returnType:"Boolean",aka:[]},"(load-game: String) -> Command":{name:"load-game",sig:" String",returnType:"Command",aka:[]},"(alert: String) -> Command":{name:"alert",sig:" String",returnType:"Command",aka:[]},"(prompt: String, String) -> String":{name:"prompt",sig:" String, String",returnType:"String",aka:[]},"(confirm: String) -> Boolean":{name:"confirm",sig:" String",returnType:"Boolean",aka:[]},"(open-url: String) -> Command":{name:"open-url",sig:" String",returnType:"Command",aka:[]},"(reload:) -> Command":{name:"reload",sig:"",returnType:"Command",aka:[]},"(goto-url: String) -> Command":{name:"goto-url",sig:" String",returnType:"Command",aka:[]},"(page-url:) -> String":{name:"page-url",sig:"",returnType:"String",aka:[]},"(set: ...VariableToValue) -> Instant":{name:"set",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(put: ...VariableToValue) -> Instant":{name:"put",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(move: ...VariableToValue) -> Instant":{name:"move",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(a: [...Any]) -> Array":{name:"a",sig:" [...Any]",returnType:"Array",aka:["array"]},"(range: Number, Number) -> Array":{name:"range",sig:" Number, Number",returnType:"Array",aka:[]},"(subarray: Array, Number, Number) -> Array":{name:"subarray",sig:" Array, Number, Number",returnType:"Array",aka:[]},"(shuffled: Any, Any, [...Any]) -> Array":{name:"shuffled",sig:" Any, Any, [...Any]",returnType:"Array",aka:[]},"(sorted: Number or String, ...Number or String) -> Array":{name:"sorted",sig:" Number or String, ...Number or String",returnType:"Array",aka:[]},"(rotated: Number, [...Any]) -> Array":{name:"rotated",sig:" Number, [...Any]",returnType:"Array",aka:[]},"(repeated: Number, ...Any) -> Array":{name:"repeated",sig:" Number, ...Any",returnType:"Array",aka:[]},"(interlaced: Array, ...Array) -> Array":{name:"interlaced",sig:" Array, ...Array",returnType:"Array",aka:[]},"(altered: Lambda, ...Any) -> Array":{name:"altered",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(find: Lambda, ...Any) -> Array":{name:"find",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(all-pass: Lambda, ...Any) -> Boolean":{name:"all-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(some-pass: Lambda, ...Any) -> Boolean":{name:"some-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(none-pass: Lambda, ...Any) -> Boolean":{name:"none-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(folded: Lambda, ...Any) -> Any":{name:"folded",sig:" Lambda, ...Any",returnType:"Any",aka:[]},"(datanames: Datamap) -> Array":{name:"datanames",sig:" Datamap",returnType:"Array",aka:[]},"(datavalues: Datamap) -> Array":{name:"datavalues",sig:" Datamap",returnType:"Array",aka:[]},"(dataentries: Datamap) -> Array":{name:"dataentries",sig:" Datamap",returnType:"Array",aka:[]},"(history:) -> Array":{name:"history",sig:"",returnType:"Array",aka:[]},"(passage: [String]) -> Datamap":{name:"passage",sig:" [String]",returnType:"Datamap",aka:[]},"(saved-games:) -> Datamap":{name:"saved-games",sig:"",returnType:"Datamap",aka:[]},"(dm: [...Any]) -> Datamap":{name:"dm",sig:" [...Any]",returnType:"Datamap",aka:["datamap"]},"(ds: [...Any]) -> Dataset":{name:"ds",sig:" [...Any]",returnType:"Dataset",aka:["dataset"]},"(count: Array or String, ...Any) -> Number":{name:"count",sig:" Array or String, ...Any",returnType:"Number",aka:[]},"(enchant: HookName or String, Changer) -> Command":{name:"enchant",sig:" HookName or String, Changer",returnType:"Command",aka:[]},"(replace: ...HookName or String) -> Changer":{name:"replace",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(append: ...HookName or String) -> Changer":{name:"append",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(prepend: ...HookName or String) -> Changer":{name:"prepend",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(click: HookName or String) -> Changer":{name:"click",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover: HookName or String) -> Changer":{name:"mouseover",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout: HookName or String) -> Changer":{name:"mouseout",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-replace: HookName or String) -> Changer":{name:"click-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-append: HookName or String) -> Changer":{name:"click-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-prepend: HookName or String) -> Changer":{name:"click-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-replace: HookName or String) -> Changer":{name:"mouseover-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-append: HookName or String) -> Changer":{name:"mouseover-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-prepend: HookName or String) -> Changer":{name:"mouseover-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-replace: HookName or String) -> Changer":{name:"mouseout-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-append: HookName or String) -> Changer":{name:"mouseout-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-prepend: HookName or String) -> Changer":{name:"mouseout-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(link: String) -> Changer":{name:"link",sig:" String",returnType:"Changer",aka:["link-replace"]},"(link-reveal: String) -> Changer":{name:"link-reveal",sig:" String",returnType:"Changer",aka:[]},"(link-repeat: String) -> Changer":{name:"link-repeat",sig:" String",returnType:"Changer",aka:[]},"(link-goto: String, [String]) -> Command":{name:"link-goto",sig:" String, [String]",returnType:"Command",aka:[]},"(link-undo: String) -> Command":{name:"link-undo",sig:" String",returnType:"Command",aka:[]},"(if: Boolean) -> Changer":{name:"if",sig:" Boolean",returnType:"Changer",aka:[]},"(unless: Boolean) -> Changer":{name:"unless",sig:" Boolean",returnType:"Changer",aka:[]},"(else-if: Boolean) -> Changer":{name:"else-if",sig:" Boolean",returnType:"Changer",aka:[]},"(else:) -> Changer":{name:"else",sig:"",returnType:"Changer",aka:[]},"(hidden:) -> Changer":{name:"hidden",sig:"",returnType:"Changer",aka:[]},"(hook: String) -> Changer":{name:"hook",sig:" String",returnType:"Changer",aka:[]},"(for: Lambda, ...Any) -> Changer":{name:"for",sig:" Lambda, ...Any",returnType:"Changer",aka:["loop"]},"(transition: String) -> Changer":{name:"transition",sig:" String",returnType:"Changer",aka:["t8n"]},"(transition-time: Number) -> Changer":{name:"transition-time",sig:" Number",returnType:"Changer",aka:["t8n-time"]},"(font: String) -> Changer":{name:"font",sig:" String",returnType:"Changer",aka:[]},"(align: String) -> Changer":{name:"align",sig:" String",returnType:"Changer",aka:[]},"(text-colour: String or Colour) -> Changer":{name:"text-colour",sig:" String or Colour",returnType:"Changer",aka:["colour"]},"(text-rotate: Number) -> Changer":{name:"text-rotate",sig:" Number",returnType:"Changer",aka:[]},"(background: Colour or String) -> Changer":{name:"background",sig:" Colour or String",returnType:"Changer",aka:[]},"(text-style: String) -> Changer":{name:"text-style",sig:" String",returnType:"Changer",aka:[]},"(hover-style: Changer) -> Changer":{name:"hover-style",sig:" Changer",returnType:"Changer",aka:[]},"(css: String) -> Changer":{name:"css",sig:" String",returnType:"Changer",aka:[]},"(text: ...[Number or String or Boolean or Array]) -> String":{name:"text",sig:" ...[Number or String or Boolean or Array]",returnType:"String",aka:["string"]},"(substring: String, Number, Number) -> String":{name:"substring",sig:" String, Number, Number",returnType:"String",aka:[]},"(lowercase: String) -> String":{name:"lowercase",sig:" String",returnType:"String",aka:[]},"(uppercase: String) -> String":{name:"uppercase",sig:" String",returnType:"String",aka:[]},"(lowerfirst: String) -> String":{name:"lowerfirst",sig:" String",returnType:"String",aka:[]},"(upperfirst: String) -> String":{name:"upperfirst",sig:" String",returnType:"String",aka:[]},"(words: String) -> Array":{name:"words",sig:" String",returnType:"Array",aka:[]},"(num: String) -> Number":{name:"num",sig:" String",returnType:"Number",aka:["number"]},"(rgb: Number, Number, Number) -> Colour":{name:"rgb",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(rgba: Number, Number, Number, Number) -> Colour":{name:"rgba",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(hsl: Number, Number, Number) -> Colour":{name:"hsl",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(hsla: Number, Number, Number, Number) -> Colour":{name:"hsla",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(weekday:) -> String":{name:"weekday",sig:"",returnType:"String",aka:[]},"(monthday:) -> Number":{name:"monthday",sig:"",returnType:"Number",aka:[]},"(current-time:) -> String":{name:"current-time",sig:"",returnType:"String",aka:[]},"(current-date:) -> String":{name:"current-date",sig:"",returnType:"String",aka:[]},"(min: ...Number) -> Number":{name:"min",sig:" ...Number",returnType:"Number",aka:[]},"(max: ...Number) -> Number":{name:"max",sig:" ...Number",returnType:"Number",aka:[]},"(abs: Number) -> Number":{name:"abs",sig:" Number",returnType:"Number",aka:[]},"(sign: Number) -> Number":{name:"sign",sig:" Number",returnType:"Number",aka:[]},"(sin: Number) -> Number":{name:"sin",sig:" Number",returnType:"Number",aka:[]},"(cos: Number) -> Number":{name:"cos",sig:" Number",returnType:"Number",aka:[]},"(tan: Number) -> Number":{name:"tan",sig:" Number",returnType:"Number",aka:[]},"(floor: Number) -> Number":{name:"floor",sig:" Number",returnType:"Number",aka:[]},"(round: Number) -> Number":{name:"round",sig:" Number",returnType:"Number",aka:[]},"(ceil: Number) -> Number":{name:"ceil",sig:" Number",returnType:"Number",aka:[]},"(pow: Number, Number) -> Number":{name:"pow",sig:" Number, Number",returnType:"Number",aka:[]},"(exp: Number, Number) -> Number":{name:"exp",sig:" Number, Number",returnType:"Number",aka:[]},"(sqrt: Number) -> Number":{name:"sqrt",sig:" Number",returnType:"Number",aka:[]},"(log: Number) -> Number":{name:"log",sig:" Number",returnType:"Number",aka:[]},"(log10: Number) -> Number":{name:"log10",sig:" Number",returnType:"Number",aka:[]},"(log2: Number) -> Number":{name:"log2",sig:" Number",returnType:"Number",aka:[]},"(random: Number, [Number]) -> Number":{name:"random",sig:" Number, [Number]",returnType:"Number",aka:[]},"(either: ...Any) -> Any":{name:"either",sig:" ...Any",returnType:"Any",aka:[]}},n=r instanceof Object&&Object.keys(r).reduce(function(e,n){return e.concat.apply(e,[r[n].name].concat(_toConsumableArray(r[n].aka)))},[]).map(e),t=void 0;"function"==typeof define&&define.amd?define("markup",[],function(e){t=e.lex}):this&&this.loaded&&this.modules&&(t=this.modules.Markup.lex),window.CodeMirror&&CodeMirror.defineMode("harlowe-2",function(){function r(e,r){if(e.update){var n=e.from.line,t=r.split("\n").slice(0,e.from.line+1);return t[n]=t[n].slice(0,e.from.ch)+e.text[0],t=t.concat(e.text.slice(1)),e.update({line:0,ch:0},e.to,t),t.join("\n")}}function a(e){u.length&&(u.forEach(function(e){return e.clear()}),u=[]);var r=i.tokenAt(e.indexFromPos(e.getCursor()));if(r){if(u.push(e.markText(e.posFromIndex(r.start),e.posFromIndex(r.end),{className:"cm-harlowe-2-cursor"})),"variable"===r.type||"tempVariable"===r.type||"hookRef"===r.type||"hook"===r.type){var n="hook"===r.type?"hookRef":r.type;s[n].forEach(function(n){n!==r&&n.name===r.name&&u.push(e.markText(e.posFromIndex(n.start),e.posFromIndex(n.end),{className:"cm-harlowe-2-variableOccurrence"}))})}("hookRef"===r.type||"hook"===r.type)&&s.hook.forEach(function(n){if(n!==r&&n.name===r.name){var t="appended"===n.tagPosition?n.end-n.name.length-1:n.start+1;u.push(e.markText(e.posFromIndex(t),e.posFromIndex(t+n.name.length),{className:"cm-harlowe-2-hookOccurrence"}))}})}}var o=void 0,i=void 0,s={variable:[],tempVariable:[],hook:[],hookRef:[],populate:function(){var e=this;this.variable=[],this.tempVariable=[],this.hook=[],this.hookRef=[];var r=function r(n){("variable"===n.type||"tempVariable"===n.type||"hook"===n.type||"hookRef"===n.type)&&e[n.type].push(n),n.children.forEach(r)};i.children.forEach(r)}},u=[],l=function(){var e=o.doc;i=t(e.getValue()),s.populate(),e.on("beforeChange",function(n,t){var a=e.getValue();r(t,a)}),e.on("change",function(){var r=e.getValue();i=t(r),s.populate()}),e.on("swapDoc",l),e.on("cursorActivity",a),l=null};return{startState:function(){return o||(o=CodeMirror.modes["harlowe-2"].cm,o.setOption("placeholder",["Enter the body text of your passage here.","''Bold'', //italics//, ^^superscript^^, ~~strikethrough~~, and

HTML tags

are available.","To display special symbols without them being transformed, put them between `backticks`.","To link to another passage, write the link text and the passage name like this: [[link text->passage name]]\nor this: [[passage name<-link text]]\nor this: [[link text]].","Macros like (set:) and (display:) are the programming of your passage. If you've (set:) a $variable, you can just enter its name to print it out.","To make a 'hook', put [single square brackets] around text - or leave it empty [] - then put a macro like (if:), a $variable, or a |nametag> outside the front, |like>[so].","Hooks can be used for many things: showing text (if:) something happened, applying a (text-style:), making a place to (append:) text later on, and much more!","Consult the Harlowe documentation for more information."].join("\n\n")),o.setOption("lineNumbers",!0),o.setOption("lineNumberFormatter",function(){return"\u2022"})),{pos:0}},blankLine:function(e){e.pos++},token:function(r,t){l&&l();var a=i.pathAt(t.pos),o=a[0];if(!o)return t.pos++,r.next(),null;for(;o===o.tokenAt(t.pos)&&!r.eol();)t.pos++,r.next();r.eol()&&t.pos++;for(var s={},u="",m=0;m1&&(g+="-"+s[g]),c){case"macroName":-1===n.indexOf(e(a[m].text.slice(0,-1)))&&(g+=" harlowe-2-error")}u+=g+" "}return u}}});var a=document.querySelector("style#cm-harlowe-2");a||(a=document.createElement("style"),a.setAttribute("id","cm-harlowe-2"),document.head.appendChild(a)),a.innerHTML=function(){var e=function(e,r,n){return function(t){return"background-color: hsla("+e+","+r+"%,"+n+"%,"+t+");"}},r=e(40,100,50),n=e(220,100,50),t=function(r){return e(320,44,50)(r)+"color: #a84186;"},a="color: firebrick !important; background-color: hsla(17, 100%, 74%, 0.74) !important;",o="font-weight:100; color: hsla(0,0,0,0.5)";return{root:"box-sizing:border-box;","cursor:not([class^='cm-harlowe-2-text cm-harlowe-2-root'])":"border-bottom: 2px solid darkgray;",CodeMirror:"padding: 0 !important","CodeMirror-linenumber":"color: #ccc;","CodeMirror-gutters":"left: 0px !important;",hook:r(.05),"hook-2":r(.1),"hook-3":r(.15),"hook-4":r(.2),"hook-5":r(.25),"hook-6":r(.3),"hook-7":r(.35),"hook-8":r(.4),"^=hook , ^=hook-":"font-weight:bold;","error:not([class*='cm-harlowe-2-string'])":a,macro:t(.05),"macro-2":t(.1),"macro-3":t(.15),"macro-4":t(.2),"macro-5":t(.25),"macro-6":t(.3),"macro-7":t(.35),"macro-8":t(.4),macroName:"font-style:italic;","^=macro ":"font-weight:bold;","bold, strong":"font-weight:bold;","italic, em":"font-style:italic;",sup:"vertical-align: super;font-size:0.8em;",verbatim:"background-color: hsla(0,0%,50%,0.1);","^=bold, ^=strong, ^=italic, ^=em, ^=sup, ^=verbatim":o, -"^=string":"font-style:italic; display:inline-block; transform: scaleX(-1);","string + ^=string":"transform: none;","^=collapsed":"font-weight:bold; color: hsl(201, 100%, 30%);",collapsed:n(.025),"collapsed.hook":n(.05),"collapsed.hook-2":n(.1),"collapsed.hook-3":n(.15),"collapsed.hook-4":n(.2),"collapsed.hook-5":n(.25),"collapsed.hook-6":n(.3),"collapsed.hook-7":n(.35),"collapsed.hook-8":n(.4),"twineLink:not(.text)":"color: #3333cc;",tag:"color: #4d4d9d;",boolean:"color: #626262;",string:"color: #008282;",number:"color: #A15000;",variable:"color: #0076b2;",tempVariable:"color: #1a6e97;",hookRef:"color: #007f54;","variableOccurrence, hookOccurrence":"background: #9fdfc9 !important;",where:"color: #007f00; font-style:italic;",via:"color: #007f00; font-style:italic;",with:"color: #007f00; font-style:italic;",making:"color: #007f00; font-style:italic;",each:"color: #007f00; font-style:italic;",heading:"font-weight:bold;",hr:"display:block; background-image: linear-gradient(0deg, transparent, transparent 45%, silver 45%, transparent 55%, transparent);",align:"display:block; color: hsl(14, 99%, 37%); background-color: hsla(14, 99%, 87%, 0.2);",column:"display:block; color: hsl(204, 99%, 37%); background-color: hsla(204, 99%, 87%, 0.2);",escapedLine:"font-weight:bold; color: hsl(51, 100%, 30%);","identifier, property, belongingProperty, itsProperty, belongingItProperty, belongingItOperator":"color: #0076b2;",toString:function(){var e=this;return Object.keys(this).reduce(function(r,n){var t;return"toString"===n?r:"CodeMirror"===n.slice(0,10)?r+"."+n+"{"+e[n]+"}":(t=n.split(", ").map(function e(r){return r.indexOf(".")>-1?r.split(/\./g).map(e).join(""):r.indexOf(" + ")>-1?r.split(/ \+ /g).map(e).join(" + "):0===r.indexOf("^=")?"[class^='cm-harlowe-2-"+r.slice(2)+"']":".cm-harlowe-2-"+r}),r+t.join(", ")+"{"+e[n]+"}")},"")}}+""}()}.call(eval("this"));}}); \ No newline at end of file diff --git a/story-formats/harlowe-2.1.0/format.js b/story-formats/harlowe-2.1.0/format.js new file mode 100644 index 000000000..52d60d111 --- /dev/null +++ b/story-formats/harlowe-2.1.0/format.js @@ -0,0 +1,2 @@ +window.storyFormat({"name":"Harlowe","version":"2.0.1","author":"Leon Arnott","description":"The default story format for Twine 2. See its documentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n\n\n","setup": function(){"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r-1)||e.cannotFollow&&(-1!==e.cannotFollow.indexOf(n&&n.type)||e.cannotFollow.indexOf("text")>-1&&t)||e.peek&&e.peek.toLowerCase()!==r.slice(0,e.peek.length).toLowerCase())}function t(e){for(var r=e.innerText,t=[],o=0,s=o,u=r.length,l=null;u>o;){for(var m=r.slice(o),c=(t.length?t[0]:e).innerMode,g=0,p=c.length;p>g;g+=1){var d=i[c[g]];if(n(d,m,l,o>s)&&d.pattern.test(m)){var h=d.pattern.exec(m),f=d.fn(h),y=!1,k=0;if(f.matches){for(;k-1&&(k=t.length-1)}if(k>=t.length&&!f.isFront)continue}o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:c}),l=e.addChild(f),o+=l.text.length,s=o,y&&(a(e,l,t[k]),t=t.slice(k+1)),l.isFrontToken()&&t.unshift(l);break}}g===p&&(o+=1,null===l&&(l={type:"text"}))}for(o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:(t.length?t[0]:e).innerMode});t.length>0;)t.shift().demote();return e}function a(e,n,t){var a=e.children.indexOf(n),o=e.children.indexOf(t);n.children=e.children.splice(o+1,a-(o+1)),n.children.forEach(function(e){r(n,e)}),n.type=n.matches[t.type],n.innerText="";for(var i=0,s=n.children.length;s>i;i++)n.innerText+=n.children[i].text;n.start=t.start,n.text=t.text+n.innerText+n.text,Object.keys(t).forEach(function(e){Object.hasOwnProperty.call(n,e)||(n[e]=t[e])}),n.isFront&&(n.isFront=!1),e.children.splice(o,1),r(e,n)}var o=void 0,i={};e.prototype={constructor:e,addChild:function(n){var a=this.lastChildEnd(),o=new e({start:a,end:n.text&&a+n.text.length,children:[]},n);return o.innerText&&t(o),this.children.push(o),r(this,o),o},lastChild:function(){return this.children?this.children[this.children.length-1]||null:null},lastChildEnd:function(){var e=this.lastChild();return e?e.end:this.start+Math.max(0,this.text.indexOf(this.innerText))},tokenAt:function(e){if(e=this.end)return null;if(this.childAt)return this.childAt[e]&&this.childAt[e].tokenAt(e)||this;if(this.children.length)for(var r=0;r=this.end)return[];if(this.childAt)return(this.childAt[e]&&this.childAt[e].pathAt(e)||[]).concat(this);var r=[];if(this.children.length)for(var n=0;n=this.end?null:this.children?this.children.reduce(function(r,n){return r||(e>=n.start&&e0&&(e+="["+this.children+"]"),e}},o={lex:function(r,n){return t(new e({type:"root",start:n||0,end:r.length,text:r,innerText:r,children:[],childAt:{},innerMode:o.modes.start}))},rules:i,modes:{}},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=o:"function"==typeof define&&define.amd?define("lexer",[],function(){return o}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Lexer=o):this.TwineLexer=o}).call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(r){return r&&"object"===("undefined"==typeof r?"undefined":_typeof(r))?(Object.keys(r).forEach(function(n){r[n]=e(r[n])}),r):(r+"").replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function r(){return"[^"+Array.apply(0,arguments).map(e).join("")+"]*"}function n(e){return function(){return"("+e+Array.apply(0,arguments).join("|")+")"}}var t=void 0,a=n("?:"),o=n("?!"),i=n("?="),s="[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*",u=s.replace("*","+"),l="\\b",m="\\\\\\n\\\\?|\\n\\\\",c="\\n(?!\\\\)",g="[\\w\\-\\u00c0-\\u00de\\u00df-\\u00ff\\u0150\\u0170\\u0151\\u0171\\uD800-\\uDFFF]",p=g.replace("\\-",""),d=a("\\n","$"),h="("+a(m,"[^\\n]")+"+)",f="\\*",y=s+"("+f+"+)"+u+h+d,k="(?:0\\.)",b=s+"("+k+"+)"+u+h+d,N=s+"-{3,}"+s+d,C=s+"(#{1,6})"+s+h+d,T=s+"(==+>|<=+|=+><=+|<==+>)"+s+d,S=s+"(=+\\|+|\\|+=+|=+\\|+=+|\\|=+\\|)"+s+d,v={opener:"\\[\\[(?!\\[)",text:"("+r("]")+")",rightSeparator:a("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+a("[^\\|\\]]","\\]"+o("\\]"))+"+)"},x=p+"*"+p.replace("\\w","a-zA-Z")+p+"*",A="\\$("+x+")",w="'s"+u+"("+x+")",O="("+x+")"+u+"of"+l+o("it"+l),F="'s"+u,L="of"+l,P=a("it","time")+l,H="its"+u+"("+x+")",j="its"+u,B="("+x+")"+u+"of"+u+"it"+l,M="of"+l+u+"it"+l,V={opener:"\\(",name:"("+a(g+"+",A)+"):"+o("\\/"),closer:"\\)"},I="<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",D=a("=<","=>","[gl]te?"+l,"n?eq"+l,"isnot"+l,"are"+l,"x"+l),E={name:"[a-zA-Z][\\w\\-]*",attrs:"(?:\"[^\"]*\"|'[^']*'|[^'\">])*?"},_="\\|("+g+"+)(>|\\))",R="(<|\\()("+g+"+)\\|",q="_("+x+")"+l,$="\\b(\\d+(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?)"+o("m?s")+l;v.main=v.opener+a(v.text+v.rightSeparator,v.text.replace("*","*?")+v.leftSeparator)+v.text,t={upperLetter:"[A-Z\\u00c0-\\u00de\\u0150\\u0170]",lowerLetter:"[a-z0-9_\\-\\u00df-\\u00ff\\u0151\\u0171]",anyLetter:g,anyLetterStrict:p,whitespace:u,escapedLine:m,br:c,commentFront:"",tag:"<\\/?"+E.name+E.attrs+">",tagPeek:"<",scriptStyleTag:"<("+a("script","style")+")"+E.attrs+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+a("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:f,hr:N,heading:C,align:T,column:S,bulleted:y,numbered:b,strikeOpener:e("~~"),italicOpener:e("//"),boldOpener:e("''"),supOpener:e("^^"),strongFront:e("**"),strongBack:e("**"),emFront:e("*"),emBack:e("*"),verbatimOpener:"`+",collapsedFront:"{",collapsedBack:"}",hookAppendedFront:"\\[",hookPrependedFront:_+"\\[",hookFront:"\\[",hookBack:"\\]"+o(R),hookAppendedBack:"\\]"+R,passageLink:v.main+v.closer,passageLinkPeek:"[[",legacyLink:v.opener+v.legacyText+v.legacySeparator+v.legacyText+v.closer,legacyLinkPeek:"[[",simpleLink:v.opener+v.legacyText+v.closer,simpleLinkPeek:"[[",macroFront:V.opener+i(V.name),macroFrontPeek:"(",macroName:V.name,groupingFront:"\\("+o(V.name),groupingFrontPeek:"(",groupingBack:"\\)",twine1Macro:I,twine1MacroPeek:"<<",property:w,propertyPeek:"'s",belongingProperty:O,possessiveOperator:F,belongingOperator:L,belongingOperatorPeek:"of",itsOperator:j,itsOperatorPeek:"its",belongingItOperator:M,belongingItOperatorPeek:"of",variable:A,variablePeek:"$",tempVariable:q,tempVariablePeek:"_",hookRef:"\\?("+g+"+)\\b",hookRefPeek:"?",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)"+l,colour:a(a("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),number:$,boolean:a("true","false")+l,identifier:P,itsProperty:H,itsPropertyPeek:"its",belongingItProperty:B,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',is:"is"+o(u+"not",u+"in",u+"<",u+">")+l,isNot:"is"+u+"not"+l,and:"and"+l,or:"or"+l,not:"not"+l,inequality:"((?:is(?:"+u+"not)?"+s+")*)("+a("<(?!=)","<=",">(?!=)",">=")+")",isIn:"is"+u+"in"+l,contains:"contains"+l,addition:e("+")+o("="),subtraction:e("-")+o("="),multiplication:e("*")+o("="),division:a("/","%")+o("="),comma:",",spread:"\\.\\.\\."+o("\\."),to:a("to"+l,"="),into:"into"+l,making:"making"+l,where:"where"+l,via:"via"+l,with:"with"+l,each:"each"+l,augmentedAssign:a("\\+","\\-","\\*","\\/","%")+"=",incorrectOperator:D},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=t:"function"==typeof define&&define.amd?define("patterns",[],function(){return t}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=t):this.Patterns=t}.call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(e){function r(e){return e=e||"innerText",function(r){var n=r.reduceRight(function(e,r,n){return e||(n?r:"")},""),t={};return t[e]=n,t}}function t(e,r){var n={};return n[e]=r,function(){return{isFront:!0,matches:n,cannotCross:["verbatimOpener"]}}}function a(e,r){return Object.keys(r).forEach(function(n){var t=r[n].fn;r[n].fn=function(r){var a=t(r);return a.text||(a.text=r[0]),a.type||(a.type=n),a.innerMode||(a.innerMode=e),a}}),r}var o=Object.bind(0,null),i=[],s=[],u=a(i,{hr:{fn:o},bulleted:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},numbered:{fn:function(e){return{depth:e[1].length/2,innerText:e[2]}}},heading:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},align:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("><");return~t?(r=Math.round(t/(n.length-2)*50),25===r&&(r="center")):"<"===n[0]&&">"===n.slice(-1)?r="justify":n.indexOf(">")>-1?r="right":n.indexOf("<")>-1&&(r="left"),{align:r}}},column:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("|");return t&&t-1}}},augmentedAssign:{fn:function(e){return{operator:e[0][0]}}},identifier:{fn:r("name"),cannotFollow:["text"]},whitespace:{fn:o,cannotFollow:"text"},incorrectOperator:{fn:function(e){var r={"=>":">=","=<":"<=",gte:">=",lte:"<=",gt:">",lt:"<",eq:"is",isnot:"is not",neq:"is not",are:"is",x:"*"}[e[0].toLowerCase()];return{type:"error",message:"Please say "+(r?"'"+r+"'":"something else")+" instead of '"+e[0]+"'."}},cannotFollow:"text"}},["boolean","is","to","into","where","via","with","making","each","and","or","not","isNot","contains","isIn"].reduce(function(e,r){return e[r]={fn:o,cannotFollow:["text"]},e},{}),["comma","spread","addition","subtraction","multiplication","division"].reduce(function(e,r){return e[r]={fn:o},e},{})));i.push.apply(i,_toConsumableArray(Object.keys(u)).concat(_toConsumableArray(Object.keys(m)),_toConsumableArray(Object.keys(l)))),s.push.apply(s,_toConsumableArray(Object.keys(m)).concat(_toConsumableArray(Object.keys(c))));var g=Object.assign({},u,l,m,c);return Object.keys(g).forEach(function(e){var r=n[e];g[e].pattern="string"!=typeof r?r:new RegExp("^(?:"+r+")","i"),n[e+"Peek"]&&(g[e].peek=n[e+"Peek"])}),Object.assign(e.rules,g),e.modes.start=e.modes.markup=i,e.modes.macro=s,e}function r(r){return Object.freeze({lex:e(r).lex,Patterns:n})}var n=void 0;Object.assign=Object.assign||function(e){for(var r=1;r Command":{name:"display",sig:" String",returnType:"Command",aka:[]},"(print: Any) -> Command":{name:"print",sig:" Any",returnType:"Command",aka:[]},"(show: ...HookName) -> Command":{name:"show",sig:" ...HookName",returnType:"Command",aka:[]},"(go-to: String) -> Command":{name:"go-to",sig:" String",returnType:"Command",aka:[]},"(undo:) -> Command":{name:"undo",sig:"",returnType:"Command",aka:[]},"(live: [Number]) -> Changer":{name:"live",sig:" [Number]",returnType:"Changer",aka:[]},"(stop:) -> Command":{name:"stop",sig:"",returnType:"Command",aka:[]},"(save-game: String, [String]) -> Boolean":{name:"save-game",sig:" String, [String]",returnType:"Boolean",aka:[]},"(load-game: String) -> Command":{name:"load-game",sig:" String",returnType:"Command",aka:[]},"(alert: String) -> Command":{name:"alert",sig:" String",returnType:"Command",aka:[]},"(prompt: String, String) -> String":{name:"prompt",sig:" String, String",returnType:"String",aka:[]},"(confirm: String) -> Boolean":{name:"confirm",sig:" String",returnType:"Boolean",aka:[]},"(open-url: String) -> Command":{name:"open-url",sig:" String",returnType:"Command",aka:[]},"(reload:) -> Command":{name:"reload",sig:"",returnType:"Command",aka:[]},"(goto-url: String) -> Command":{name:"goto-url",sig:" String",returnType:"Command",aka:[]},"(page-url:) -> String":{name:"page-url",sig:"",returnType:"String",aka:[]},"(set: ...VariableToValue) -> Instant":{name:"set",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(put: ...VariableToValue) -> Instant":{name:"put",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(move: ...VariableToValue) -> Instant":{name:"move",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(a: [...Any]) -> Array":{name:"a",sig:" [...Any]",returnType:"Array",aka:[]},"(range: Number, Number) -> Array":{name:"range",sig:" Number, Number",returnType:"Array",aka:[]},"(subarray: Array, Number, Number) -> Array":{name:"subarray",sig:" Array, Number, Number",returnType:"Array",aka:[]},"(shuffled: Any, Any, [...Any]) -> Array":{name:"shuffled",sig:" Any, Any, [...Any]",returnType:"Array",aka:[]},"(sorted: Number or String, ...Number or String) -> Array":{name:"sorted",sig:" Number or String, ...Number or String",returnType:"Array",aka:[]},"(rotated: Number, [...Any]) -> Array":{name:"rotated",sig:" Number, [...Any]",returnType:"Array",aka:[]},"(repeated: Number, ...Any) -> Array":{name:"repeated",sig:" Number, ...Any",returnType:"Array",aka:[]},"(interlaced: Array, ...Array) -> Array":{name:"interlaced",sig:" Array, ...Array",returnType:"Array",aka:[]},"(altered: Lambda, ...Any) -> Array":{name:"altered",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(find: Lambda, ...Any) -> Array":{name:"find",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(all-pass: Lambda, ...Any) -> Boolean":{name:"all-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(some-pass: Lambda, ...Any) -> Boolean":{name:"some-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(none-pass: Lambda, ...Any) -> Boolean":{name:"none-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(folded: Lambda, ...Any) -> Any":{name:"folded",sig:" Lambda, ...Any",returnType:"Any",aka:[]},"(datanames: Datamap) -> Array":{name:"datanames",sig:" Datamap",returnType:"Array",aka:[]},"(datavalues: Datamap) -> Array":{name:"datavalues",sig:" Datamap",returnType:"Array",aka:[]},"(dataentries: Datamap) -> Array":{name:"dataentries",sig:" Datamap",returnType:"Array",aka:[]},"(history:) -> Array":{name:"history",sig:"",returnType:"Array",aka:[]},"(passage: [String]) -> Datamap":{name:"passage",sig:" [String]",returnType:"Datamap",aka:[]},"(saved-games:) -> Datamap":{name:"saved-games",sig:"",returnType:"Datamap",aka:[]},"(dm: [...Any]) -> Datamap":{name:"dm",sig:" [...Any]",returnType:"Datamap",aka:[]},"(ds: [...Any]) -> Dataset":{name:"ds",sig:" [...Any]",returnType:"Dataset",aka:[]},"(count: Array or String, ...Any) -> Number":{name:"count",sig:" Array or String, ...Any",returnType:"Number",aka:[]},"(enchant: HookName or String, Changer) -> Command":{name:"enchant",sig:" HookName or String, Changer",returnType:"Command",aka:[]},"(replace: ...HookName or String) -> Changer":{name:"replace",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(append: ...HookName or String) -> Changer":{name:"append",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(prepend: ...HookName or String) -> Changer":{name:"prepend",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(click: HookName or String) -> Changer":{name:"click",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover: HookName or String) -> Changer":{name:"mouseover",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout: HookName or String) -> Changer":{name:"mouseout",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-replace: HookName or String) -> Changer":{name:"click-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-append: HookName or String) -> Changer":{name:"click-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-prepend: HookName or String) -> Changer":{name:"click-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-replace: HookName or String) -> Changer":{name:"mouseover-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-append: HookName or String) -> Changer":{name:"mouseover-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-prepend: HookName or String) -> Changer":{name:"mouseover-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-replace: HookName or String) -> Changer":{name:"mouseout-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-append: HookName or String) -> Changer":{name:"mouseout-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-prepend: HookName or String) -> Changer":{name:"mouseout-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(link: String) -> Changer":{name:"link",sig:" String",returnType:"Changer",aka:[]},"(link-reveal: String) -> Changer":{name:"link-reveal",sig:" String",returnType:"Changer",aka:[]},"(link-repeat: String) -> Changer":{name:"link-repeat",sig:" String",returnType:"Changer",aka:[]},"(link-goto: String, [String]) -> Command":{name:"link-goto",sig:" String, [String]",returnType:"Command",aka:[]},"(link-undo: String) -> Command":{name:"link-undo",sig:" String",returnType:"Command",aka:[]},"(if: Boolean) -> Changer":{name:"if",sig:" Boolean",returnType:"Changer",aka:[]},"(unless: Boolean) -> Changer":{name:"unless",sig:" Boolean",returnType:"Changer",aka:[]},"(else-if: Boolean) -> Changer":{name:"else-if",sig:" Boolean",returnType:"Changer",aka:[]},"(else:) -> Changer":{name:"else",sig:"",returnType:"Changer",aka:[]},"(hidden:) -> Changer":{name:"hidden",sig:"",returnType:"Changer",aka:[]},"(hook: String) -> Changer":{name:"hook",sig:" String",returnType:"Changer",aka:[]},"(for: Lambda, ...Any) -> Changer":{name:"for",sig:" Lambda, ...Any",returnType:"Changer",aka:[]},"(transition: String) -> Changer":{name:"transition",sig:" String",returnType:"Changer",aka:[]},"(transition-time: Number) -> Changer":{name:"transition-time",sig:" Number",returnType:"Changer",aka:[]},"(font: String) -> Changer":{name:"font",sig:" String",returnType:"Changer",aka:[]},"(align: String) -> Changer":{name:"align",sig:" String",returnType:"Changer",aka:[]},"(text-colour: String or Colour) -> Changer":{name:"text-colour",sig:" String or Colour",returnType:"Changer",aka:["text-color","color"]},"(text-rotate: Number) -> Changer":{name:"text-rotate",sig:" Number",returnType:"Changer",aka:[]},"(background: Colour or String) -> Changer":{name:"background",sig:" Colour or String",returnType:"Changer",aka:[]},"(text-style: String) -> Changer":{name:"text-style",sig:" String",returnType:"Changer",aka:[]},"(hover-style: Changer) -> Changer":{name:"hover-style",sig:" Changer",returnType:"Changer",aka:[]},"(css: String) -> Changer":{name:"css",sig:" String",returnType:"Changer",aka:[]},"(text: ...[Number or String or Boolean or Array]) -> String":{name:"text",sig:" ...[Number or String or Boolean or Array]",returnType:"String",aka:[]},"(substring: String, Number, Number) -> String":{name:"substring",sig:" String, Number, Number",returnType:"String",aka:[]},"(lowercase: String) -> String":{name:"lowercase",sig:" String",returnType:"String",aka:[]},"(uppercase: String) -> String":{name:"uppercase",sig:" String",returnType:"String",aka:[]},"(lowerfirst: String) -> String":{name:"lowerfirst",sig:" String",returnType:"String",aka:[]},"(upperfirst: String) -> String":{name:"upperfirst",sig:" String",returnType:"String",aka:[]},"(words: String) -> Array":{name:"words",sig:" String",returnType:"Array",aka:[]},"(num: String) -> Number":{name:"num",sig:" String",returnType:"Number",aka:[]},"(rgb: Number, Number, Number) -> Colour":{name:"rgb",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(rgba: Number, Number, Number, Number) -> Colour":{name:"rgba",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(hsl: Number, Number, Number) -> Colour":{name:"hsl",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(hsla: Number, Number, Number, Number) -> Colour":{name:"hsla",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(weekday:) -> String":{name:"weekday",sig:"",returnType:"String",aka:[]},"(monthday:) -> Number":{name:"monthday",sig:"",returnType:"Number",aka:[]},"(current-time:) -> String":{name:"current-time",sig:"",returnType:"String",aka:[]},"(current-date:) -> String":{name:"current-date",sig:"",returnType:"String",aka:[]},"(min: ...Number) -> Number":{name:"min",sig:" ...Number",returnType:"Number",aka:[]},"(max: ...Number) -> Number":{name:"max",sig:" ...Number",returnType:"Number",aka:[]},"(abs: Number) -> Number":{name:"abs",sig:" Number",returnType:"Number",aka:[]},"(sign: Number) -> Number":{name:"sign",sig:" Number",returnType:"Number",aka:[]},"(sin: Number) -> Number":{name:"sin",sig:" Number",returnType:"Number",aka:[]},"(cos: Number) -> Number":{name:"cos",sig:" Number",returnType:"Number",aka:[]},"(tan: Number) -> Number":{name:"tan",sig:" Number",returnType:"Number",aka:[]},"(floor: Number) -> Number":{name:"floor",sig:" Number",returnType:"Number",aka:[]},"(round: Number) -> Number":{name:"round",sig:" Number",returnType:"Number",aka:[]},"(ceil: Number) -> Number":{name:"ceil",sig:" Number",returnType:"Number",aka:[]},"(pow: Number, Number) -> Number":{name:"pow",sig:" Number, Number",returnType:"Number",aka:[]},"(exp: Number) -> Number":{name:"exp",sig:" Number",returnType:"Number",aka:[]},"(sqrt: Number) -> Number":{name:"sqrt",sig:" Number",returnType:"Number",aka:[]},"(log: Number) -> Number":{name:"log",sig:" Number",returnType:"Number",aka:[]},"(log10: Number) -> Number":{name:"log10",sig:" Number",returnType:"Number",aka:[]},"(log2: Number) -> Number":{name:"log2",sig:" Number",returnType:"Number",aka:[]},"(random: Number, [Number]) -> Number":{name:"random",sig:" Number, [Number]",returnType:"Number",aka:[]},"(either: ...Any) -> Any":{name:"either",sig:" ...Any",returnType:"Any",aka:[]}},n=r instanceof Object&&Object.keys(r).reduce(function(e,n){return e.concat.apply(e,[r[n].name].concat(_toConsumableArray(r[n].aka)))},[]).map(e),t=void 0;"function"==typeof define&&define.amd?define("markup",[],function(e){t=e.lex}):this&&this.loaded&&this.modules&&(t=this.modules.Markup.lex),window.CodeMirror&&CodeMirror.defineMode("harlowe-2",function(){function r(e,r){if(e.update){var n=e.from.line,t=r.split("\n").slice(0,e.from.line+1);return t[n]=t[n].slice(0,e.from.ch)+e.text[0],t=t.concat(e.text.slice(1)),e.update({line:0,ch:0},e.to,t),t.join("\n")}}function a(e){u.length&&(u.forEach(function(e){return e.clear()}),u=[]);var r=i.tokenAt(e.indexFromPos(e.getCursor()));if(r){if(u.push(e.markText(e.posFromIndex(r.start),e.posFromIndex(r.end),{className:"cm-harlowe-2-cursor"})),"variable"===r.type||"tempVariable"===r.type||"hookRef"===r.type||"hook"===r.type){var n="hook"===r.type?"hookRef":r.type;s[n].forEach(function(n){n!==r&&n.name===r.name&&u.push(e.markText(e.posFromIndex(n.start),e.posFromIndex(n.end),{className:"cm-harlowe-2-variableOccurrence"}))})}("hookRef"===r.type||"hook"===r.type)&&s.hook.forEach(function(n){if(n!==r&&n.name===r.name){var t="appended"===n.tagPosition?n.end-n.name.length-1:n.start+1;u.push(e.markText(e.posFromIndex(t),e.posFromIndex(t+n.name.length),{className:"cm-harlowe-2-hookOccurrence"}))}})}}var o=void 0,i=void 0,s={variable:[],tempVariable:[],hook:[],hookRef:[],populate:function(){var e=this;this.variable=[],this.tempVariable=[],this.hook=[],this.hookRef=[];var r=function r(n){("variable"===n.type||"tempVariable"===n.type||"hook"===n.type||"hookRef"===n.type)&&e[n.type].push(n),n.children.forEach(r)};i.children.forEach(r)}},u=[],l=function(){var e=o.doc;i=t(e.getValue()),s.populate(),e.on("beforeChange",function(n,t){var a=e.getValue();r(t,a)}),e.on("change",function(){var r=e.getValue();i=t(r),s.populate()}),e.on("swapDoc",l),e.on("cursorActivity",a),l=null};return{startState:function(){return o||(o=CodeMirror.modes["harlowe-2"].cm,o.setOption("placeholder",["Enter the body text of your passage here.","''Bold'', //italics//, ^^superscript^^, ~~strikethrough~~, and

HTML tags

are available.","To display special symbols without them being transformed, put them between `backticks`.","To link to another passage, write the link text and the passage name like this: [[link text->passage name]]\nor this: [[passage name<-link text]]\nor this: [[link text]].","Macros like (set:) and (display:) are the programming of your passage. If you've (set:) a $variable, you can just enter its name to print it out.","To make a 'hook', put [single square brackets] around text - or leave it empty [] - then put a macro like (if:), a $variable, or a |nametag> outside the front, |like>[so].","Hooks can be used for many things: showing text (if:) something happened, applying a (text-style:), making a place to (append:) text later on, and much more!","Consult the Harlowe documentation for more information."].join("\n\n")),o.setOption("lineNumbers",!0),o.setOption("lineNumberFormatter",function(){return"\u2022"})),{pos:0}},blankLine:function(e){e.pos++},token:function(r,t){l&&l();var a=i.pathAt(t.pos),o=a[0];if(!o)return t.pos++,r.next(),null;for(;o===o.tokenAt(t.pos)&&!r.eol();)t.pos++,r.next();r.eol()&&t.pos++;for(var s={},u="",m=0;m1&&(g+="-"+s[g]),c){case"macroName":-1===n.indexOf(e(a[m].text.slice(0,-1)))&&(g+=" harlowe-2-error")}u+=g+" "}return u}}});var a=document.querySelector("style#cm-harlowe-2");a||(a=document.createElement("style"),a.setAttribute("id","cm-harlowe-2"),document.head.appendChild(a)),a.innerHTML=function(){var e=function(e,r,n){return function(t){return"background-color: hsla("+e+","+r+"%,"+n+"%,"+t+");"}},r=e(40,100,50),n=e(220,100,50),t=function(r){return e(320,44,50)(r)+"color: #a84186;"},a="color: firebrick !important; background-color: hsla(17, 100%, 74%, 0.74) !important;",o="font-weight:100; color: hsla(0,0,0,0.5)";return{root:"box-sizing:border-box;","cursor:not([class^='cm-harlowe-2-text cm-harlowe-2-root'])":"border-bottom: 2px solid darkgray;",CodeMirror:"padding: 0 !important","CodeMirror-linenumber":"color: #ccc;","CodeMirror-gutters":"left: 0px !important;",hook:r(.05),"hook-2":r(.1),"hook-3":r(.15),"hook-4":r(.2),"hook-5":r(.25),"hook-6":r(.3),"hook-7":r(.35),"hook-8":r(.4),"^=hook , ^=hook-":"font-weight:bold;","error:not([class*='cm-harlowe-2-string'])":a,macro:t(.05),"macro-2":t(.1),"macro-3":t(.15),"macro-4":t(.2),"macro-5":t(.25),"macro-6":t(.3),"macro-7":t(.35),"macro-8":t(.4),macroName:"font-style:italic;","^=macro ":"font-weight:bold;","bold, strong":"font-weight:bold;","italic, em":"font-style:italic;",sup:"vertical-align: super;font-size:0.8em;",strike:"text-decoration: line-through;",verbatim:"background-color: hsla(0,0%,50%,0.1);","^=bold, ^=strong, ^=italic, ^=em, ^=sup, ^=verbatim, ^=strike":o, +"^=string":"font-style:italic; display:inline-block; transform: scaleX(-1);","string + ^=string":"transform: none;","^=collapsed":"font-weight:bold; color: hsl(201, 100%, 30%);",collapsed:n(.025),"collapsed.hook":n(.05),"collapsed.hook-2":n(.1),"collapsed.hook-3":n(.15),"collapsed.hook-4":n(.2),"collapsed.hook-5":n(.25),"collapsed.hook-6":n(.3),"collapsed.hook-7":n(.35),"collapsed.hook-8":n(.4),"twineLink:not(.text)":"color: #3333cc;",tag:"color: #4d4d9d;",boolean:"color: #626262;",string:"color: #008282;",number:"color: #A15000;",variable:"color: #0076b2;",tempVariable:"color: #1a6e97;",hookRef:"color: #007f54;","variableOccurrence, hookOccurrence":"background: #9fdfc9 !important;",where:"color: #007f00; font-style:italic;",via:"color: #007f00; font-style:italic;",with:"color: #007f00; font-style:italic;",making:"color: #007f00; font-style:italic;",each:"color: #007f00; font-style:italic;",heading:"font-weight:bold;",hr:"display:block; background-image: linear-gradient(0deg, transparent, transparent 45%, silver 45%, transparent 55%, transparent);",align:"display:block; color: hsl(14, 99%, 37%); background-color: hsla(14, 99%, 87%, 0.2);",column:"display:block; color: hsl(204, 99%, 37%); background-color: hsla(204, 99%, 87%, 0.2);",escapedLine:"font-weight:bold; color: hsl(51, 100%, 30%);","identifier, property, belongingProperty, itsProperty, belongingItProperty, belongingItOperator":"color: #0076b2;",toString:function(){var e=this;return Object.keys(this).reduce(function(r,n){var t;return"toString"===n?r:"CodeMirror"===n.slice(0,10)?r+"."+n+"{"+e[n]+"}":(t=n.split(", ").map(function e(r){return r.indexOf(".")>-1?r.split(/\./g).map(e).join(""):r.indexOf(" + ")>-1?r.split(/ \+ /g).map(e).join(" + "):0===r.indexOf("^=")?"[class^='cm-harlowe-2-"+r.slice(2)+"']":".cm-harlowe-2-"+r}),r+t.join(", ")+"{"+e[n]+"}")},"")}}+""}()}.call(eval("this"));}}); \ No newline at end of file diff --git a/story-formats/harlowe-2.0.1/icon.svg b/story-formats/harlowe-2.1.0/icon.svg similarity index 100% rename from story-formats/harlowe-2.0.1/icon.svg rename to story-formats/harlowe-2.1.0/icon.svg From 9443e0dd02f996cef1a53138a027b32f07cda5e5 Mon Sep 17 00:00:00 2001 From: Leon <83939+webbedspace@users.noreply.github.com> Date: Fri, 8 Dec 2017 00:22:06 +1000 Subject: [PATCH 09/12] Fix version number. --- story-formats/harlowe-2.1.0/format.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/story-formats/harlowe-2.1.0/format.js b/story-formats/harlowe-2.1.0/format.js index 52d60d111..10cf167bc 100644 --- a/story-formats/harlowe-2.1.0/format.js +++ b/story-formats/harlowe-2.1.0/format.js @@ -1,2 +1,2 @@ -window.storyFormat({"name":"Harlowe","version":"2.0.1","author":"Leon Arnott","description":"The default story format for Twine 2. See its documentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n\n\n","setup": function(){"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r-1)||e.cannotFollow&&(-1!==e.cannotFollow.indexOf(n&&n.type)||e.cannotFollow.indexOf("text")>-1&&t)||e.peek&&e.peek.toLowerCase()!==r.slice(0,e.peek.length).toLowerCase())}function t(e){for(var r=e.innerText,t=[],o=0,s=o,u=r.length,l=null;u>o;){for(var m=r.slice(o),c=(t.length?t[0]:e).innerMode,g=0,p=c.length;p>g;g+=1){var d=i[c[g]];if(n(d,m,l,o>s)&&d.pattern.test(m)){var h=d.pattern.exec(m),f=d.fn(h),y=!1,k=0;if(f.matches){for(;k-1&&(k=t.length-1)}if(k>=t.length&&!f.isFront)continue}o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:c}),l=e.addChild(f),o+=l.text.length,s=o,y&&(a(e,l,t[k]),t=t.slice(k+1)),l.isFrontToken()&&t.unshift(l);break}}g===p&&(o+=1,null===l&&(l={type:"text"}))}for(o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:(t.length?t[0]:e).innerMode});t.length>0;)t.shift().demote();return e}function a(e,n,t){var a=e.children.indexOf(n),o=e.children.indexOf(t);n.children=e.children.splice(o+1,a-(o+1)),n.children.forEach(function(e){r(n,e)}),n.type=n.matches[t.type],n.innerText="";for(var i=0,s=n.children.length;s>i;i++)n.innerText+=n.children[i].text;n.start=t.start,n.text=t.text+n.innerText+n.text,Object.keys(t).forEach(function(e){Object.hasOwnProperty.call(n,e)||(n[e]=t[e])}),n.isFront&&(n.isFront=!1),e.children.splice(o,1),r(e,n)}var o=void 0,i={};e.prototype={constructor:e,addChild:function(n){var a=this.lastChildEnd(),o=new e({start:a,end:n.text&&a+n.text.length,children:[]},n);return o.innerText&&t(o),this.children.push(o),r(this,o),o},lastChild:function(){return this.children?this.children[this.children.length-1]||null:null},lastChildEnd:function(){var e=this.lastChild();return e?e.end:this.start+Math.max(0,this.text.indexOf(this.innerText))},tokenAt:function(e){if(e=this.end)return null;if(this.childAt)return this.childAt[e]&&this.childAt[e].tokenAt(e)||this;if(this.children.length)for(var r=0;r=this.end)return[];if(this.childAt)return(this.childAt[e]&&this.childAt[e].pathAt(e)||[]).concat(this);var r=[];if(this.children.length)for(var n=0;n=this.end?null:this.children?this.children.reduce(function(r,n){return r||(e>=n.start&&e0&&(e+="["+this.children+"]"),e}},o={lex:function(r,n){return t(new e({type:"root",start:n||0,end:r.length,text:r,innerText:r,children:[],childAt:{},innerMode:o.modes.start}))},rules:i,modes:{}},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=o:"function"==typeof define&&define.amd?define("lexer",[],function(){return o}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Lexer=o):this.TwineLexer=o}).call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(r){return r&&"object"===("undefined"==typeof r?"undefined":_typeof(r))?(Object.keys(r).forEach(function(n){r[n]=e(r[n])}),r):(r+"").replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function r(){return"[^"+Array.apply(0,arguments).map(e).join("")+"]*"}function n(e){return function(){return"("+e+Array.apply(0,arguments).join("|")+")"}}var t=void 0,a=n("?:"),o=n("?!"),i=n("?="),s="[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*",u=s.replace("*","+"),l="\\b",m="\\\\\\n\\\\?|\\n\\\\",c="\\n(?!\\\\)",g="[\\w\\-\\u00c0-\\u00de\\u00df-\\u00ff\\u0150\\u0170\\u0151\\u0171\\uD800-\\uDFFF]",p=g.replace("\\-",""),d=a("\\n","$"),h="("+a(m,"[^\\n]")+"+)",f="\\*",y=s+"("+f+"+)"+u+h+d,k="(?:0\\.)",b=s+"("+k+"+)"+u+h+d,N=s+"-{3,}"+s+d,C=s+"(#{1,6})"+s+h+d,T=s+"(==+>|<=+|=+><=+|<==+>)"+s+d,S=s+"(=+\\|+|\\|+=+|=+\\|+=+|\\|=+\\|)"+s+d,v={opener:"\\[\\[(?!\\[)",text:"("+r("]")+")",rightSeparator:a("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+a("[^\\|\\]]","\\]"+o("\\]"))+"+)"},x=p+"*"+p.replace("\\w","a-zA-Z")+p+"*",A="\\$("+x+")",w="'s"+u+"("+x+")",O="("+x+")"+u+"of"+l+o("it"+l),F="'s"+u,L="of"+l,P=a("it","time")+l,H="its"+u+"("+x+")",j="its"+u,B="("+x+")"+u+"of"+u+"it"+l,M="of"+l+u+"it"+l,V={opener:"\\(",name:"("+a(g+"+",A)+"):"+o("\\/"),closer:"\\)"},I="<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",D=a("=<","=>","[gl]te?"+l,"n?eq"+l,"isnot"+l,"are"+l,"x"+l),E={name:"[a-zA-Z][\\w\\-]*",attrs:"(?:\"[^\"]*\"|'[^']*'|[^'\">])*?"},_="\\|("+g+"+)(>|\\))",R="(<|\\()("+g+"+)\\|",q="_("+x+")"+l,$="\\b(\\d+(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?)"+o("m?s")+l;v.main=v.opener+a(v.text+v.rightSeparator,v.text.replace("*","*?")+v.leftSeparator)+v.text,t={upperLetter:"[A-Z\\u00c0-\\u00de\\u0150\\u0170]",lowerLetter:"[a-z0-9_\\-\\u00df-\\u00ff\\u0151\\u0171]",anyLetter:g,anyLetterStrict:p,whitespace:u,escapedLine:m,br:c,commentFront:"",tag:"<\\/?"+E.name+E.attrs+">",tagPeek:"<",scriptStyleTag:"<("+a("script","style")+")"+E.attrs+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+a("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:f,hr:N,heading:C,align:T,column:S,bulleted:y,numbered:b,strikeOpener:e("~~"),italicOpener:e("//"),boldOpener:e("''"),supOpener:e("^^"),strongFront:e("**"),strongBack:e("**"),emFront:e("*"),emBack:e("*"),verbatimOpener:"`+",collapsedFront:"{",collapsedBack:"}",hookAppendedFront:"\\[",hookPrependedFront:_+"\\[",hookFront:"\\[",hookBack:"\\]"+o(R),hookAppendedBack:"\\]"+R,passageLink:v.main+v.closer,passageLinkPeek:"[[",legacyLink:v.opener+v.legacyText+v.legacySeparator+v.legacyText+v.closer,legacyLinkPeek:"[[",simpleLink:v.opener+v.legacyText+v.closer,simpleLinkPeek:"[[",macroFront:V.opener+i(V.name),macroFrontPeek:"(",macroName:V.name,groupingFront:"\\("+o(V.name),groupingFrontPeek:"(",groupingBack:"\\)",twine1Macro:I,twine1MacroPeek:"<<",property:w,propertyPeek:"'s",belongingProperty:O,possessiveOperator:F,belongingOperator:L,belongingOperatorPeek:"of",itsOperator:j,itsOperatorPeek:"its",belongingItOperator:M,belongingItOperatorPeek:"of",variable:A,variablePeek:"$",tempVariable:q,tempVariablePeek:"_",hookRef:"\\?("+g+"+)\\b",hookRefPeek:"?",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)"+l,colour:a(a("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),number:$,boolean:a("true","false")+l,identifier:P,itsProperty:H,itsPropertyPeek:"its",belongingItProperty:B,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',is:"is"+o(u+"not",u+"in",u+"<",u+">")+l,isNot:"is"+u+"not"+l,and:"and"+l,or:"or"+l,not:"not"+l,inequality:"((?:is(?:"+u+"not)?"+s+")*)("+a("<(?!=)","<=",">(?!=)",">=")+")",isIn:"is"+u+"in"+l,contains:"contains"+l,addition:e("+")+o("="),subtraction:e("-")+o("="),multiplication:e("*")+o("="),division:a("/","%")+o("="),comma:",",spread:"\\.\\.\\."+o("\\."),to:a("to"+l,"="),into:"into"+l,making:"making"+l,where:"where"+l,via:"via"+l,with:"with"+l,each:"each"+l,augmentedAssign:a("\\+","\\-","\\*","\\/","%")+"=",incorrectOperator:D},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=t:"function"==typeof define&&define.amd?define("patterns",[],function(){return t}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=t):this.Patterns=t}.call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(e){function r(e){return e=e||"innerText",function(r){var n=r.reduceRight(function(e,r,n){return e||(n?r:"")},""),t={};return t[e]=n,t}}function t(e,r){var n={};return n[e]=r,function(){return{isFront:!0,matches:n,cannotCross:["verbatimOpener"]}}}function a(e,r){return Object.keys(r).forEach(function(n){var t=r[n].fn;r[n].fn=function(r){var a=t(r);return a.text||(a.text=r[0]),a.type||(a.type=n),a.innerMode||(a.innerMode=e),a}}),r}var o=Object.bind(0,null),i=[],s=[],u=a(i,{hr:{fn:o},bulleted:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},numbered:{fn:function(e){return{depth:e[1].length/2,innerText:e[2]}}},heading:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},align:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("><");return~t?(r=Math.round(t/(n.length-2)*50),25===r&&(r="center")):"<"===n[0]&&">"===n.slice(-1)?r="justify":n.indexOf(">")>-1?r="right":n.indexOf("<")>-1&&(r="left"),{align:r}}},column:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("|");return t&&t-1}}},augmentedAssign:{fn:function(e){return{operator:e[0][0]}}},identifier:{fn:r("name"),cannotFollow:["text"]},whitespace:{fn:o,cannotFollow:"text"},incorrectOperator:{fn:function(e){var r={"=>":">=","=<":"<=",gte:">=",lte:"<=",gt:">",lt:"<",eq:"is",isnot:"is not",neq:"is not",are:"is",x:"*"}[e[0].toLowerCase()];return{type:"error",message:"Please say "+(r?"'"+r+"'":"something else")+" instead of '"+e[0]+"'."}},cannotFollow:"text"}},["boolean","is","to","into","where","via","with","making","each","and","or","not","isNot","contains","isIn"].reduce(function(e,r){return e[r]={fn:o,cannotFollow:["text"]},e},{}),["comma","spread","addition","subtraction","multiplication","division"].reduce(function(e,r){return e[r]={fn:o},e},{})));i.push.apply(i,_toConsumableArray(Object.keys(u)).concat(_toConsumableArray(Object.keys(m)),_toConsumableArray(Object.keys(l)))),s.push.apply(s,_toConsumableArray(Object.keys(m)).concat(_toConsumableArray(Object.keys(c))));var g=Object.assign({},u,l,m,c);return Object.keys(g).forEach(function(e){var r=n[e];g[e].pattern="string"!=typeof r?r:new RegExp("^(?:"+r+")","i"),n[e+"Peek"]&&(g[e].peek=n[e+"Peek"])}),Object.assign(e.rules,g),e.modes.start=e.modes.markup=i,e.modes.macro=s,e}function r(r){return Object.freeze({lex:e(r).lex,Patterns:n})}var n=void 0;Object.assign=Object.assign||function(e){for(var r=1;r Command":{name:"display",sig:" String",returnType:"Command",aka:[]},"(print: Any) -> Command":{name:"print",sig:" Any",returnType:"Command",aka:[]},"(show: ...HookName) -> Command":{name:"show",sig:" ...HookName",returnType:"Command",aka:[]},"(go-to: String) -> Command":{name:"go-to",sig:" String",returnType:"Command",aka:[]},"(undo:) -> Command":{name:"undo",sig:"",returnType:"Command",aka:[]},"(live: [Number]) -> Changer":{name:"live",sig:" [Number]",returnType:"Changer",aka:[]},"(stop:) -> Command":{name:"stop",sig:"",returnType:"Command",aka:[]},"(save-game: String, [String]) -> Boolean":{name:"save-game",sig:" String, [String]",returnType:"Boolean",aka:[]},"(load-game: String) -> Command":{name:"load-game",sig:" String",returnType:"Command",aka:[]},"(alert: String) -> Command":{name:"alert",sig:" String",returnType:"Command",aka:[]},"(prompt: String, String) -> String":{name:"prompt",sig:" String, String",returnType:"String",aka:[]},"(confirm: String) -> Boolean":{name:"confirm",sig:" String",returnType:"Boolean",aka:[]},"(open-url: String) -> Command":{name:"open-url",sig:" String",returnType:"Command",aka:[]},"(reload:) -> Command":{name:"reload",sig:"",returnType:"Command",aka:[]},"(goto-url: String) -> Command":{name:"goto-url",sig:" String",returnType:"Command",aka:[]},"(page-url:) -> String":{name:"page-url",sig:"",returnType:"String",aka:[]},"(set: ...VariableToValue) -> Instant":{name:"set",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(put: ...VariableToValue) -> Instant":{name:"put",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(move: ...VariableToValue) -> Instant":{name:"move",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(a: [...Any]) -> Array":{name:"a",sig:" [...Any]",returnType:"Array",aka:[]},"(range: Number, Number) -> Array":{name:"range",sig:" Number, Number",returnType:"Array",aka:[]},"(subarray: Array, Number, Number) -> Array":{name:"subarray",sig:" Array, Number, Number",returnType:"Array",aka:[]},"(shuffled: Any, Any, [...Any]) -> Array":{name:"shuffled",sig:" Any, Any, [...Any]",returnType:"Array",aka:[]},"(sorted: Number or String, ...Number or String) -> Array":{name:"sorted",sig:" Number or String, ...Number or String",returnType:"Array",aka:[]},"(rotated: Number, [...Any]) -> Array":{name:"rotated",sig:" Number, [...Any]",returnType:"Array",aka:[]},"(repeated: Number, ...Any) -> Array":{name:"repeated",sig:" Number, ...Any",returnType:"Array",aka:[]},"(interlaced: Array, ...Array) -> Array":{name:"interlaced",sig:" Array, ...Array",returnType:"Array",aka:[]},"(altered: Lambda, ...Any) -> Array":{name:"altered",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(find: Lambda, ...Any) -> Array":{name:"find",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(all-pass: Lambda, ...Any) -> Boolean":{name:"all-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(some-pass: Lambda, ...Any) -> Boolean":{name:"some-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(none-pass: Lambda, ...Any) -> Boolean":{name:"none-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(folded: Lambda, ...Any) -> Any":{name:"folded",sig:" Lambda, ...Any",returnType:"Any",aka:[]},"(datanames: Datamap) -> Array":{name:"datanames",sig:" Datamap",returnType:"Array",aka:[]},"(datavalues: Datamap) -> Array":{name:"datavalues",sig:" Datamap",returnType:"Array",aka:[]},"(dataentries: Datamap) -> Array":{name:"dataentries",sig:" Datamap",returnType:"Array",aka:[]},"(history:) -> Array":{name:"history",sig:"",returnType:"Array",aka:[]},"(passage: [String]) -> Datamap":{name:"passage",sig:" [String]",returnType:"Datamap",aka:[]},"(saved-games:) -> Datamap":{name:"saved-games",sig:"",returnType:"Datamap",aka:[]},"(dm: [...Any]) -> Datamap":{name:"dm",sig:" [...Any]",returnType:"Datamap",aka:[]},"(ds: [...Any]) -> Dataset":{name:"ds",sig:" [...Any]",returnType:"Dataset",aka:[]},"(count: Array or String, ...Any) -> Number":{name:"count",sig:" Array or String, ...Any",returnType:"Number",aka:[]},"(enchant: HookName or String, Changer) -> Command":{name:"enchant",sig:" HookName or String, Changer",returnType:"Command",aka:[]},"(replace: ...HookName or String) -> Changer":{name:"replace",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(append: ...HookName or String) -> Changer":{name:"append",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(prepend: ...HookName or String) -> Changer":{name:"prepend",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(click: HookName or String) -> Changer":{name:"click",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover: HookName or String) -> Changer":{name:"mouseover",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout: HookName or String) -> Changer":{name:"mouseout",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-replace: HookName or String) -> Changer":{name:"click-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-append: HookName or String) -> Changer":{name:"click-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-prepend: HookName or String) -> Changer":{name:"click-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-replace: HookName or String) -> Changer":{name:"mouseover-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-append: HookName or String) -> Changer":{name:"mouseover-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-prepend: HookName or String) -> Changer":{name:"mouseover-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-replace: HookName or String) -> Changer":{name:"mouseout-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-append: HookName or String) -> Changer":{name:"mouseout-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-prepend: HookName or String) -> Changer":{name:"mouseout-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(link: String) -> Changer":{name:"link",sig:" String",returnType:"Changer",aka:[]},"(link-reveal: String) -> Changer":{name:"link-reveal",sig:" String",returnType:"Changer",aka:[]},"(link-repeat: String) -> Changer":{name:"link-repeat",sig:" String",returnType:"Changer",aka:[]},"(link-goto: String, [String]) -> Command":{name:"link-goto",sig:" String, [String]",returnType:"Command",aka:[]},"(link-undo: String) -> Command":{name:"link-undo",sig:" String",returnType:"Command",aka:[]},"(if: Boolean) -> Changer":{name:"if",sig:" Boolean",returnType:"Changer",aka:[]},"(unless: Boolean) -> Changer":{name:"unless",sig:" Boolean",returnType:"Changer",aka:[]},"(else-if: Boolean) -> Changer":{name:"else-if",sig:" Boolean",returnType:"Changer",aka:[]},"(else:) -> Changer":{name:"else",sig:"",returnType:"Changer",aka:[]},"(hidden:) -> Changer":{name:"hidden",sig:"",returnType:"Changer",aka:[]},"(hook: String) -> Changer":{name:"hook",sig:" String",returnType:"Changer",aka:[]},"(for: Lambda, ...Any) -> Changer":{name:"for",sig:" Lambda, ...Any",returnType:"Changer",aka:[]},"(transition: String) -> Changer":{name:"transition",sig:" String",returnType:"Changer",aka:[]},"(transition-time: Number) -> Changer":{name:"transition-time",sig:" Number",returnType:"Changer",aka:[]},"(font: String) -> Changer":{name:"font",sig:" String",returnType:"Changer",aka:[]},"(align: String) -> Changer":{name:"align",sig:" String",returnType:"Changer",aka:[]},"(text-colour: String or Colour) -> Changer":{name:"text-colour",sig:" String or Colour",returnType:"Changer",aka:["text-color","color"]},"(text-rotate: Number) -> Changer":{name:"text-rotate",sig:" Number",returnType:"Changer",aka:[]},"(background: Colour or String) -> Changer":{name:"background",sig:" Colour or String",returnType:"Changer",aka:[]},"(text-style: String) -> Changer":{name:"text-style",sig:" String",returnType:"Changer",aka:[]},"(hover-style: Changer) -> Changer":{name:"hover-style",sig:" Changer",returnType:"Changer",aka:[]},"(css: String) -> Changer":{name:"css",sig:" String",returnType:"Changer",aka:[]},"(text: ...[Number or String or Boolean or Array]) -> String":{name:"text",sig:" ...[Number or String or Boolean or Array]",returnType:"String",aka:[]},"(substring: String, Number, Number) -> String":{name:"substring",sig:" String, Number, Number",returnType:"String",aka:[]},"(lowercase: String) -> String":{name:"lowercase",sig:" String",returnType:"String",aka:[]},"(uppercase: String) -> String":{name:"uppercase",sig:" String",returnType:"String",aka:[]},"(lowerfirst: String) -> String":{name:"lowerfirst",sig:" String",returnType:"String",aka:[]},"(upperfirst: String) -> String":{name:"upperfirst",sig:" String",returnType:"String",aka:[]},"(words: String) -> Array":{name:"words",sig:" String",returnType:"Array",aka:[]},"(num: String) -> Number":{name:"num",sig:" String",returnType:"Number",aka:[]},"(rgb: Number, Number, Number) -> Colour":{name:"rgb",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(rgba: Number, Number, Number, Number) -> Colour":{name:"rgba",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(hsl: Number, Number, Number) -> Colour":{name:"hsl",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(hsla: Number, Number, Number, Number) -> Colour":{name:"hsla",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(weekday:) -> String":{name:"weekday",sig:"",returnType:"String",aka:[]},"(monthday:) -> Number":{name:"monthday",sig:"",returnType:"Number",aka:[]},"(current-time:) -> String":{name:"current-time",sig:"",returnType:"String",aka:[]},"(current-date:) -> String":{name:"current-date",sig:"",returnType:"String",aka:[]},"(min: ...Number) -> Number":{name:"min",sig:" ...Number",returnType:"Number",aka:[]},"(max: ...Number) -> Number":{name:"max",sig:" ...Number",returnType:"Number",aka:[]},"(abs: Number) -> Number":{name:"abs",sig:" Number",returnType:"Number",aka:[]},"(sign: Number) -> Number":{name:"sign",sig:" Number",returnType:"Number",aka:[]},"(sin: Number) -> Number":{name:"sin",sig:" Number",returnType:"Number",aka:[]},"(cos: Number) -> Number":{name:"cos",sig:" Number",returnType:"Number",aka:[]},"(tan: Number) -> Number":{name:"tan",sig:" Number",returnType:"Number",aka:[]},"(floor: Number) -> Number":{name:"floor",sig:" Number",returnType:"Number",aka:[]},"(round: Number) -> Number":{name:"round",sig:" Number",returnType:"Number",aka:[]},"(ceil: Number) -> Number":{name:"ceil",sig:" Number",returnType:"Number",aka:[]},"(pow: Number, Number) -> Number":{name:"pow",sig:" Number, Number",returnType:"Number",aka:[]},"(exp: Number) -> Number":{name:"exp",sig:" Number",returnType:"Number",aka:[]},"(sqrt: Number) -> Number":{name:"sqrt",sig:" Number",returnType:"Number",aka:[]},"(log: Number) -> Number":{name:"log",sig:" Number",returnType:"Number",aka:[]},"(log10: Number) -> Number":{name:"log10",sig:" Number",returnType:"Number",aka:[]},"(log2: Number) -> Number":{name:"log2",sig:" Number",returnType:"Number",aka:[]},"(random: Number, [Number]) -> Number":{name:"random",sig:" Number, [Number]",returnType:"Number",aka:[]},"(either: ...Any) -> Any":{name:"either",sig:" ...Any",returnType:"Any",aka:[]}},n=r instanceof Object&&Object.keys(r).reduce(function(e,n){return e.concat.apply(e,[r[n].name].concat(_toConsumableArray(r[n].aka)))},[]).map(e),t=void 0;"function"==typeof define&&define.amd?define("markup",[],function(e){t=e.lex}):this&&this.loaded&&this.modules&&(t=this.modules.Markup.lex),window.CodeMirror&&CodeMirror.defineMode("harlowe-2",function(){function r(e,r){if(e.update){var n=e.from.line,t=r.split("\n").slice(0,e.from.line+1);return t[n]=t[n].slice(0,e.from.ch)+e.text[0],t=t.concat(e.text.slice(1)),e.update({line:0,ch:0},e.to,t),t.join("\n")}}function a(e){u.length&&(u.forEach(function(e){return e.clear()}),u=[]);var r=i.tokenAt(e.indexFromPos(e.getCursor()));if(r){if(u.push(e.markText(e.posFromIndex(r.start),e.posFromIndex(r.end),{className:"cm-harlowe-2-cursor"})),"variable"===r.type||"tempVariable"===r.type||"hookRef"===r.type||"hook"===r.type){var n="hook"===r.type?"hookRef":r.type;s[n].forEach(function(n){n!==r&&n.name===r.name&&u.push(e.markText(e.posFromIndex(n.start),e.posFromIndex(n.end),{className:"cm-harlowe-2-variableOccurrence"}))})}("hookRef"===r.type||"hook"===r.type)&&s.hook.forEach(function(n){if(n!==r&&n.name===r.name){var t="appended"===n.tagPosition?n.end-n.name.length-1:n.start+1;u.push(e.markText(e.posFromIndex(t),e.posFromIndex(t+n.name.length),{className:"cm-harlowe-2-hookOccurrence"}))}})}}var o=void 0,i=void 0,s={variable:[],tempVariable:[],hook:[],hookRef:[],populate:function(){var e=this;this.variable=[],this.tempVariable=[],this.hook=[],this.hookRef=[];var r=function r(n){("variable"===n.type||"tempVariable"===n.type||"hook"===n.type||"hookRef"===n.type)&&e[n.type].push(n),n.children.forEach(r)};i.children.forEach(r)}},u=[],l=function(){var e=o.doc;i=t(e.getValue()),s.populate(),e.on("beforeChange",function(n,t){var a=e.getValue();r(t,a)}),e.on("change",function(){var r=e.getValue();i=t(r),s.populate()}),e.on("swapDoc",l),e.on("cursorActivity",a),l=null};return{startState:function(){return o||(o=CodeMirror.modes["harlowe-2"].cm,o.setOption("placeholder",["Enter the body text of your passage here.","''Bold'', //italics//, ^^superscript^^, ~~strikethrough~~, and

HTML tags

are available.","To display special symbols without them being transformed, put them between `backticks`.","To link to another passage, write the link text and the passage name like this: [[link text->passage name]]\nor this: [[passage name<-link text]]\nor this: [[link text]].","Macros like (set:) and (display:) are the programming of your passage. If you've (set:) a $variable, you can just enter its name to print it out.","To make a 'hook', put [single square brackets] around text - or leave it empty [] - then put a macro like (if:), a $variable, or a |nametag> outside the front, |like>[so].","Hooks can be used for many things: showing text (if:) something happened, applying a (text-style:), making a place to (append:) text later on, and much more!","Consult the Harlowe documentation for more information."].join("\n\n")),o.setOption("lineNumbers",!0),o.setOption("lineNumberFormatter",function(){return"\u2022"})),{pos:0}},blankLine:function(e){e.pos++},token:function(r,t){l&&l();var a=i.pathAt(t.pos),o=a[0];if(!o)return t.pos++,r.next(),null;for(;o===o.tokenAt(t.pos)&&!r.eol();)t.pos++,r.next();r.eol()&&t.pos++;for(var s={},u="",m=0;m1&&(g+="-"+s[g]),c){case"macroName":-1===n.indexOf(e(a[m].text.slice(0,-1)))&&(g+=" harlowe-2-error")}u+=g+" "}return u}}});var a=document.querySelector("style#cm-harlowe-2");a||(a=document.createElement("style"),a.setAttribute("id","cm-harlowe-2"),document.head.appendChild(a)),a.innerHTML=function(){var e=function(e,r,n){return function(t){return"background-color: hsla("+e+","+r+"%,"+n+"%,"+t+");"}},r=e(40,100,50),n=e(220,100,50),t=function(r){return e(320,44,50)(r)+"color: #a84186;"},a="color: firebrick !important; background-color: hsla(17, 100%, 74%, 0.74) !important;",o="font-weight:100; color: hsla(0,0,0,0.5)";return{root:"box-sizing:border-box;","cursor:not([class^='cm-harlowe-2-text cm-harlowe-2-root'])":"border-bottom: 2px solid darkgray;",CodeMirror:"padding: 0 !important","CodeMirror-linenumber":"color: #ccc;","CodeMirror-gutters":"left: 0px !important;",hook:r(.05),"hook-2":r(.1),"hook-3":r(.15),"hook-4":r(.2),"hook-5":r(.25),"hook-6":r(.3),"hook-7":r(.35),"hook-8":r(.4),"^=hook , ^=hook-":"font-weight:bold;","error:not([class*='cm-harlowe-2-string'])":a,macro:t(.05),"macro-2":t(.1),"macro-3":t(.15),"macro-4":t(.2),"macro-5":t(.25),"macro-6":t(.3),"macro-7":t(.35),"macro-8":t(.4),macroName:"font-style:italic;","^=macro ":"font-weight:bold;","bold, strong":"font-weight:bold;","italic, em":"font-style:italic;",sup:"vertical-align: super;font-size:0.8em;",strike:"text-decoration: line-through;",verbatim:"background-color: hsla(0,0%,50%,0.1);","^=bold, ^=strong, ^=italic, ^=em, ^=sup, ^=verbatim, ^=strike":o, +window.storyFormat({"name":"Harlowe","version":"2.1.0","author":"Leon Arnott","description":"The default story format for Twine 2. See its documentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n\n\n","setup": function(){"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r-1)||e.cannotFollow&&(-1!==e.cannotFollow.indexOf(n&&n.type)||e.cannotFollow.indexOf("text")>-1&&t)||e.peek&&e.peek.toLowerCase()!==r.slice(0,e.peek.length).toLowerCase())}function t(e){for(var r=e.innerText,t=[],o=0,s=o,u=r.length,l=null;u>o;){for(var m=r.slice(o),c=(t.length?t[0]:e).innerMode,g=0,p=c.length;p>g;g+=1){var d=i[c[g]];if(n(d,m,l,o>s)&&d.pattern.test(m)){var h=d.pattern.exec(m),f=d.fn(h),y=!1,k=0;if(f.matches){for(;k-1&&(k=t.length-1)}if(k>=t.length&&!f.isFront)continue}o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:c}),l=e.addChild(f),o+=l.text.length,s=o,y&&(a(e,l,t[k]),t=t.slice(k+1)),l.isFrontToken()&&t.unshift(l);break}}g===p&&(o+=1,null===l&&(l={type:"text"}))}for(o>s&&e.addChild({type:"text",text:r.slice(s,o),innerMode:(t.length?t[0]:e).innerMode});t.length>0;)t.shift().demote();return e}function a(e,n,t){var a=e.children.indexOf(n),o=e.children.indexOf(t);n.children=e.children.splice(o+1,a-(o+1)),n.children.forEach(function(e){r(n,e)}),n.type=n.matches[t.type],n.innerText="";for(var i=0,s=n.children.length;s>i;i++)n.innerText+=n.children[i].text;n.start=t.start,n.text=t.text+n.innerText+n.text,Object.keys(t).forEach(function(e){Object.hasOwnProperty.call(n,e)||(n[e]=t[e])}),n.isFront&&(n.isFront=!1),e.children.splice(o,1),r(e,n)}var o=void 0,i={};e.prototype={constructor:e,addChild:function(n){var a=this.lastChildEnd(),o=new e({start:a,end:n.text&&a+n.text.length,children:[]},n);return o.innerText&&t(o),this.children.push(o),r(this,o),o},lastChild:function(){return this.children?this.children[this.children.length-1]||null:null},lastChildEnd:function(){var e=this.lastChild();return e?e.end:this.start+Math.max(0,this.text.indexOf(this.innerText))},tokenAt:function(e){if(e=this.end)return null;if(this.childAt)return this.childAt[e]&&this.childAt[e].tokenAt(e)||this;if(this.children.length)for(var r=0;r=this.end)return[];if(this.childAt)return(this.childAt[e]&&this.childAt[e].pathAt(e)||[]).concat(this);var r=[];if(this.children.length)for(var n=0;n=this.end?null:this.children?this.children.reduce(function(r,n){return r||(e>=n.start&&e0&&(e+="["+this.children+"]"),e}},o={lex:function(r,n){return t(new e({type:"root",start:n||0,end:r.length,text:r,innerText:r,children:[],childAt:{},innerMode:o.modes.start}))},rules:i,modes:{}},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=o:"function"==typeof define&&define.amd?define("lexer",[],function(){return o}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Lexer=o):this.TwineLexer=o}).call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(r){return r&&"object"===("undefined"==typeof r?"undefined":_typeof(r))?(Object.keys(r).forEach(function(n){r[n]=e(r[n])}),r):(r+"").replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function r(){return"[^"+Array.apply(0,arguments).map(e).join("")+"]*"}function n(e){return function(){return"("+e+Array.apply(0,arguments).join("|")+")"}}var t=void 0,a=n("?:"),o=n("?!"),i=n("?="),s="[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*",u=s.replace("*","+"),l="\\b",m="\\\\\\n\\\\?|\\n\\\\",c="\\n(?!\\\\)",g="[\\w\\-\\u00c0-\\u00de\\u00df-\\u00ff\\u0150\\u0170\\u0151\\u0171\\uD800-\\uDFFF]",p=g.replace("\\-",""),d=a("\\n","$"),h="("+a(m,"[^\\n]")+"+)",f="\\*",y=s+"("+f+"+)"+u+h+d,k="(?:0\\.)",b=s+"("+k+"+)"+u+h+d,N=s+"-{3,}"+s+d,C=s+"(#{1,6})"+s+h+d,T=s+"(==+>|<=+|=+><=+|<==+>)"+s+d,S=s+"(=+\\|+|\\|+=+|=+\\|+=+|\\|=+\\|)"+s+d,v={opener:"\\[\\[(?!\\[)",text:"("+r("]")+")",rightSeparator:a("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+a("[^\\|\\]]","\\]"+o("\\]"))+"+)"},x=p+"*"+p.replace("\\w","a-zA-Z")+p+"*",A="\\$("+x+")",w="'s"+u+"("+x+")",O="("+x+")"+u+"of"+l+o("it"+l),F="'s"+u,L="of"+l,P=a("it","time")+l,H="its"+u+"("+x+")",j="its"+u,B="("+x+")"+u+"of"+u+"it"+l,M="of"+l+u+"it"+l,V={opener:"\\(",name:"("+a(g+"+",A)+"):"+o("\\/"),closer:"\\)"},I="<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",D=a("=<","=>","[gl]te?"+l,"n?eq"+l,"isnot"+l,"are"+l,"x"+l),E={name:"[a-zA-Z][\\w\\-]*",attrs:"(?:\"[^\"]*\"|'[^']*'|[^'\">])*?"},_="\\|("+g+"+)(>|\\))",R="(<|\\()("+g+"+)\\|",q="_("+x+")"+l,$="\\b(\\d+(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?)"+o("m?s")+l;v.main=v.opener+a(v.text+v.rightSeparator,v.text.replace("*","*?")+v.leftSeparator)+v.text,t={upperLetter:"[A-Z\\u00c0-\\u00de\\u0150\\u0170]",lowerLetter:"[a-z0-9_\\-\\u00df-\\u00ff\\u0151\\u0171]",anyLetter:g,anyLetterStrict:p,whitespace:u,escapedLine:m,br:c,commentFront:"",tag:"<\\/?"+E.name+E.attrs+">",tagPeek:"<",scriptStyleTag:"<("+a("script","style")+")"+E.attrs+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+a("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:f,hr:N,heading:C,align:T,column:S,bulleted:y,numbered:b,strikeOpener:e("~~"),italicOpener:e("//"),boldOpener:e("''"),supOpener:e("^^"),strongFront:e("**"),strongBack:e("**"),emFront:e("*"),emBack:e("*"),verbatimOpener:"`+",collapsedFront:"{",collapsedBack:"}",hookAppendedFront:"\\[",hookPrependedFront:_+"\\[",hookFront:"\\[",hookBack:"\\]"+o(R),hookAppendedBack:"\\]"+R,passageLink:v.main+v.closer,passageLinkPeek:"[[",legacyLink:v.opener+v.legacyText+v.legacySeparator+v.legacyText+v.closer,legacyLinkPeek:"[[",simpleLink:v.opener+v.legacyText+v.closer,simpleLinkPeek:"[[",macroFront:V.opener+i(V.name),macroFrontPeek:"(",macroName:V.name,groupingFront:"\\("+o(V.name),groupingFrontPeek:"(",groupingBack:"\\)",twine1Macro:I,twine1MacroPeek:"<<",property:w,propertyPeek:"'s",belongingProperty:O,possessiveOperator:F,belongingOperator:L,belongingOperatorPeek:"of",itsOperator:j,itsOperatorPeek:"its",belongingItOperator:M,belongingItOperatorPeek:"of",variable:A,variablePeek:"$",tempVariable:q,tempVariablePeek:"_",hookRef:"\\?("+g+"+)\\b",hookRefPeek:"?",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)"+l,colour:a(a("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),number:$,boolean:a("true","false")+l,identifier:P,itsProperty:H,itsPropertyPeek:"its",belongingItProperty:B,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',is:"is"+o(u+"not",u+"in",u+"<",u+">")+l,isNot:"is"+u+"not"+l,and:"and"+l,or:"or"+l,not:"not"+l,inequality:"((?:is(?:"+u+"not)?"+s+")*)("+a("<(?!=)","<=",">(?!=)",">=")+")",isIn:"is"+u+"in"+l,contains:"contains"+l,addition:e("+")+o("="),subtraction:e("-")+o("="),multiplication:e("*")+o("="),division:a("/","%")+o("="),comma:",",spread:"\\.\\.\\."+o("\\."),to:a("to"+l,"="),into:"into"+l,making:"making"+l,where:"where"+l,via:"via"+l,with:"with"+l,each:"each"+l,augmentedAssign:a("\\+","\\-","\\*","\\/","%")+"=",incorrectOperator:D},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=t:"function"==typeof define&&define.amd?define("patterns",[],function(){return t}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=t):this.Patterns=t}.call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(e){function r(e){return e=e||"innerText",function(r){var n=r.reduceRight(function(e,r,n){return e||(n?r:"")},""),t={};return t[e]=n,t}}function t(e,r){var n={};return n[e]=r,function(){return{isFront:!0,matches:n,cannotCross:["verbatimOpener"]}}}function a(e,r){return Object.keys(r).forEach(function(n){var t=r[n].fn;r[n].fn=function(r){var a=t(r);return a.text||(a.text=r[0]),a.type||(a.type=n),a.innerMode||(a.innerMode=e),a}}),r}var o=Object.bind(0,null),i=[],s=[],u=a(i,{hr:{fn:o},bulleted:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},numbered:{fn:function(e){return{depth:e[1].length/2,innerText:e[2]}}},heading:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},align:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("><");return~t?(r=Math.round(t/(n.length-2)*50),25===r&&(r="center")):"<"===n[0]&&">"===n.slice(-1)?r="justify":n.indexOf(">")>-1?r="right":n.indexOf("<")>-1&&(r="left"),{align:r}}},column:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("|");return t&&t-1}}},augmentedAssign:{fn:function(e){return{operator:e[0][0]}}},identifier:{fn:r("name"),cannotFollow:["text"]},whitespace:{fn:o,cannotFollow:"text"},incorrectOperator:{fn:function(e){var r={"=>":">=","=<":"<=",gte:">=",lte:"<=",gt:">",lt:"<",eq:"is",isnot:"is not",neq:"is not",are:"is",x:"*"}[e[0].toLowerCase()];return{type:"error",message:"Please say "+(r?"'"+r+"'":"something else")+" instead of '"+e[0]+"'."}},cannotFollow:"text"}},["boolean","is","to","into","where","via","with","making","each","and","or","not","isNot","contains","isIn"].reduce(function(e,r){return e[r]={fn:o,cannotFollow:["text"]},e},{}),["comma","spread","addition","subtraction","multiplication","division"].reduce(function(e,r){return e[r]={fn:o},e},{})));i.push.apply(i,_toConsumableArray(Object.keys(u)).concat(_toConsumableArray(Object.keys(m)),_toConsumableArray(Object.keys(l)))),s.push.apply(s,_toConsumableArray(Object.keys(m)).concat(_toConsumableArray(Object.keys(c))));var g=Object.assign({},u,l,m,c);return Object.keys(g).forEach(function(e){var r=n[e];g[e].pattern="string"!=typeof r?r:new RegExp("^(?:"+r+")","i"),n[e+"Peek"]&&(g[e].peek=n[e+"Peek"])}),Object.assign(e.rules,g),e.modes.start=e.modes.markup=i,e.modes.macro=s,e}function r(r){return Object.freeze({lex:e(r).lex,Patterns:n})}var n=void 0;Object.assign=Object.assign||function(e){for(var r=1;r Command":{name:"display",sig:" String",returnType:"Command",aka:[]},"(print: Any) -> Command":{name:"print",sig:" Any",returnType:"Command",aka:[]},"(show: ...HookName) -> Command":{name:"show",sig:" ...HookName",returnType:"Command",aka:[]},"(go-to: String) -> Command":{name:"go-to",sig:" String",returnType:"Command",aka:[]},"(undo:) -> Command":{name:"undo",sig:"",returnType:"Command",aka:[]},"(live: [Number]) -> Changer":{name:"live",sig:" [Number]",returnType:"Changer",aka:[]},"(stop:) -> Command":{name:"stop",sig:"",returnType:"Command",aka:[]},"(save-game: String, [String]) -> Boolean":{name:"save-game",sig:" String, [String]",returnType:"Boolean",aka:[]},"(load-game: String) -> Command":{name:"load-game",sig:" String",returnType:"Command",aka:[]},"(alert: String) -> Command":{name:"alert",sig:" String",returnType:"Command",aka:[]},"(prompt: String, String) -> String":{name:"prompt",sig:" String, String",returnType:"String",aka:[]},"(confirm: String) -> Boolean":{name:"confirm",sig:" String",returnType:"Boolean",aka:[]},"(open-url: String) -> Command":{name:"open-url",sig:" String",returnType:"Command",aka:[]},"(reload:) -> Command":{name:"reload",sig:"",returnType:"Command",aka:[]},"(goto-url: String) -> Command":{name:"goto-url",sig:" String",returnType:"Command",aka:[]},"(page-url:) -> String":{name:"page-url",sig:"",returnType:"String",aka:[]},"(set: ...VariableToValue) -> Instant":{name:"set",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(put: ...VariableToValue) -> Instant":{name:"put",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(move: ...VariableToValue) -> Instant":{name:"move",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(a: [...Any]) -> Array":{name:"a",sig:" [...Any]",returnType:"Array",aka:[]},"(range: Number, Number) -> Array":{name:"range",sig:" Number, Number",returnType:"Array",aka:[]},"(subarray: Array, Number, Number) -> Array":{name:"subarray",sig:" Array, Number, Number",returnType:"Array",aka:[]},"(shuffled: Any, Any, [...Any]) -> Array":{name:"shuffled",sig:" Any, Any, [...Any]",returnType:"Array",aka:[]},"(sorted: Number or String, ...Number or String) -> Array":{name:"sorted",sig:" Number or String, ...Number or String",returnType:"Array",aka:[]},"(rotated: Number, [...Any]) -> Array":{name:"rotated",sig:" Number, [...Any]",returnType:"Array",aka:[]},"(repeated: Number, ...Any) -> Array":{name:"repeated",sig:" Number, ...Any",returnType:"Array",aka:[]},"(interlaced: Array, ...Array) -> Array":{name:"interlaced",sig:" Array, ...Array",returnType:"Array",aka:[]},"(altered: Lambda, ...Any) -> Array":{name:"altered",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(find: Lambda, ...Any) -> Array":{name:"find",sig:" Lambda, ...Any",returnType:"Array",aka:[]},"(all-pass: Lambda, ...Any) -> Boolean":{name:"all-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(some-pass: Lambda, ...Any) -> Boolean":{name:"some-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(none-pass: Lambda, ...Any) -> Boolean":{name:"none-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(folded: Lambda, ...Any) -> Any":{name:"folded",sig:" Lambda, ...Any",returnType:"Any",aka:[]},"(datanames: Datamap) -> Array":{name:"datanames",sig:" Datamap",returnType:"Array",aka:[]},"(datavalues: Datamap) -> Array":{name:"datavalues",sig:" Datamap",returnType:"Array",aka:[]},"(dataentries: Datamap) -> Array":{name:"dataentries",sig:" Datamap",returnType:"Array",aka:[]},"(history:) -> Array":{name:"history",sig:"",returnType:"Array",aka:[]},"(passage: [String]) -> Datamap":{name:"passage",sig:" [String]",returnType:"Datamap",aka:[]},"(saved-games:) -> Datamap":{name:"saved-games",sig:"",returnType:"Datamap",aka:[]},"(dm: [...Any]) -> Datamap":{name:"dm",sig:" [...Any]",returnType:"Datamap",aka:[]},"(ds: [...Any]) -> Dataset":{name:"ds",sig:" [...Any]",returnType:"Dataset",aka:[]},"(count: Array or String, ...Any) -> Number":{name:"count",sig:" Array or String, ...Any",returnType:"Number",aka:[]},"(enchant: HookName or String, Changer) -> Command":{name:"enchant",sig:" HookName or String, Changer",returnType:"Command",aka:[]},"(replace: ...HookName or String) -> Changer":{name:"replace",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(append: ...HookName or String) -> Changer":{name:"append",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(prepend: ...HookName or String) -> Changer":{name:"prepend",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(click: HookName or String) -> Changer":{name:"click",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover: HookName or String) -> Changer":{name:"mouseover",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout: HookName or String) -> Changer":{name:"mouseout",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-replace: HookName or String) -> Changer":{name:"click-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-append: HookName or String) -> Changer":{name:"click-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-prepend: HookName or String) -> Changer":{name:"click-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-replace: HookName or String) -> Changer":{name:"mouseover-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-append: HookName or String) -> Changer":{name:"mouseover-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-prepend: HookName or String) -> Changer":{name:"mouseover-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-replace: HookName or String) -> Changer":{name:"mouseout-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-append: HookName or String) -> Changer":{name:"mouseout-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-prepend: HookName or String) -> Changer":{name:"mouseout-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(link: String) -> Changer":{name:"link",sig:" String",returnType:"Changer",aka:[]},"(link-reveal: String) -> Changer":{name:"link-reveal",sig:" String",returnType:"Changer",aka:[]},"(link-repeat: String) -> Changer":{name:"link-repeat",sig:" String",returnType:"Changer",aka:[]},"(link-goto: String, [String]) -> Command":{name:"link-goto",sig:" String, [String]",returnType:"Command",aka:[]},"(link-undo: String) -> Command":{name:"link-undo",sig:" String",returnType:"Command",aka:[]},"(if: Boolean) -> Changer":{name:"if",sig:" Boolean",returnType:"Changer",aka:[]},"(unless: Boolean) -> Changer":{name:"unless",sig:" Boolean",returnType:"Changer",aka:[]},"(else-if: Boolean) -> Changer":{name:"else-if",sig:" Boolean",returnType:"Changer",aka:[]},"(else:) -> Changer":{name:"else",sig:"",returnType:"Changer",aka:[]},"(hidden:) -> Changer":{name:"hidden",sig:"",returnType:"Changer",aka:[]},"(hook: String) -> Changer":{name:"hook",sig:" String",returnType:"Changer",aka:[]},"(for: Lambda, ...Any) -> Changer":{name:"for",sig:" Lambda, ...Any",returnType:"Changer",aka:[]},"(transition: String) -> Changer":{name:"transition",sig:" String",returnType:"Changer",aka:[]},"(transition-time: Number) -> Changer":{name:"transition-time",sig:" Number",returnType:"Changer",aka:[]},"(font: String) -> Changer":{name:"font",sig:" String",returnType:"Changer",aka:[]},"(align: String) -> Changer":{name:"align",sig:" String",returnType:"Changer",aka:[]},"(text-colour: String or Colour) -> Changer":{name:"text-colour",sig:" String or Colour",returnType:"Changer",aka:["text-color","color"]},"(text-rotate: Number) -> Changer":{name:"text-rotate",sig:" Number",returnType:"Changer",aka:[]},"(background: Colour or String) -> Changer":{name:"background",sig:" Colour or String",returnType:"Changer",aka:[]},"(text-style: String) -> Changer":{name:"text-style",sig:" String",returnType:"Changer",aka:[]},"(hover-style: Changer) -> Changer":{name:"hover-style",sig:" Changer",returnType:"Changer",aka:[]},"(css: String) -> Changer":{name:"css",sig:" String",returnType:"Changer",aka:[]},"(text: ...[Number or String or Boolean or Array]) -> String":{name:"text",sig:" ...[Number or String or Boolean or Array]",returnType:"String",aka:[]},"(substring: String, Number, Number) -> String":{name:"substring",sig:" String, Number, Number",returnType:"String",aka:[]},"(lowercase: String) -> String":{name:"lowercase",sig:" String",returnType:"String",aka:[]},"(uppercase: String) -> String":{name:"uppercase",sig:" String",returnType:"String",aka:[]},"(lowerfirst: String) -> String":{name:"lowerfirst",sig:" String",returnType:"String",aka:[]},"(upperfirst: String) -> String":{name:"upperfirst",sig:" String",returnType:"String",aka:[]},"(words: String) -> Array":{name:"words",sig:" String",returnType:"Array",aka:[]},"(num: String) -> Number":{name:"num",sig:" String",returnType:"Number",aka:[]},"(rgb: Number, Number, Number) -> Colour":{name:"rgb",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(rgba: Number, Number, Number, Number) -> Colour":{name:"rgba",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(hsl: Number, Number, Number) -> Colour":{name:"hsl",sig:" Number, Number, Number",returnType:"Colour",aka:[]},"(hsla: Number, Number, Number, Number) -> Colour":{name:"hsla",sig:" Number, Number, Number, Number",returnType:"Colour",aka:[]},"(weekday:) -> String":{name:"weekday",sig:"",returnType:"String",aka:[]},"(monthday:) -> Number":{name:"monthday",sig:"",returnType:"Number",aka:[]},"(current-time:) -> String":{name:"current-time",sig:"",returnType:"String",aka:[]},"(current-date:) -> String":{name:"current-date",sig:"",returnType:"String",aka:[]},"(min: ...Number) -> Number":{name:"min",sig:" ...Number",returnType:"Number",aka:[]},"(max: ...Number) -> Number":{name:"max",sig:" ...Number",returnType:"Number",aka:[]},"(abs: Number) -> Number":{name:"abs",sig:" Number",returnType:"Number",aka:[]},"(sign: Number) -> Number":{name:"sign",sig:" Number",returnType:"Number",aka:[]},"(sin: Number) -> Number":{name:"sin",sig:" Number",returnType:"Number",aka:[]},"(cos: Number) -> Number":{name:"cos",sig:" Number",returnType:"Number",aka:[]},"(tan: Number) -> Number":{name:"tan",sig:" Number",returnType:"Number",aka:[]},"(floor: Number) -> Number":{name:"floor",sig:" Number",returnType:"Number",aka:[]},"(round: Number) -> Number":{name:"round",sig:" Number",returnType:"Number",aka:[]},"(ceil: Number) -> Number":{name:"ceil",sig:" Number",returnType:"Number",aka:[]},"(pow: Number, Number) -> Number":{name:"pow",sig:" Number, Number",returnType:"Number",aka:[]},"(exp: Number) -> Number":{name:"exp",sig:" Number",returnType:"Number",aka:[]},"(sqrt: Number) -> Number":{name:"sqrt",sig:" Number",returnType:"Number",aka:[]},"(log: Number) -> Number":{name:"log",sig:" Number",returnType:"Number",aka:[]},"(log10: Number) -> Number":{name:"log10",sig:" Number",returnType:"Number",aka:[]},"(log2: Number) -> Number":{name:"log2",sig:" Number",returnType:"Number",aka:[]},"(random: Number, [Number]) -> Number":{name:"random",sig:" Number, [Number]",returnType:"Number",aka:[]},"(either: ...Any) -> Any":{name:"either",sig:" ...Any",returnType:"Any",aka:[]}},n=r instanceof Object&&Object.keys(r).reduce(function(e,n){return e.concat.apply(e,[r[n].name].concat(_toConsumableArray(r[n].aka)))},[]).map(e),t=void 0;"function"==typeof define&&define.amd?define("markup",[],function(e){t=e.lex}):this&&this.loaded&&this.modules&&(t=this.modules.Markup.lex),window.CodeMirror&&CodeMirror.defineMode("harlowe-2",function(){function r(e,r){if(e.update){var n=e.from.line,t=r.split("\n").slice(0,e.from.line+1);return t[n]=t[n].slice(0,e.from.ch)+e.text[0],t=t.concat(e.text.slice(1)),e.update({line:0,ch:0},e.to,t),t.join("\n")}}function a(e){u.length&&(u.forEach(function(e){return e.clear()}),u=[]);var r=i.tokenAt(e.indexFromPos(e.getCursor()));if(r){if(u.push(e.markText(e.posFromIndex(r.start),e.posFromIndex(r.end),{className:"cm-harlowe-2-cursor"})),"variable"===r.type||"tempVariable"===r.type||"hookRef"===r.type||"hook"===r.type){var n="hook"===r.type?"hookRef":r.type;s[n].forEach(function(n){n!==r&&n.name===r.name&&u.push(e.markText(e.posFromIndex(n.start),e.posFromIndex(n.end),{className:"cm-harlowe-2-variableOccurrence"}))})}("hookRef"===r.type||"hook"===r.type)&&s.hook.forEach(function(n){if(n!==r&&n.name===r.name){var t="appended"===n.tagPosition?n.end-n.name.length-1:n.start+1;u.push(e.markText(e.posFromIndex(t),e.posFromIndex(t+n.name.length),{className:"cm-harlowe-2-hookOccurrence"}))}})}}var o=void 0,i=void 0,s={variable:[],tempVariable:[],hook:[],hookRef:[],populate:function(){var e=this;this.variable=[],this.tempVariable=[],this.hook=[],this.hookRef=[];var r=function r(n){("variable"===n.type||"tempVariable"===n.type||"hook"===n.type||"hookRef"===n.type)&&e[n.type].push(n),n.children.forEach(r)};i.children.forEach(r)}},u=[],l=function(){var e=o.doc;i=t(e.getValue()),s.populate(),e.on("beforeChange",function(n,t){var a=e.getValue();r(t,a)}),e.on("change",function(){var r=e.getValue();i=t(r),s.populate()}),e.on("swapDoc",l),e.on("cursorActivity",a),l=null};return{startState:function(){return o||(o=CodeMirror.modes["harlowe-2"].cm,o.setOption("placeholder",["Enter the body text of your passage here.","''Bold'', //italics//, ^^superscript^^, ~~strikethrough~~, and

HTML tags

are available.","To display special symbols without them being transformed, put them between `backticks`.","To link to another passage, write the link text and the passage name like this: [[link text->passage name]]\nor this: [[passage name<-link text]]\nor this: [[link text]].","Macros like (set:) and (display:) are the programming of your passage. If you've (set:) a $variable, you can just enter its name to print it out.","To make a 'hook', put [single square brackets] around text - or leave it empty [] - then put a macro like (if:), a $variable, or a |nametag> outside the front, |like>[so].","Hooks can be used for many things: showing text (if:) something happened, applying a (text-style:), making a place to (append:) text later on, and much more!","Consult the Harlowe documentation for more information."].join("\n\n")),o.setOption("lineNumbers",!0),o.setOption("lineNumberFormatter",function(){return"\u2022"})),{pos:0}},blankLine:function(e){e.pos++},token:function(r,t){l&&l();var a=i.pathAt(t.pos),o=a[0];if(!o)return t.pos++,r.next(),null;for(;o===o.tokenAt(t.pos)&&!r.eol();)t.pos++,r.next();r.eol()&&t.pos++;for(var s={},u="",m=0;m1&&(g+="-"+s[g]),c){case"macroName":-1===n.indexOf(e(a[m].text.slice(0,-1)))&&(g+=" harlowe-2-error")}u+=g+" "}return u}}});var a=document.querySelector("style#cm-harlowe-2");a||(a=document.createElement("style"),a.setAttribute("id","cm-harlowe-2"),document.head.appendChild(a)),a.innerHTML=function(){var e=function(e,r,n){return function(t){return"background-color: hsla("+e+","+r+"%,"+n+"%,"+t+");"}},r=e(40,100,50),n=e(220,100,50),t=function(r){return e(320,44,50)(r)+"color: #a84186;"},a="color: firebrick !important; background-color: hsla(17, 100%, 74%, 0.74) !important;",o="font-weight:100; color: hsla(0,0,0,0.5)";return{root:"box-sizing:border-box;","cursor:not([class^='cm-harlowe-2-text cm-harlowe-2-root'])":"border-bottom: 2px solid darkgray;",CodeMirror:"padding: 0 !important","CodeMirror-linenumber":"color: #ccc;","CodeMirror-gutters":"left: 0px !important;",hook:r(.05),"hook-2":r(.1),"hook-3":r(.15),"hook-4":r(.2),"hook-5":r(.25),"hook-6":r(.3),"hook-7":r(.35),"hook-8":r(.4),"^=hook , ^=hook-":"font-weight:bold;","error:not([class*='cm-harlowe-2-string'])":a,macro:t(.05),"macro-2":t(.1),"macro-3":t(.15),"macro-4":t(.2),"macro-5":t(.25),"macro-6":t(.3),"macro-7":t(.35),"macro-8":t(.4),macroName:"font-style:italic;","^=macro ":"font-weight:bold;","bold, strong":"font-weight:bold;","italic, em":"font-style:italic;",sup:"vertical-align: super;font-size:0.8em;",strike:"text-decoration: line-through;",verbatim:"background-color: hsla(0,0%,50%,0.1);","^=bold, ^=strong, ^=italic, ^=em, ^=sup, ^=verbatim, ^=strike":o, "^=string":"font-style:italic; display:inline-block; transform: scaleX(-1);","string + ^=string":"transform: none;","^=collapsed":"font-weight:bold; color: hsl(201, 100%, 30%);",collapsed:n(.025),"collapsed.hook":n(.05),"collapsed.hook-2":n(.1),"collapsed.hook-3":n(.15),"collapsed.hook-4":n(.2),"collapsed.hook-5":n(.25),"collapsed.hook-6":n(.3),"collapsed.hook-7":n(.35),"collapsed.hook-8":n(.4),"twineLink:not(.text)":"color: #3333cc;",tag:"color: #4d4d9d;",boolean:"color: #626262;",string:"color: #008282;",number:"color: #A15000;",variable:"color: #0076b2;",tempVariable:"color: #1a6e97;",hookRef:"color: #007f54;","variableOccurrence, hookOccurrence":"background: #9fdfc9 !important;",where:"color: #007f00; font-style:italic;",via:"color: #007f00; font-style:italic;",with:"color: #007f00; font-style:italic;",making:"color: #007f00; font-style:italic;",each:"color: #007f00; font-style:italic;",heading:"font-weight:bold;",hr:"display:block; background-image: linear-gradient(0deg, transparent, transparent 45%, silver 45%, transparent 55%, transparent);",align:"display:block; color: hsl(14, 99%, 37%); background-color: hsla(14, 99%, 87%, 0.2);",column:"display:block; color: hsl(204, 99%, 37%); background-color: hsla(204, 99%, 87%, 0.2);",escapedLine:"font-weight:bold; color: hsl(51, 100%, 30%);","identifier, property, belongingProperty, itsProperty, belongingItProperty, belongingItOperator":"color: #0076b2;",toString:function(){var e=this;return Object.keys(this).reduce(function(r,n){var t;return"toString"===n?r:"CodeMirror"===n.slice(0,10)?r+"."+n+"{"+e[n]+"}":(t=n.split(", ").map(function e(r){return r.indexOf(".")>-1?r.split(/\./g).map(e).join(""):r.indexOf(" + ")>-1?r.split(/ \+ /g).map(e).join(" + "):0===r.indexOf("^=")?"[class^='cm-harlowe-2-"+r.slice(2)+"']":".cm-harlowe-2-"+r}),r+t.join(", ")+"{"+e[n]+"}")},"")}}+""}()}.call(eval("this"));}}); \ No newline at end of file From 1371556a628e1ade4343fd2aab8d3da83269f55c Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Thu, 14 Dec 2017 21:11:18 -0500 Subject: [PATCH 10/12] Update default Harlowe format version --- src/data/actions/story-format.js | 6 +++--- src/data/actions/story-format.spec.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/data/actions/story-format.js b/src/data/actions/story-format.js index 945079405..7715e4cde 100644 --- a/src/data/actions/story-format.js +++ b/src/data/actions/story-format.js @@ -175,8 +175,8 @@ const actions = module.exports = { }, { name: 'Harlowe', - url: 'story-formats/harlowe-2.0.1/format.js', - version: '2.0.1', + url: 'story-formats/harlowe-2.1.0/format.js', + version: '2.1.0', userAdded: false }, { @@ -223,7 +223,7 @@ const actions = module.exports = { setPref( store, 'defaultFormat', - { name: 'Harlowe', version: '2.0.1' } + { name: 'Harlowe', version: '2.1.0' } ); } diff --git a/src/data/actions/story-format.spec.js b/src/data/actions/story-format.spec.js index 96194bae9..6a2ff97af 100644 --- a/src/data/actions/story-format.spec.js +++ b/src/data/actions/story-format.spec.js @@ -64,9 +64,9 @@ describe('story format actions module', () => { expect(created['Harlowe-1.2.4']).to.exist; expect(created['Harlowe-1.2.4'].url).to.equal('story-formats/harlowe-1.2.4/format.js'); expect(created['Harlowe-1.2.4'].userAdded).to.be.false; - expect(created['Harlowe-2.0.1']).to.exist; - expect(created['Harlowe-2.0.1'].url).to.equal('story-formats/harlowe-2.0.1/format.js'); - expect(created['Harlowe-2.0.1'].userAdded).to.be.false; + expect(created['Harlowe-2.1.0']).to.exist; + expect(created['Harlowe-2.1.0'].url).to.equal('story-formats/harlowe-2.1.0/format.js'); + expect(created['Harlowe-2.1.0'].userAdded).to.be.false; expect(created['Paperthin-1.0.0']).to.exist; expect(created['Paperthin-1.0.0'].url).to.equal('story-formats/paperthin-1.0.0/format.js'); expect(created['Paperthin-1.0.0'].userAdded).to.be.false; From cf318df52bd5629e63d5d7ac91d0b6ad45182857 Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Thu, 14 Dec 2017 21:15:28 -0500 Subject: [PATCH 11/12] Fix one stray reference to old Harlowe version in tests --- src/data/actions/story-format.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/actions/story-format.spec.js b/src/data/actions/story-format.spec.js index 6a2ff97af..8dc5231ca 100644 --- a/src/data/actions/story-format.spec.js +++ b/src/data/actions/story-format.spec.js @@ -95,7 +95,7 @@ describe('story format actions module', () => { actions.repairFormats(formatsStore); expect(formatsStore.dispatch.calledWith( - 'UPDATE_PREF', 'defaultFormat', { name: 'Harlowe', version: '2.0.1' } + 'UPDATE_PREF', 'defaultFormat', { name: 'Harlowe', version: '2.1.0' } )).to.be.true; expect(formatsStore.dispatch.calledWith( 'UPDATE_PREF', 'proofingFormat', { name: 'Paperthin', version: '1.0.0' } From 1c293d588e53a153aacd766138707814f20e17ea Mon Sep 17 00:00:00 2001 From: Chris Klimas <1405578+klembot@users.noreply.github.com> Date: Thu, 14 Dec 2017 21:20:13 -0500 Subject: [PATCH 12/12] Bump version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 312d662ce..929294503 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Twine", - "version": "2.2.0-beta1", + "version": "2.2.0", "author": "Chris Klimas ", "description": "a GUI for creating nonlinear stories", "license": "GPL-3.0",

p+G41~G%Chai9txPk3s0` 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%0AZY3$bl1 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 NQv#r66Z*UH{{d6>!>RxP literal 0 HcmV?d00001 diff --git a/src/nw/index.js b/src/nw/index.js new file mode 100644 index 000000000..fd1f32d1f --- /dev/null +++ b/src/nw/index.js @@ -0,0 +1,250 @@ +/** + A singleton that adapts the Twine interface for NW.js, adding menus and + syncing changes to the filesystem. This takes the approach of patching + existing classes instead of creating a separate set of classes just for NW.js, + to try to keep things as similar as possible. + + @module nwui +**/ + +module.exports = { + /** + Performs one-time initialization, e.g. setting up menus. This should be + called as early in the app initialization process as possible. + @return {Promise} Resolves only after initialization completes successfully + **/ + + init() { + return new Promise(resolve => { + /* eslint-disable no-inner-declarations */ + + /* + If we're not running in an NW.js context, do nothing. + */ + + try { + require('nw.gui'); + } + catch (e) { + resolve(); + return; + } + + /* + If we're not the story list, e.g. another window opened in NW for + playing a story, then skip initialization. + */ + + if (window.location.hash !== '') { + resolve(); + return; + } + + require('core-js'); + require('./index.less'); + + const startupErrorTemplate = require('./startup-error.ejs'); + let startupTask = 'beginning startup tasks'; + + try { + const gui = require('nw.gui'); + const mkdirp = require('mkdirp'); + const directories = require('./directories'); + const locale = require('../locale'); + const menus = require('./menus'); + const patchQuotaGauge = require('./patches/quota-gauge'); + const patchStore = require('./patches/store'); + const patchStoryListToolbar = require('./patches/story-list-toolbar'); + const patchWelcomeView = require('./patches/welcome-view'); + const saveQueue = require('./save-queue'); + const storyFile = require('./story-file'); + + const win = gui.Window.get(); + + /* + Load our locale. This must happen right away, as it's used for + directories and such. Because the rest of the app has not yet + initialized, we need to fish out the user preference manually, + which is rather ugly. + + This is mostly cribbed from data/local-storage/pref.js. + */ + + const serialized = window.localStorage.getItem('twine-prefs'); + + if (serialized) { + let localeFound = false; + + serialized.split(',').forEach(id => { + if (localeFound) { + return; + } + + try { + const item = JSON.parse( + window.localStorage.getItem('twine-prefs-' + id) + ); + + if (item.name === 'locale') { + localeFound = true; + locale.load(item.value, finishInit); + } + } + catch (e) { + /* Skip a bad value. */ + } + }); + + if (!localeFound) { + finishInit(); + } + } + else { + finishInit(); + } + + function finishInit() { + try { + /* Set up our menus. */ + + startupTask = 'setting up menus'; + menus.addTo(win); + + /* Show the window once we've finished loading. */ + + startupTask = 'setting window properties'; + + win.on('loaded', () => { + win.show(); + win.focus(); + }); + + /* + Add a shift-ctrl-alt-D shortcut for displaying dev + tools. Note: this is deprecated as NW.js now lets you + press F12 anywhere. + */ + + startupTask = 'adding the debugger keyboard shortcut'; + + document.addEventListener('keyup', e => { + if (e.which === 68 && e.shiftKey && e.altKey + && e.ctrlKey) { + win.showDevTools(); + } + }); + + /* Create ~/Documents/Twine if it doesn't exist. */ + + startupTask = 'checking for the presence of a Documents or My ' + + 'Documents directory in your user directory'; + + // FIXME: this is happening before the locale is loaded, + // and accordingly, is broken + + mkdirp.sync(directories.storiesPath()); + + /* Open external links outside the app. */ + + startupTask = 'setting up a handler for external links'; + + document.addEventListener('click', function(e) { + if (e.target.nodeName === 'A') { + const url = e.target.getAttribute('url'); + + if (typeof url == 'string' && url.match(/^https?:/)) { + gui.Shell.openExternal(url); + e.preventDefault(); + } + } + }); + + /* When quitting, unlock the story directory. */ + + startupTask = 'setting up shutdown tasks'; + + gui.Window.get().on('close', function() { + saveQueue.flush(); + directories.unlockStories(); + this.close(true); + }); + + /* + Do a file sync if we're just starting up. We have to + track this in the global scope; otherwise, each new + window will think it's starting afresh and screw up our + model IDs. + */ + + startupTask = 'initially synchronizing story files'; + storyFile.loadAll(); + startupTask = 'initially locking your Stories directory'; + directories.lockStories(); + + /* + Monkey patch the store module to save to a file under + ~/Documents/Twine whenever a story changes, or delete it + when it is deleted. + */ + + startupTask = 'adding a hook to automatically save stories'; + patchStore(require('../data/store')); + + /* + Monkey patch QuotaGauge to hide itself, since we don't + have to sweat quota ourselves. + */ + + startupTask = 'disabling the storage quota meter'; + patchQuotaGauge(require('../ui/quota-gauge')); + + /* + Monkey patch StoryListToolbar to open the wiki in the + user's browser. + */ + + startupTask = 'setting up the Help link'; + patchStoryListToolbar(require('../story-list-view/list-toolbar')); + + /* + Monkey patch WelcomeView to hide information related to + local storage. + */ + + startupTask = 'customizing the initial welcome page'; + patchWelcomeView(require('../welcome')); + + resolve(); + } + catch (e) { + showCrash(e); + throw e; + } + } + } + catch (e) { + showCrash(e); + throw e; + + /* + Don't resolve our promise so that the startup process freezes. + */ + } + + function showCrash(error) { + /* Show the user the error and halt. */ + + /* eslint-disable no-console */ + console.error('Startup crash', startupTask, error); + /* eslint-enable no-console */ + + document.write( + startupErrorTemplate({ task: startupTask, error: error }) + ); + require('nw.gui').Window.get().show(); + } + + /* eslint-enable no-inner-declarations */ + }); + } +}; diff --git a/src/nw/index.less b/src/nw/index.less new file mode 100644 index 000000000..e5a204dec --- /dev/null +++ b/src/nw/index.less @@ -0,0 +1,32 @@ +#nwError { + font-size: 125%; + background-color: hsla(10, 88%, 40%, 0.8); + color: white; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + + p { + width: 40rem; + margin-left: auto; + margin-right: auto; + } + + a { + color: white; + text-decoration: underline; + } + + ul { + margin: 1rem; + padding-left: 0; + font-size: 70%; + list-style-type: none; + border: 1px solid white; + padding: 1em; + box-sizing: border-box; + border-radius: 2px; + } +} diff --git a/src/nw/menus.js b/src/nw/menus.js new file mode 100644 index 000000000..5fbd4ee65 --- /dev/null +++ b/src/nw/menus.js @@ -0,0 +1,128 @@ +/* Sets up menus in the NW.js version. */ + +module.exports = { + /* Adds menus to a NW.js window. */ + + addTo(win) { + const directories = require('./directories'); + const gui = require('nw.gui'); + const locale = require('../locale'); + const path = require('path'); + const nativeMenuBar = new gui.Menu({ type: 'menubar' }); + let mainMenu; + + if (global.process.platform === 'darwin') { + /* Create Mac menus. */ + + nativeMenuBar.createMacBuiltin(locale.say('Twine')); + mainMenu = nativeMenuBar.items.filter(item => item.label === '')[0]; + + /* + Add a fullscreen item. This is on OS X only for now, because it's + hard to reverse on other platforms if you don't remember the + keyboard shortcut. + */ + + mainMenu.submenu.insert(new gui.MenuItem({ + label: locale.say('Toggle Fullscreen'), + key: 'f', + modifiers: 'cmd-shift', + click() { + win.toggleFullscreen(); + } + }), 0); + } + else { + /* Create a basic menu on other platforms. */ + + mainMenu = new gui.MenuItem({ + label: locale.say('Twine'), + submenu: new gui.Menu() + }); + + mainMenu.submenu.append(new gui.MenuItem({ + label: locale.say('Quit'), + key: 'q', + modifiers: 'ctrl', + click() { + gui.App.closeAllWindows(); + } + })); + + mainMenu.submenu.insert( + new gui.MenuItem({ type: 'separator' }), + 0 + ); + nativeMenuBar.append(mainMenu); + + /* ... And a stand-in Edit menu. */ + + const editMenu = new gui.MenuItem({ + label: locale.say('Edit'), + submenu: new gui.Menu() + }); + + editMenu.submenu.append(new gui.MenuItem({ + label: locale.say('Undo'), + key: 'z', + modifiers: 'ctrl', + click() { + document.execCommand('undo'); + } + })); + + editMenu.submenu.append( + new gui.MenuItem({ type: 'separator' }) + ); + + editMenu.submenu.append(new gui.MenuItem({ + label: locale.say('Cut'), + key: 'x', + modifiers: 'ctrl', + click() { + document.execCommand('cut'); + } + })); + + editMenu.submenu.append(new gui.MenuItem({ + label: locale.say('Copy'), + key: 'c', + modifiers: 'ctrl', + click() { + document.execCommand('copy'); + } + })); + + editMenu.submenu.append(new gui.MenuItem({ + label: locale.say('Paste'), + key: 'v', + modifiers: 'ctrl', + click() { + document.execCommand('paste'); + } + })); + + editMenu.submenu.append(new gui.MenuItem({ + label: locale.say('Delete'), + click() { + document.execCommand('delete'); + } + })); + + nativeMenuBar.append(editMenu); + } + + /* Add a menu item to show the story library. */ + + mainMenu.submenu.insert(new gui.MenuItem({ + label: locale.say('Show Library'), + click() { + gui.Shell.openItem( + directories.storiesPath().replace(/\//g, path.sep) + ); + } + }), 0); + + win.menu = nativeMenuBar; + } +}; diff --git a/src/nw/patches/quota-gauge.js b/src/nw/patches/quota-gauge.js new file mode 100644 index 000000000..17c8545e5 --- /dev/null +++ b/src/nw/patches/quota-gauge.js @@ -0,0 +1,6 @@ +// Patches QuotaGauge to keep itself hidden. + +module.exports = QuotaGauge => { + QuotaGauge.options.template = ''; + QuotaGauge.options.created = null; +}; diff --git a/src/nw/patches/store/file-persistence.js b/src/nw/patches/store/file-persistence.js new file mode 100644 index 000000000..327f276a5 --- /dev/null +++ b/src/nw/patches/store/file-persistence.js @@ -0,0 +1,74 @@ +const saveQueue = require('../../save-queue'); +const storyFile = require('../../story-file'); +const debounce = require('lodash.debounce'); + +let enabled = true; +let previousStories; + +module.exports = store => { + previousStories = store.state.story.stories; + saveQueue.attachStore(store); + + store.subscribe((mutation, state) => { + if (!enabled) { + return; + } + + switch (mutation.type) { + /* + When a story is created or imported, we have to find the new one by + name. + */ + + case 'CREATE_STORY': + case 'IMPORT_STORY': + storyFile.save( + state.story.stories.find(story => story.name === mutation.payload[0].name), + state.appInfo + ); + break; + + case 'DELETE_STORY': + storyFile.delete(previousStories.find( + story => story.id === mutation.payload[0] + )); + break; + + /* + These mutations take a story ID as their first argument, and simply + reflect a change in the story's state that needs saving. + */ + + case 'UPDATE_STORY': + case 'CREATE_PASSAGE_IN_STORY': + case 'UPDATE_PASSAGE_IN_STORY': + case 'DELETE_PASSAGE_IN_STORY': + /* + Special case: if the user has changed the name of a story, we + need to delete the old file first. + */ + + if (mutation.type === 'UPDATE_STORY' && mutation.payload[1].name) { + storyFile.delete( + previousStories.find( + story => story.id === mutation.payload[0] + ), + state.appInfo + ); + } + + /* Save changes as normal. */ + + saveQueue.queue(mutation.payload[0]); + break; + } + + /* + We save a copy of the stories structure in aid of deleting, as above. + */ + + previousStories = state.story.stories.map( + s => Object.assign({}, s) + ); + }); +}; diff --git a/src/nw/patches/store/index.js b/src/nw/patches/store/index.js new file mode 100644 index 000000000..a0bfd6749 --- /dev/null +++ b/src/nw/patches/store/index.js @@ -0,0 +1,6 @@ +const FilePersistence = require('./file-persistence'); + +module.exports = Store => { + FilePersistence(Store); + window.vuexStore = Store; /* for debugging */ +}; diff --git a/src/nw/patches/story-list-toolbar.js b/src/nw/patches/story-list-toolbar.js new file mode 100644 index 000000000..2f43dcae0 --- /dev/null +++ b/src/nw/patches/story-list-toolbar.js @@ -0,0 +1,10 @@ +// Patches the story list toolbar so that the help link opens the wiki +// externally. + +module.exports = (StoryListToolbar) => { + StoryListToolbar.options.methods.showHelp = () => { + const gui = require('nw.gui'); + + gui.Shell.openExternal('https://twinery.org/2guide'); + }; +}; diff --git a/src/nw/patches/welcome-view/index.js b/src/nw/patches/welcome-view/index.js new file mode 100644 index 000000000..3530caeb1 --- /dev/null +++ b/src/nw/patches/welcome-view/index.js @@ -0,0 +1,7 @@ +// This replaces the template in the welcome module with one that is NW.js +// specific, i.e. doesn't mention anything about work being saved to the browser +// only. + +module.exports = (WelcomeView) => { + WelcomeView.options.template = require('./replacement-template.html'); +}; diff --git a/src/nw/patches/welcome-view/replacement-template.html b/src/nw/patches/welcome-view/replacement-template.html new file mode 100644 index 000000000..d1b021eca --- /dev/null +++ b/src/nw/patches/welcome-view/replacement-template.html @@ -0,0 +1,74 @@ +