on master help sign in
Initial commit
commitffb324c6737d2360dbb5e690ef906a9875a2fe86 authorNick Fitzgerald <fitzgen@gmail.com> dateMon 26 Nov 2018, 13:49 (8 years ago)
26 files changed+6756
.gitignore+3 Cargo.toml+34 LICENSE+373 README.md+54 build.sh+28 example/js/.gitignore+2 example/js/README.md+39 example/js/bootstrap.js+5 example/js/index.html+10 example/js/index.js+3 example/js/package-lock.json+5312 example/js/package.json+35 example/js/webpack.config.js+14 example/rust/.gitignore+6 example/rust/Cargo.toml+28 example/rust/README.md+54 example/rust/src/lib.rs+45 example/rust/tests/web.rs+13 js/change-list.js+148 js/package-lock.json+5 js/package.json+11 src/change_list.rs+224 src/lib.rs+14 src/node.rs+94 src/vdom.rs+189 tests/web.rs+13
.gitignorenew file+3
@@ -0,0 +1,3 @@
1+/target
2+**/*.rs.bk
3+Cargo.lock
Cargo.tomlnew file+34
@@ -0,0 +1,34 @@
1+[package]
2+name = "dodrio"
3+version = "0.1.0"
4+authors = ["Nick Fitzgerald <fitzgen@gmail.com>"]
5+edition = "2018"
6+
7+[features]
8+default = []
9+
10+[dependencies]
11+bumpalo = "1.0.2"
12+wasm-bindgen = "0.2.25"
13+js-sys = "0.3.2"
14+
15+[dependencies.web-sys]
16+version = "0.3.2"
17+features = [
18+ "Document",
19+ "Element",
20+ "Node",
21+ "Window",
22+]
23+
24+[dev-dependencies]
25+wasm-bindgen-test = "0.2"
26+
27+[profile.release]
28+# Tell `rustc` to optimize for small code size.
29+opt-level = "s"
30+
31+[workspace]
32+members = [
33+ "./example/rust"
34+]
LICENSEnew file+373
@@ -0,0 +1,373 @@
1+Mozilla Public License Version 2.0
2+==================================
3+
4+1. Definitions
5+--------------
6+
7+1.1. "Contributor"
8+ means each individual or legal entity that creates, contributes to
9+ the creation of, or owns Covered Software.
10+
11+1.2. "Contributor Version"
12+ means the combination of the Contributions of others (if any) used
13+ by a Contributor and that particular Contributor's Contribution.
14+
15+1.3. "Contribution"
16+ means Covered Software of a particular Contributor.
17+
18+1.4. "Covered Software"
19+ means Source Code Form to which the initial Contributor has attached
20+ the notice in Exhibit A, the Executable Form of such Source Code
21+ Form, and Modifications of such Source Code Form, in each case
22+ including portions thereof.
23+
24+1.5. "Incompatible With Secondary Licenses"
25+ means
26+
27+ (a) that the initial Contributor has attached the notice described
28+ in Exhibit B to the Covered Software; or
29+
30+ (b) that the Covered Software was made available under the terms of
31+ version 1.1 or earlier of the License, but not also under the
32+ terms of a Secondary License.
33+
34+1.6. "Executable Form"
35+ means any form of the work other than Source Code Form.
36+
37+1.7. "Larger Work"
38+ means a work that combines Covered Software with other material, in
39+ a separate file or files, that is not Covered Software.
40+
41+1.8. "License"
42+ means this document.
43+
44+1.9. "Licensable"
45+ means having the right to grant, to the maximum extent possible,
46+ whether at the time of the initial grant or subsequently, any and
47+ all of the rights conveyed by this License.
48+
49+1.10. "Modifications"
50+ means any of the following:
51+
52+ (a) any file in Source Code Form that results from an addition to,
53+ deletion from, or modification of the contents of Covered
54+ Software; or
55+
56+ (b) any new file in Source Code Form that contains any Covered
57+ Software.
58+
59+1.11. "Patent Claims" of a Contributor
60+ means any patent claim(s), including without limitation, method,
61+ process, and apparatus claims, in any patent Licensable by such
62+ Contributor that would be infringed, but for the grant of the
63+ License, by the making, using, selling, offering for sale, having
64+ made, import, or transfer of either its Contributions or its
65+ Contributor Version.
66+
67+1.12. "Secondary License"
68+ means either the GNU General Public License, Version 2.0, the GNU
69+ Lesser General Public License, Version 2.1, the GNU Affero General
70+ Public License, Version 3.0, or any later versions of those
71+ licenses.
72+
73+1.13. "Source Code Form"
74+ means the form of the work preferred for making modifications.
75+
76+1.14. "You" (or "Your")
77+ means an individual or a legal entity exercising rights under this
78+ License. For legal entities, "You" includes any entity that
79+ controls, is controlled by, or is under common control with You. For
80+ purposes of this definition, "control" means (a) the power, direct
81+ or indirect, to cause the direction or management of such entity,
82+ whether by contract or otherwise, or (b) ownership of more than
83+ fifty percent (50%) of the outstanding shares or beneficial
84+ ownership of such entity.
85+
86+2. License Grants and Conditions
87+--------------------------------
88+
89+2.1. Grants
90+
91+Each Contributor hereby grants You a world-wide, royalty-free,
92+non-exclusive license:
93+
94+(a) under intellectual property rights (other than patent or trademark)
95+ Licensable by such Contributor to use, reproduce, make available,
96+ modify, display, perform, distribute, and otherwise exploit its
97+ Contributions, either on an unmodified basis, with Modifications, or
98+ as part of a Larger Work; and
99+
100+(b) under Patent Claims of such Contributor to make, use, sell, offer
101+ for sale, have made, import, and otherwise transfer either its
102+ Contributions or its Contributor Version.
103+
104+2.2. Effective Date
105+
106+The licenses granted in Section 2.1 with respect to any Contribution
107+become effective for each Contribution on the date the Contributor first
108+distributes such Contribution.
109+
110+2.3. Limitations on Grant Scope
111+
112+The licenses granted in this Section 2 are the only rights granted under
113+this License. No additional rights or licenses will be implied from the
114+distribution or licensing of Covered Software under this License.
115+Notwithstanding Section 2.1(b) above, no patent license is granted by a
116+Contributor:
117+
118+(a) for any code that a Contributor has removed from Covered Software;
119+ or
120+
121+(b) for infringements caused by: (i) Your and any other third party's
122+ modifications of Covered Software, or (ii) the combination of its
123+ Contributions with other software (except as part of its Contributor
124+ Version); or
125+
126+(c) under Patent Claims infringed by Covered Software in the absence of
127+ its Contributions.
128+
129+This License does not grant any rights in the trademarks, service marks,
130+or logos of any Contributor (except as may be necessary to comply with
131+the notice requirements in Section 3.4).
132+
133+2.4. Subsequent Licenses
134+
135+No Contributor makes additional grants as a result of Your choice to
136+distribute the Covered Software under a subsequent version of this
137+License (see Section 10.2) or under the terms of a Secondary License (if
138+permitted under the terms of Section 3.3).
139+
140+2.5. Representation
141+
142+Each Contributor represents that the Contributor believes its
143+Contributions are its original creation(s) or it has sufficient rights
144+to grant the rights to its Contributions conveyed by this License.
145+
146+2.6. Fair Use
147+
148+This License is not intended to limit any rights You have under
149+applicable copyright doctrines of fair use, fair dealing, or other
150+equivalents.
151+
152+2.7. Conditions
153+
154+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
155+in Section 2.1.
156+
157+3. Responsibilities
158+-------------------
159+
160+3.1. Distribution of Source Form
161+
162+All distribution of Covered Software in Source Code Form, including any
163+Modifications that You create or to which You contribute, must be under
164+the terms of this License. You must inform recipients that the Source
165+Code Form of the Covered Software is governed by the terms of this
166+License, and how they can obtain a copy of this License. You may not
167+attempt to alter or restrict the recipients' rights in the Source Code
168+Form.
169+
170+3.2. Distribution of Executable Form
171+
172+If You distribute Covered Software in Executable Form then:
173+
174+(a) such Covered Software must also be made available in Source Code
175+ Form, as described in Section 3.1, and You must inform recipients of
176+ the Executable Form how they can obtain a copy of such Source Code
177+ Form by reasonable means in a timely manner, at a charge no more
178+ than the cost of distribution to the recipient; and
179+
180+(b) You may distribute such Executable Form under the terms of this
181+ License, or sublicense it under different terms, provided that the
182+ license for the Executable Form does not attempt to limit or alter
183+ the recipients' rights in the Source Code Form under this License.
184+
185+3.3. Distribution of a Larger Work
186+
187+You may create and distribute a Larger Work under terms of Your choice,
188+provided that You also comply with the requirements of this License for
189+the Covered Software. If the Larger Work is a combination of Covered
190+Software with a work governed by one or more Secondary Licenses, and the
191+Covered Software is not Incompatible With Secondary Licenses, this
192+License permits You to additionally distribute such Covered Software
193+under the terms of such Secondary License(s), so that the recipient of
194+the Larger Work may, at their option, further distribute the Covered
195+Software under the terms of either this License or such Secondary
196+License(s).
197+
198+3.4. Notices
199+
200+You may not remove or alter the substance of any license notices
201+(including copyright notices, patent notices, disclaimers of warranty,
202+or limitations of liability) contained within the Source Code Form of
203+the Covered Software, except that You may alter any license notices to
204+the extent required to remedy known factual inaccuracies.
205+
206+3.5. Application of Additional Terms
207+
208+You may choose to offer, and to charge a fee for, warranty, support,
209+indemnity or liability obligations to one or more recipients of Covered
210+Software. However, You may do so only on Your own behalf, and not on
211+behalf of any Contributor. You must make it absolutely clear that any
212+such warranty, support, indemnity, or liability obligation is offered by
213+You alone, and You hereby agree to indemnify every Contributor for any
214+liability incurred by such Contributor as a result of warranty, support,
215+indemnity or liability terms You offer. You may include additional
216+disclaimers of warranty and limitations of liability specific to any
217+jurisdiction.
218+
219+4. Inability to Comply Due to Statute or Regulation
220+---------------------------------------------------
221+
222+If it is impossible for You to comply with any of the terms of this
223+License with respect to some or all of the Covered Software due to
224+statute, judicial order, or regulation then You must: (a) comply with
225+the terms of this License to the maximum extent possible; and (b)
226+describe the limitations and the code they affect. Such description must
227+be placed in a text file included with all distributions of the Covered
228+Software under this License. Except to the extent prohibited by statute
229+or regulation, such description must be sufficiently detailed for a
230+recipient of ordinary skill to be able to understand it.
231+
232+5. Termination
233+--------------
234+
235+5.1. The rights granted under this License will terminate automatically
236+if You fail to comply with any of its terms. However, if You become
237+compliant, then the rights granted under this License from a particular
238+Contributor are reinstated (a) provisionally, unless and until such
239+Contributor explicitly and finally terminates Your grants, and (b) on an
240+ongoing basis, if such Contributor fails to notify You of the
241+non-compliance by some reasonable means prior to 60 days after You have
242+come back into compliance. Moreover, Your grants from a particular
243+Contributor are reinstated on an ongoing basis if such Contributor
244+notifies You of the non-compliance by some reasonable means, this is the
245+first time You have received notice of non-compliance with this License
246+from such Contributor, and You become compliant prior to 30 days after
247+Your receipt of the notice.
248+
249+5.2. If You initiate litigation against any entity by asserting a patent
250+infringement claim (excluding declaratory judgment actions,
251+counter-claims, and cross-claims) alleging that a Contributor Version
252+directly or indirectly infringes any patent, then the rights granted to
253+You by any and all Contributors for the Covered Software under Section
254+2.1 of this License shall terminate.
255+
256+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
257+end user license agreements (excluding distributors and resellers) which
258+have been validly granted by You or Your distributors under this License
259+prior to termination shall survive termination.
260+
261+************************************************************************
262+* *
263+* 6. Disclaimer of Warranty *
264+* ------------------------- *
265+* *
266+* Covered Software is provided under this License on an "as is" *
267+* basis, without warranty of any kind, either expressed, implied, or *
268+* statutory, including, without limitation, warranties that the *
269+* Covered Software is free of defects, merchantable, fit for a *
270+* particular purpose or non-infringing. The entire risk as to the *
271+* quality and performance of the Covered Software is with You. *
272+* Should any Covered Software prove defective in any respect, You *
273+* (not any Contributor) assume the cost of any necessary servicing, *
274+* repair, or correction. This disclaimer of warranty constitutes an *
275+* essential part of this License. No use of any Covered Software is *
276+* authorized under this License except under this disclaimer. *
277+* *
278+************************************************************************
279+
280+************************************************************************
281+* *
282+* 7. Limitation of Liability *
283+* -------------------------- *
284+* *
285+* Under no circumstances and under no legal theory, whether tort *
286+* (including negligence), contract, or otherwise, shall any *
287+* Contributor, or anyone who distributes Covered Software as *
288+* permitted above, be liable to You for any direct, indirect, *
289+* special, incidental, or consequential damages of any character *
290+* including, without limitation, damages for lost profits, loss of *
291+* goodwill, work stoppage, computer failure or malfunction, or any *
292+* and all other commercial damages or losses, even if such party *
293+* shall have been informed of the possibility of such damages. This *
294+* limitation of liability shall not apply to liability for death or *
295+* personal injury resulting from such party's negligence to the *
296+* extent applicable law prohibits such limitation. Some *
297+* jurisdictions do not allow the exclusion or limitation of *
298+* incidental or consequential damages, so this exclusion and *
299+* limitation may not apply to You. *
300+* *
301+************************************************************************
302+
303+8. Litigation
304+-------------
305+
306+Any litigation relating to this License may be brought only in the
307+courts of a jurisdiction where the defendant maintains its principal
308+place of business and such litigation shall be governed by laws of that
309+jurisdiction, without reference to its conflict-of-law provisions.
310+Nothing in this Section shall prevent a party's ability to bring
311+cross-claims or counter-claims.
312+
313+9. Miscellaneous
314+----------------
315+
316+This License represents the complete agreement concerning the subject
317+matter hereof. If any provision of this License is held to be
318+unenforceable, such provision shall be reformed only to the extent
319+necessary to make it enforceable. Any law or regulation which provides
320+that the language of a contract shall be construed against the drafter
321+shall not be used to construe this License against a Contributor.
322+
323+10. Versions of the License
324+---------------------------
325+
326+10.1. New Versions
327+
328+Mozilla Foundation is the license steward. Except as provided in Section
329+10.3, no one other than the license steward has the right to modify or
330+publish new versions of this License. Each version will be given a
331+distinguishing version number.
332+
333+10.2. Effect of New Versions
334+
335+You may distribute the Covered Software under the terms of the version
336+of the License under which You originally received the Covered Software,
337+or under the terms of any subsequent version published by the license
338+steward.
339+
340+10.3. Modified Versions
341+
342+If you create software not governed by this License, and you want to
343+create a new license for such software, you may create and use a
344+modified version of this License if you rename the license and remove
345+any references to the name of the license steward (except to note that
346+such modified license differs from this License).
347+
348+10.4. Distributing Source Code Form that is Incompatible With Secondary
349+Licenses
350+
351+If You choose to distribute Source Code Form that is Incompatible With
352+Secondary Licenses under the terms of this version of the License, the
353+notice described in Exhibit B of this License must be attached.
354+
355+Exhibit A - Source Code Form License Notice
356+-------------------------------------------
357+
358+ This Source Code Form is subject to the terms of the Mozilla Public
359+ License, v. 2.0. If a copy of the MPL was not distributed with this
360+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
361+
362+If it is not possible or desirable to put the notice in a particular
363+file, then You may include the notice in a location (such as a LICENSE
364+file in a relevant directory) where a recipient would be likely to look
365+for such a notice.
366+
367+You may add additional accurate notices of copyright ownership.
368+
369+Exhibit B - "Incompatible With Secondary Licenses" Notice
370+---------------------------------------------------------
371+
372+ This Source Code Form is "Incompatible With Secondary Licenses", as
373+ defined by the Mozilla Public License, v. 2.0.
README.mdnew file+54
@@ -0,0 +1,54 @@
1+<meta charset="utf-8"/>
2+
3+# 🦀🕸️ `wasm-pack-template`
4+
5+A template for kick starting a Rust and WebAssembly project using
6+[`wasm-pack`](https://github.com/rustwasm/wasm-pack).
7+
8+This template is designed for compiling Rust libraries into WebAssembly and
9+publishing the resulting package to NPM.
10+
11+* Want to use the published NPM package in a Website? [Check out
12+ `create-wasm-app`.](https://github.com/rustwasm/create-wasm-app)
13+* Want to make a monorepo-style Website without publishing to NPM? Check out
14+ [`rust-webpack-template`](https://github.com/rustwasm/rust-webpack-template)
15+ and/or
16+ [`rust-parcel-template`](https://github.com/rustwasm/rust-parcel-template).
17+
18+## 🔋 Batteries Included
19+
20+* [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating
21+ between WebAssembly and JavaScript.
22+* [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook)
23+ for logging panic messages to the developer console.
24+* [`wee_alloc`](https://github.com/rustwasm/wee_alloc), an allocator optimized
25+ for small code size.
26+
27+## 🚴 Usage
28+
29+### 🐑 Use `cargo generate` to Clone this Template
30+
31+[Learn more about `cargo generate` here.](https://github.com/ashleygwilliams/cargo-generate)
32+
33+```
34+cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name my-project
35+cd my-project
36+```
37+
38+### 🛠️ Build with `wasm-pack build`
39+
40+```
41+wasm-pack build
42+```
43+
44+### 🔬 Test in Headless Browsers with `wasm-pack test`
45+
46+```
47+wasm-pack test --headless --firefox
48+```
49+
50+### 🎁 Publish to NPM with `wasm-pack publish`
51+
52+```
53+wasm-pack publish
54+```
build.shnew file+28
@@ -0,0 +1,28 @@
1+#!/usr/bin/env bash
2+
3+cd $(dirname $0)
4+set -eux
5+
6+INSTALL=${INSTALL:-""}
7+
8+function with_dir {
9+ pushd $1
10+ shift
11+ $@
12+ popd
13+}
14+
15+cargo fmt --all
16+cargo check
17+wasm-pack build ./example/rust
18+
19+if test "$INSTALL" != ""; then
20+ with_dir ./js npm link
21+ with_dir ./example/rust/pkg npm link
22+ with_dir ./example/rust/pkg npm link dodrio
23+ with_dir ./example/js npm install
24+ with_dir ./example/js npm link dodrio
25+ with_dir ./example/js npm link dodrio-example
26+fi
27+
28+with_dir ./example/js/ npm run build
example/js/.gitignorenew file+2
@@ -0,0 +1,2 @@
1+node_modules
2+dist
example/js/README.mdnew file+39
@@ -0,0 +1,39 @@
1+# create-wasm-app
2+> an npm init project for generating a project that consumes rust-generated wasm via webpack
3+
4+## Usage
5+
6+```
7+npm init wasm-app
8+```
9+
10+## What's Included
11+
12+- `.gitignore`: ignores `node_modules`
13+- `LICENSE-APACHE` and `LICENSE-MIT`: most Rust projects are licensed this way, so these are included for you
14+- `README.md`: the file you are reading now!
15+- `index.html`: a bare bones html document that includes the webpack bundle
16+- `index.js`: example js file with a comment showing how to import and use a wasm pkg
17+- `package.json` and `package-lock.json`:
18+ - pulls in devDependencies for using webpack:
19+ - [`webpack`](https://www.npmjs.com/package/webpack)
20+ - [`webpack-cli`](https://www.npmjs.com/package/webpack-cli)
21+ - [`webpack-dev-server`](https://www.npmjs.com/package/webpack-dev-server)
22+ - defines a `start` script to run `webpack-dev-server`
23+- `webpack.config.js`: configuration file for bundling your js with webpack
24+
25+## License
26+
27+Licensed under either of
28+
29+* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
30+* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
31+
32+at your option.
33+
34+### Contribution
35+
36+Unless you explicitly state otherwise, any contribution intentionally
37+submitted for inclusion in the work by you, as defined in the Apache-2.0
38+license, shall be dual licensed as above, without any additional terms or
39+conditions.
example/js/bootstrap.jsnew file+5
@@ -0,0 +1,5 @@
1+// A dependency graph that contains any wasm must all be imported
2+// asynchronously. This `bootstrap.js` file does the single async import, so
3+// that no one else needs to worry about it again.
4+import("./index.js")
5+ .catch(e => console.error("Error importing `index.js`:", e));
example/js/index.htmlnew file+10
@@ -0,0 +1,10 @@
1+<!DOCTYPE html>
2+<html>
3+ <head>
4+ <meta charset="utf-8">
5+ <title>Hello wasm-pack!</title>
6+ </head>
7+ <body>
8+ <script src="./bootstrap.js"></script>
9+ </body>
10+</html>
example/js/index.jsnew file+3
@@ -0,0 +1,3 @@
1+import { run } from "dodrio-example";
2+
3+run();
example/js/package-lock.jsonnew file+5312
@@ -0,0 +1,5312 @@
1+{
2+ "name": "create-wasm-app",
3+ "version": "0.1.0",
4+ "lockfileVersion": 1,
5+ "requires": true,
6+ "dependencies": {
7+ "@webassemblyjs/ast": {
8+ "version": "1.7.8",
9+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.8.tgz",
10+ "integrity": "sha512-dOrtdtEyB8sInpl75yLPNksY4sRl0j/+t6aHyB/YA+ab9hV3Fo7FmG12FHzP+2MvWVAJtDb+6eXR5EZbZJ+uVg==",
11+ "dev": true,
12+ "requires": {
13+ "@webassemblyjs/helper-module-context": "1.7.8",
14+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
15+ "@webassemblyjs/wast-parser": "1.7.8"
16+ }
17+ },
18+ "@webassemblyjs/floating-point-hex-parser": {
19+ "version": "1.7.8",
20+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.8.tgz",
21+ "integrity": "sha512-kn2zNKGsbql5i56VAgRYkpG+VazqHhQQZQycT2uXAazrAEDs23gy+Odkh5VblybjnwX2/BITkDtNmSO76hdIvQ==",
22+ "dev": true
23+ },
24+ "@webassemblyjs/helper-api-error": {
25+ "version": "1.7.8",
26+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.8.tgz",
27+ "integrity": "sha512-xUwxDXsd1dUKArJEP5wWM5zxgCSwZApSOJyP1XO7M8rNUChUDblcLQ4FpzTpWG2YeylMwMl1MlP5Ztryiz1x4g==",
28+ "dev": true
29+ },
30+ "@webassemblyjs/helper-buffer": {
31+ "version": "1.7.8",
32+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.8.tgz",
33+ "integrity": "sha512-WXiIMnuvuwlhWvVOm8xEXU9DnHaa3AgAU0ZPfvY8vO1cSsmYb2WbGbHnMLgs43vXnA7XAob9b56zuZaMkxpCBg==",
34+ "dev": true
35+ },
36+ "@webassemblyjs/helper-code-frame": {
37+ "version": "1.7.8",
38+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.8.tgz",
39+ "integrity": "sha512-TLQxyD9qGOIdX5LPQOPo0Ernd88U5rHkFb8WAjeMIeA0sPjCHeVPaGqUGGIXjUcblUkjuDAc07bruCcNHUrHDA==",
40+ "dev": true,
41+ "requires": {
42+ "@webassemblyjs/wast-printer": "1.7.8"
43+ }
44+ },
45+ "@webassemblyjs/helper-fsm": {
46+ "version": "1.7.8",
47+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.8.tgz",
48+ "integrity": "sha512-TjK0CnD8hAPkV5mbSp5aWl6SO1+H3WFcjWtixWoy8EMA99YnNzYhpc/WSYWhf7yrhpzkq5tZB0tvLK3Svr3IXA==",
49+ "dev": true
50+ },
51+ "@webassemblyjs/helper-module-context": {
52+ "version": "1.7.8",
53+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.8.tgz",
54+ "integrity": "sha512-uCutAKR7Nm0VsFixcvnB4HhAyHouNbj0Dx1p7eRjFjXGGZ+N7ftTaG1ZbWCasAEbtwGj54LP8+lkBZdTCPmLGg==",
55+ "dev": true
56+ },
57+ "@webassemblyjs/helper-wasm-bytecode": {
58+ "version": "1.7.8",
59+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.8.tgz",
60+ "integrity": "sha512-AdCCE3BMW6V34WYaKUmPgVHa88t2Z14P4/0LjLwuGkI0X6pf7nzp0CehzVVk51cKm2ymVXjl9dCG+gR1yhITIQ==",
61+ "dev": true
62+ },
63+ "@webassemblyjs/helper-wasm-section": {
64+ "version": "1.7.8",
65+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.8.tgz",
66+ "integrity": "sha512-BkBhYQuzyl4hgTGOKo87Vdw6f9nj8HhI7WYpI0MCC5qFa5ahrAPOGgyETVdnRbv+Rjukl9MxxfDmVcVC435lDg==",
67+ "dev": true,
68+ "requires": {
69+ "@webassemblyjs/ast": "1.7.8",
70+ "@webassemblyjs/helper-buffer": "1.7.8",
71+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
72+ "@webassemblyjs/wasm-gen": "1.7.8"
73+ }
74+ },
75+ "@webassemblyjs/ieee754": {
76+ "version": "1.7.8",
77+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.8.tgz",
78+ "integrity": "sha512-tOarWChdG1a3y1yqCX0JMDKzrat5tQe4pV6K/TX19BcXsBLYxFQOL1DEDa5KG9syeyvCrvZ+i1+Mv1ExngvktQ==",
79+ "dev": true,
80+ "requires": {
81+ "@xtuc/ieee754": "^1.2.0"
82+ }
83+ },
84+ "@webassemblyjs/leb128": {
85+ "version": "1.7.8",
86+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.8.tgz",
87+ "integrity": "sha512-GCYeGPgUFWJiZuP4NICbcyUQNxNLJIf476Ei+K+jVuuebtLpfvwkvYT6iTUE7oZYehhkor4Zz2g7SJ/iZaPudQ==",
88+ "dev": true,
89+ "requires": {
90+ "@xtuc/long": "4.2.1"
91+ }
92+ },
93+ "@webassemblyjs/utf8": {
94+ "version": "1.7.8",
95+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.8.tgz",
96+ "integrity": "sha512-9X+f0VV+xNXW2ujfIRSXBJENGE6Qh7bNVKqu3yDjTFB3ar3nsThsGBBKdTG58aXOm2iUH6v28VIf88ymPXODHA==",
97+ "dev": true
98+ },
99+ "@webassemblyjs/wasm-edit": {
100+ "version": "1.7.8",
101+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.8.tgz",
102+ "integrity": "sha512-6D3Hm2gFixrfyx9XjSON4ml1FZTugqpkIz5Awvrou8fnpyprVzcm4X8pyGRtA2Piixjl3DqmX/HB1xdWyE097A==",
103+ "dev": true,
104+ "requires": {
105+ "@webassemblyjs/ast": "1.7.8",
106+ "@webassemblyjs/helper-buffer": "1.7.8",
107+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
108+ "@webassemblyjs/helper-wasm-section": "1.7.8",
109+ "@webassemblyjs/wasm-gen": "1.7.8",
110+ "@webassemblyjs/wasm-opt": "1.7.8",
111+ "@webassemblyjs/wasm-parser": "1.7.8",
112+ "@webassemblyjs/wast-printer": "1.7.8"
113+ }
114+ },
115+ "@webassemblyjs/wasm-gen": {
116+ "version": "1.7.8",
117+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.8.tgz",
118+ "integrity": "sha512-a7O/wE6eBeVKKUYgpMK7NOHmMADD85rSXLe3CqrWRDwWff5y3cSVbzpN6Qv3z6C4hdkpq9qyij1Ga1kemOZGvQ==",
119+ "dev": true,
120+ "requires": {
121+ "@webassemblyjs/ast": "1.7.8",
122+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
123+ "@webassemblyjs/ieee754": "1.7.8",
124+ "@webassemblyjs/leb128": "1.7.8",
125+ "@webassemblyjs/utf8": "1.7.8"
126+ }
127+ },
128+ "@webassemblyjs/wasm-opt": {
129+ "version": "1.7.8",
130+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.8.tgz",
131+ "integrity": "sha512-3lbQ0PT81NHCdi1sR/7+SNpZadM4qYcTSr62nFFAA7e5lFwJr14M1Gi+A/Y3PgcDWOHYjsaNGPpPU0H03N6Blg==",
132+ "dev": true,
133+ "requires": {
134+ "@webassemblyjs/ast": "1.7.8",
135+ "@webassemblyjs/helper-buffer": "1.7.8",
136+ "@webassemblyjs/wasm-gen": "1.7.8",
137+ "@webassemblyjs/wasm-parser": "1.7.8"
138+ }
139+ },
140+ "@webassemblyjs/wasm-parser": {
141+ "version": "1.7.8",
142+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.8.tgz",
143+ "integrity": "sha512-rZ/zlhp9DHR/05zh1MbAjT2t624sjrPP/OkJCjXqzm7ynH+nIdNcn9Ixc+qzPMFXhIrk0rBoQ3to6sEIvHh9jQ==",
144+ "dev": true,
145+ "requires": {
146+ "@webassemblyjs/ast": "1.7.8",
147+ "@webassemblyjs/helper-api-error": "1.7.8",
148+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
149+ "@webassemblyjs/ieee754": "1.7.8",
150+ "@webassemblyjs/leb128": "1.7.8",
151+ "@webassemblyjs/utf8": "1.7.8"
152+ }
153+ },
154+ "@webassemblyjs/wast-parser": {
155+ "version": "1.7.8",
156+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.8.tgz",
157+ "integrity": "sha512-Q/zrvtUvzWuSiJMcSp90fi6gp2nraiHXjTV2VgAluVdVapM4gy1MQn7akja2p6eSBDQpKJPJ6P4TxRkghRS5dg==",
158+ "dev": true,
159+ "requires": {
160+ "@webassemblyjs/ast": "1.7.8",
161+ "@webassemblyjs/floating-point-hex-parser": "1.7.8",
162+ "@webassemblyjs/helper-api-error": "1.7.8",
163+ "@webassemblyjs/helper-code-frame": "1.7.8",
164+ "@webassemblyjs/helper-fsm": "1.7.8",
165+ "@xtuc/long": "4.2.1"
166+ }
167+ },
168+ "@webassemblyjs/wast-printer": {
169+ "version": "1.7.8",
170+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.8.tgz",
171+ "integrity": "sha512-GllIthRtwTxRDAURRNXscu7Napzmdf1jt1gpiZiK/QN4fH0lSGs3OTmvdfsMNP7tqI4B3ZtfaaWRlNIQug6Xyg==",
172+ "dev": true,
173+ "requires": {
174+ "@webassemblyjs/ast": "1.7.8",
175+ "@webassemblyjs/wast-parser": "1.7.8",
176+ "@xtuc/long": "4.2.1"
177+ }
178+ },
179+ "@xtuc/ieee754": {
180+ "version": "1.2.0",
181+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
182+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
183+ "dev": true
184+ },
185+ "@xtuc/long": {
186+ "version": "4.2.1",
187+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz",
188+ "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==",
189+ "dev": true
190+ },
191+ "accepts": {
192+ "version": "1.3.5",
193+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
194+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
195+ "dev": true,
196+ "requires": {
197+ "mime-types": "~2.1.18",
198+ "negotiator": "0.6.1"
199+ }
200+ },
201+ "acorn": {
202+ "version": "5.7.3",
203+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
204+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
205+ "dev": true
206+ },
207+ "acorn-dynamic-import": {
208+ "version": "3.0.0",
209+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
210+ "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
211+ "dev": true,
212+ "requires": {
213+ "acorn": "^5.0.0"
214+ }
215+ },
216+ "ajv": {
217+ "version": "6.5.3",
218+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
219+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
220+ "dev": true,
221+ "requires": {
222+ "fast-deep-equal": "^2.0.1",
223+ "fast-json-stable-stringify": "^2.0.0",
224+ "json-schema-traverse": "^0.4.1",
225+ "uri-js": "^4.2.2"
226+ }
227+ },
228+ "ajv-errors": {
229+ "version": "1.0.0",
230+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz",
231+ "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=",
232+ "dev": true
233+ },
234+ "ajv-keywords": {
235+ "version": "3.2.0",
236+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
237+ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
238+ "dev": true
239+ },
240+ "ansi-colors": {
241+ "version": "3.2.1",
242+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.1.tgz",
243+ "integrity": "sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ==",
244+ "dev": true
245+ },
246+ "ansi-html": {
247+ "version": "0.0.7",
248+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
249+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
250+ "dev": true
251+ },
252+ "ansi-regex": {
253+ "version": "3.0.0",
254+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
255+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
256+ "dev": true
257+ },
258+ "ansi-styles": {
259+ "version": "3.2.1",
260+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
261+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
262+ "dev": true,
263+ "requires": {
264+ "color-convert": "^1.9.0"
265+ }
266+ },
267+ "anymatch": {
268+ "version": "2.0.0",
269+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
270+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
271+ "dev": true,
272+ "requires": {
273+ "micromatch": "^3.1.4",
274+ "normalize-path": "^2.1.1"
275+ }
276+ },
277+ "aproba": {
278+ "version": "1.2.0",
279+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
280+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
281+ "dev": true
282+ },
283+ "arr-diff": {
284+ "version": "4.0.0",
285+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
286+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
287+ "dev": true
288+ },
289+ "arr-flatten": {
290+ "version": "1.1.0",
291+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
292+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
293+ "dev": true
294+ },
295+ "arr-union": {
296+ "version": "3.1.0",
297+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
298+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
299+ "dev": true
300+ },
301+ "array-flatten": {
302+ "version": "2.1.1",
303+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
304+ "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
305+ "dev": true
306+ },
307+ "array-union": {
308+ "version": "1.0.2",
309+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
310+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
311+ "dev": true,
312+ "requires": {
313+ "array-uniq": "^1.0.1"
314+ }
315+ },
316+ "array-uniq": {
317+ "version": "1.0.3",
318+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
319+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
320+ "dev": true
321+ },
322+ "array-unique": {
323+ "version": "0.3.2",
324+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
325+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
326+ "dev": true
327+ },
328+ "arrify": {
329+ "version": "1.0.1",
330+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
331+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
332+ "dev": true
333+ },
334+ "asn1.js": {
335+ "version": "4.10.1",
336+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
337+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
338+ "dev": true,
339+ "requires": {
340+ "bn.js": "^4.0.0",
341+ "inherits": "^2.0.1",
342+ "minimalistic-assert": "^1.0.0"
343+ }
344+ },
345+ "assert": {
346+ "version": "1.4.1",
347+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
348+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
349+ "dev": true,
350+ "requires": {
351+ "util": "0.10.3"
352+ },
353+ "dependencies": {
354+ "inherits": {
355+ "version": "2.0.1",
356+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
357+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
358+ "dev": true
359+ },
360+ "util": {
361+ "version": "0.10.3",
362+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
363+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
364+ "dev": true,
365+ "requires": {
366+ "inherits": "2.0.1"
367+ }
368+ }
369+ }
370+ },
371+ "assign-symbols": {
372+ "version": "1.0.0",
373+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
374+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
375+ "dev": true
376+ },
377+ "async": {
378+ "version": "1.5.2",
379+ "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz",
380+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
381+ "dev": true
382+ },
383+ "async-each": {
384+ "version": "1.0.1",
385+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
386+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
387+ "dev": true
388+ },
389+ "atob": {
390+ "version": "2.1.1",
391+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
392+ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=",
393+ "dev": true
394+ },
395+ "balanced-match": {
396+ "version": "1.0.0",
397+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
398+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
399+ "dev": true
400+ },
401+ "base": {
402+ "version": "0.11.2",
403+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
404+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
405+ "dev": true,
406+ "requires": {
407+ "cache-base": "^1.0.1",
408+ "class-utils": "^0.3.5",
409+ "component-emitter": "^1.2.1",
410+ "define-property": "^1.0.0",
411+ "isobject": "^3.0.1",
412+ "mixin-deep": "^1.2.0",
413+ "pascalcase": "^0.1.1"
414+ },
415+ "dependencies": {
416+ "define-property": {
417+ "version": "1.0.0",
418+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
419+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
420+ "dev": true,
421+ "requires": {
422+ "is-descriptor": "^1.0.0"
423+ }
424+ },
425+ "is-accessor-descriptor": {
426+ "version": "1.0.0",
427+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
428+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
429+ "dev": true,
430+ "requires": {
431+ "kind-of": "^6.0.0"
432+ }
433+ },
434+ "is-data-descriptor": {
435+ "version": "1.0.0",
436+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
437+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
438+ "dev": true,
439+ "requires": {
440+ "kind-of": "^6.0.0"
441+ }
442+ },
443+ "is-descriptor": {
444+ "version": "1.0.2",
445+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
446+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
447+ "dev": true,
448+ "requires": {
449+ "is-accessor-descriptor": "^1.0.0",
450+ "is-data-descriptor": "^1.0.0",
451+ "kind-of": "^6.0.2"
452+ }
453+ }
454+ }
455+ },
456+ "base64-js": {
457+ "version": "1.3.0",
458+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
459+ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
460+ "dev": true
461+ },
462+ "batch": {
463+ "version": "0.6.1",
464+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
465+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
466+ "dev": true
467+ },
468+ "big.js": {
469+ "version": "3.2.0",
470+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
471+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
472+ "dev": true
473+ },
474+ "binary-extensions": {
475+ "version": "1.11.0",
476+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
477+ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
478+ "dev": true
479+ },
480+ "bluebird": {
481+ "version": "3.5.1",
482+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
483+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
484+ "dev": true
485+ },
486+ "bn.js": {
487+ "version": "4.11.8",
488+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
489+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
490+ "dev": true
491+ },
492+ "body-parser": {
493+ "version": "1.18.3",
494+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
495+ "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
496+ "dev": true,
497+ "requires": {
498+ "bytes": "3.0.0",
499+ "content-type": "~1.0.4",
500+ "debug": "2.6.9",
501+ "depd": "~1.1.2",
502+ "http-errors": "~1.6.3",
503+ "iconv-lite": "0.4.23",
504+ "on-finished": "~2.3.0",
505+ "qs": "6.5.2",
506+ "raw-body": "2.3.3",
507+ "type-is": "~1.6.16"
508+ },
509+ "dependencies": {
510+ "debug": {
511+ "version": "2.6.9",
512+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
513+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
514+ "dev": true,
515+ "requires": {
516+ "ms": "2.0.0"
517+ }
518+ }
519+ }
520+ },
521+ "bonjour": {
522+ "version": "3.5.0",
523+ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
524+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
525+ "dev": true,
526+ "requires": {
527+ "array-flatten": "^2.1.0",
528+ "deep-equal": "^1.0.1",
529+ "dns-equal": "^1.0.0",
530+ "dns-txt": "^2.0.2",
531+ "multicast-dns": "^6.0.1",
532+ "multicast-dns-service-types": "^1.1.0"
533+ }
534+ },
535+ "brace-expansion": {
536+ "version": "1.1.11",
537+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
538+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
539+ "dev": true,
540+ "requires": {
541+ "balanced-match": "^1.0.0",
542+ "concat-map": "0.0.1"
543+ }
544+ },
545+ "braces": {
546+ "version": "2.3.2",
547+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
548+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
549+ "dev": true,
550+ "requires": {
551+ "arr-flatten": "^1.1.0",
552+ "array-unique": "^0.3.2",
553+ "extend-shallow": "^2.0.1",
554+ "fill-range": "^4.0.0",
555+ "isobject": "^3.0.1",
556+ "repeat-element": "^1.1.2",
557+ "snapdragon": "^0.8.1",
558+ "snapdragon-node": "^2.0.1",
559+ "split-string": "^3.0.2",
560+ "to-regex": "^3.0.1"
561+ },
562+ "dependencies": {
563+ "extend-shallow": {
564+ "version": "2.0.1",
565+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
566+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
567+ "dev": true,
568+ "requires": {
569+ "is-extendable": "^0.1.0"
570+ }
571+ }
572+ }
573+ },
574+ "brorand": {
575+ "version": "1.1.0",
576+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
577+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
578+ "dev": true
579+ },
580+ "browserify-aes": {
581+ "version": "1.2.0",
582+ "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
583+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
584+ "dev": true,
585+ "requires": {
586+ "buffer-xor": "^1.0.3",
587+ "cipher-base": "^1.0.0",
588+ "create-hash": "^1.1.0",
589+ "evp_bytestokey": "^1.0.3",
590+ "inherits": "^2.0.1",
591+ "safe-buffer": "^5.0.1"
592+ }
593+ },
594+ "browserify-cipher": {
595+ "version": "1.0.1",
596+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
597+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
598+ "dev": true,
599+ "requires": {
600+ "browserify-aes": "^1.0.4",
601+ "browserify-des": "^1.0.0",
602+ "evp_bytestokey": "^1.0.0"
603+ }
604+ },
605+ "browserify-des": {
606+ "version": "1.0.2",
607+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
608+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
609+ "dev": true,
610+ "requires": {
611+ "cipher-base": "^1.0.1",
612+ "des.js": "^1.0.0",
613+ "inherits": "^2.0.1",
614+ "safe-buffer": "^5.1.2"
615+ }
616+ },
617+ "browserify-rsa": {
618+ "version": "4.0.1",
619+ "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
620+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
621+ "dev": true,
622+ "requires": {
623+ "bn.js": "^4.1.0",
624+ "randombytes": "^2.0.1"
625+ }
626+ },
627+ "browserify-sign": {
628+ "version": "4.0.4",
629+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
630+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
631+ "dev": true,
632+ "requires": {
633+ "bn.js": "^4.1.1",
634+ "browserify-rsa": "^4.0.0",
635+ "create-hash": "^1.1.0",
636+ "create-hmac": "^1.1.2",
637+ "elliptic": "^6.0.0",
638+ "inherits": "^2.0.1",
639+ "parse-asn1": "^5.0.0"
640+ }
641+ },
642+ "browserify-zlib": {
643+ "version": "0.2.0",
644+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
645+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
646+ "dev": true,
647+ "requires": {
648+ "pako": "~1.0.5"
649+ }
650+ },
651+ "buffer": {
652+ "version": "4.9.1",
653+ "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
654+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
655+ "dev": true,
656+ "requires": {
657+ "base64-js": "^1.0.2",
658+ "ieee754": "^1.1.4",
659+ "isarray": "^1.0.0"
660+ }
661+ },
662+ "buffer-from": {
663+ "version": "1.1.1",
664+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
665+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
666+ "dev": true
667+ },
668+ "buffer-indexof": {
669+ "version": "1.1.1",
670+ "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
671+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
672+ "dev": true
673+ },
674+ "buffer-xor": {
675+ "version": "1.0.3",
676+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
677+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
678+ "dev": true
679+ },
680+ "builtin-status-codes": {
681+ "version": "3.0.0",
682+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
683+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
684+ "dev": true
685+ },
686+ "bytes": {
687+ "version": "3.0.0",
688+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
689+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
690+ "dev": true
691+ },
692+ "cacache": {
693+ "version": "10.0.4",
694+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
695+ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
696+ "dev": true,
697+ "requires": {
698+ "bluebird": "^3.5.1",
699+ "chownr": "^1.0.1",
700+ "glob": "^7.1.2",
701+ "graceful-fs": "^4.1.11",
702+ "lru-cache": "^4.1.1",
703+ "mississippi": "^2.0.0",
704+ "mkdirp": "^0.5.1",
705+ "move-concurrently": "^1.0.1",
706+ "promise-inflight": "^1.0.1",
707+ "rimraf": "^2.6.2",
708+ "ssri": "^5.2.4",
709+ "unique-filename": "^1.1.0",
710+ "y18n": "^4.0.0"
711+ }
712+ },
713+ "cache-base": {
714+ "version": "1.0.1",
715+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
716+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
717+ "dev": true,
718+ "requires": {
719+ "collection-visit": "^1.0.0",
720+ "component-emitter": "^1.2.1",
721+ "get-value": "^2.0.6",
722+ "has-value": "^1.0.0",
723+ "isobject": "^3.0.1",
724+ "set-value": "^2.0.0",
725+ "to-object-path": "^0.3.0",
726+ "union-value": "^1.0.0",
727+ "unset-value": "^1.0.0"
728+ }
729+ },
730+ "camelcase": {
731+ "version": "4.1.0",
732+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
733+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
734+ "dev": true
735+ },
736+ "chalk": {
737+ "version": "2.4.1",
738+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
739+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
740+ "dev": true,
741+ "requires": {
742+ "ansi-styles": "^3.2.1",
743+ "escape-string-regexp": "^1.0.5",
744+ "supports-color": "^5.3.0"
745+ }
746+ },
747+ "chokidar": {
748+ "version": "2.0.4",
749+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
750+ "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
751+ "dev": true,
752+ "requires": {
753+ "anymatch": "^2.0.0",
754+ "async-each": "^1.0.0",
755+ "braces": "^2.3.0",
756+ "fsevents": "^1.2.2",
757+ "glob-parent": "^3.1.0",
758+ "inherits": "^2.0.1",
759+ "is-binary-path": "^1.0.0",
760+ "is-glob": "^4.0.0",
761+ "lodash.debounce": "^4.0.8",
762+ "normalize-path": "^2.1.1",
763+ "path-is-absolute": "^1.0.0",
764+ "readdirp": "^2.0.0",
765+ "upath": "^1.0.5"
766+ }
767+ },
768+ "chownr": {
769+ "version": "1.0.1",
770+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
771+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
772+ "dev": true
773+ },
774+ "chrome-trace-event": {
775+ "version": "1.0.0",
776+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
777+ "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
778+ "dev": true,
779+ "requires": {
780+ "tslib": "^1.9.0"
781+ }
782+ },
783+ "cipher-base": {
784+ "version": "1.0.4",
785+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
786+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
787+ "dev": true,
788+ "requires": {
789+ "inherits": "^2.0.1",
790+ "safe-buffer": "^5.0.1"
791+ }
792+ },
793+ "class-utils": {
794+ "version": "0.3.6",
795+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
796+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
797+ "dev": true,
798+ "requires": {
799+ "arr-union": "^3.1.0",
800+ "define-property": "^0.2.5",
801+ "isobject": "^3.0.0",
802+ "static-extend": "^0.1.1"
803+ },
804+ "dependencies": {
805+ "define-property": {
806+ "version": "0.2.5",
807+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
808+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
809+ "dev": true,
810+ "requires": {
811+ "is-descriptor": "^0.1.0"
812+ }
813+ }
814+ }
815+ },
816+ "cliui": {
817+ "version": "4.1.0",
818+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
819+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
820+ "dev": true,
821+ "requires": {
822+ "string-width": "^2.1.1",
823+ "strip-ansi": "^4.0.0",
824+ "wrap-ansi": "^2.0.0"
825+ }
826+ },
827+ "code-point-at": {
828+ "version": "1.1.0",
829+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
830+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
831+ "dev": true
832+ },
833+ "collection-visit": {
834+ "version": "1.0.0",
835+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
836+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
837+ "dev": true,
838+ "requires": {
839+ "map-visit": "^1.0.0",
840+ "object-visit": "^1.0.0"
841+ }
842+ },
843+ "color-convert": {
844+ "version": "1.9.3",
845+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
846+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
847+ "dev": true,
848+ "requires": {
849+ "color-name": "1.1.3"
850+ }
851+ },
852+ "color-name": {
853+ "version": "1.1.3",
854+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
855+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
856+ "dev": true
857+ },
858+ "commander": {
859+ "version": "2.13.0",
860+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
861+ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
862+ "dev": true
863+ },
864+ "commondir": {
865+ "version": "1.0.1",
866+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
867+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
868+ "dev": true
869+ },
870+ "component-emitter": {
871+ "version": "1.2.1",
872+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
873+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
874+ "dev": true
875+ },
876+ "compressible": {
877+ "version": "2.0.15",
878+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz",
879+ "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==",
880+ "dev": true,
881+ "requires": {
882+ "mime-db": ">= 1.36.0 < 2"
883+ }
884+ },
885+ "compression": {
886+ "version": "1.7.3",
887+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
888+ "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
889+ "dev": true,
890+ "requires": {
891+ "accepts": "~1.3.5",
892+ "bytes": "3.0.0",
893+ "compressible": "~2.0.14",
894+ "debug": "2.6.9",
895+ "on-headers": "~1.0.1",
896+ "safe-buffer": "5.1.2",
897+ "vary": "~1.1.2"
898+ },
899+ "dependencies": {
900+ "debug": {
901+ "version": "2.6.9",
902+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
903+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
904+ "dev": true,
905+ "requires": {
906+ "ms": "2.0.0"
907+ }
908+ }
909+ }
910+ },
911+ "concat-map": {
912+ "version": "0.0.1",
913+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
914+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
915+ "dev": true
916+ },
917+ "concat-stream": {
918+ "version": "1.6.2",
919+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
920+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
921+ "dev": true,
922+ "requires": {
923+ "buffer-from": "^1.0.0",
924+ "inherits": "^2.0.3",
925+ "readable-stream": "^2.2.2",
926+ "typedarray": "^0.0.6"
927+ }
928+ },
929+ "connect-history-api-fallback": {
930+ "version": "1.5.0",
931+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
932+ "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
933+ "dev": true
934+ },
935+ "console-browserify": {
936+ "version": "1.1.0",
937+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
938+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
939+ "dev": true,
940+ "requires": {
941+ "date-now": "^0.1.4"
942+ }
943+ },
944+ "constants-browserify": {
945+ "version": "1.0.0",
946+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
947+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
948+ "dev": true
949+ },
950+ "content-disposition": {
951+ "version": "0.5.2",
952+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
953+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
954+ "dev": true
955+ },
956+ "content-type": {
957+ "version": "1.0.4",
958+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
959+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
960+ "dev": true
961+ },
962+ "cookie": {
963+ "version": "0.3.1",
964+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
965+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
966+ "dev": true
967+ },
968+ "cookie-signature": {
969+ "version": "1.0.6",
970+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
971+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
972+ "dev": true
973+ },
974+ "copy-concurrently": {
975+ "version": "1.0.5",
976+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
977+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
978+ "dev": true,
979+ "requires": {
980+ "aproba": "^1.1.1",
981+ "fs-write-stream-atomic": "^1.0.8",
982+ "iferr": "^0.1.5",
983+ "mkdirp": "^0.5.1",
984+ "rimraf": "^2.5.4",
985+ "run-queue": "^1.0.0"
986+ }
987+ },
988+ "copy-descriptor": {
989+ "version": "0.1.1",
990+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
991+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
992+ "dev": true
993+ },
994+ "copy-webpack-plugin": {
995+ "version": "4.5.4",
996+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.4.tgz",
997+ "integrity": "sha512-0lstlEyj74OAtYMrDxlNZsU7cwFijAI3Ofz2fD6Mpo9r4xCv4yegfa3uHIKvZY1NSuOtE9nvG6TAhJ+uz9gDaQ==",
998+ "dev": true,
999+ "requires": {
1000+ "cacache": "^10.0.4",
1001+ "find-cache-dir": "^1.0.0",
1002+ "globby": "^7.1.1",
1003+ "is-glob": "^4.0.0",
1004+ "loader-utils": "^1.1.0",
1005+ "minimatch": "^3.0.4",
1006+ "p-limit": "^1.0.0",
1007+ "serialize-javascript": "^1.4.0"
1008+ },
1009+ "dependencies": {
1010+ "globby": {
1011+ "version": "7.1.1",
1012+ "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
1013+ "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
1014+ "dev": true,
1015+ "requires": {
1016+ "array-union": "^1.0.1",
1017+ "dir-glob": "^2.0.0",
1018+ "glob": "^7.1.2",
1019+ "ignore": "^3.3.5",
1020+ "pify": "^3.0.0",
1021+ "slash": "^1.0.0"
1022+ }
1023+ }
1024+ }
1025+ },
1026+ "core-util-is": {
1027+ "version": "1.0.2",
1028+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1029+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
1030+ "dev": true
1031+ },
1032+ "create-ecdh": {
1033+ "version": "4.0.3",
1034+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
1035+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
1036+ "dev": true,
1037+ "requires": {
1038+ "bn.js": "^4.1.0",
1039+ "elliptic": "^6.0.0"
1040+ }
1041+ },
1042+ "create-hash": {
1043+ "version": "1.2.0",
1044+ "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
1045+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
1046+ "dev": true,
1047+ "requires": {
1048+ "cipher-base": "^1.0.1",
1049+ "inherits": "^2.0.1",
1050+ "md5.js": "^1.3.4",
1051+ "ripemd160": "^2.0.1",
1052+ "sha.js": "^2.4.0"
1053+ }
1054+ },
1055+ "create-hmac": {
1056+ "version": "1.1.7",
1057+ "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
1058+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
1059+ "dev": true,
1060+ "requires": {
1061+ "cipher-base": "^1.0.3",
1062+ "create-hash": "^1.1.0",
1063+ "inherits": "^2.0.1",
1064+ "ripemd160": "^2.0.0",
1065+ "safe-buffer": "^5.0.1",
1066+ "sha.js": "^2.4.8"
1067+ }
1068+ },
1069+ "cross-spawn": {
1070+ "version": "6.0.5",
1071+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
1072+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
1073+ "dev": true,
1074+ "requires": {
1075+ "nice-try": "^1.0.4",
1076+ "path-key": "^2.0.1",
1077+ "semver": "^5.5.0",
1078+ "shebang-command": "^1.2.0",
1079+ "which": "^1.2.9"
1080+ }
1081+ },
1082+ "crypto-browserify": {
1083+ "version": "3.12.0",
1084+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
1085+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
1086+ "dev": true,
1087+ "requires": {
1088+ "browserify-cipher": "^1.0.0",
1089+ "browserify-sign": "^4.0.0",
1090+ "create-ecdh": "^4.0.0",
1091+ "create-hash": "^1.1.0",
1092+ "create-hmac": "^1.1.0",
1093+ "diffie-hellman": "^5.0.0",
1094+ "inherits": "^2.0.1",
1095+ "pbkdf2": "^3.0.3",
1096+ "public-encrypt": "^4.0.0",
1097+ "randombytes": "^2.0.0",
1098+ "randomfill": "^1.0.3"
1099+ }
1100+ },
1101+ "cyclist": {
1102+ "version": "0.2.2",
1103+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
1104+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
1105+ "dev": true
1106+ },
1107+ "date-now": {
1108+ "version": "0.1.4",
1109+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
1110+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
1111+ "dev": true
1112+ },
1113+ "debug": {
1114+ "version": "3.2.6",
1115+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
1116+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
1117+ "dev": true,
1118+ "requires": {
1119+ "ms": "^2.1.1"
1120+ },
1121+ "dependencies": {
1122+ "ms": {
1123+ "version": "2.1.1",
1124+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1125+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
1126+ "dev": true
1127+ }
1128+ }
1129+ },
1130+ "decamelize": {
1131+ "version": "2.0.0",
1132+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
1133+ "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
1134+ "dev": true,
1135+ "requires": {
1136+ "xregexp": "4.0.0"
1137+ }
1138+ },
1139+ "decode-uri-component": {
1140+ "version": "0.2.0",
1141+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
1142+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
1143+ "dev": true
1144+ },
1145+ "deep-equal": {
1146+ "version": "1.0.1",
1147+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
1148+ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
1149+ "dev": true
1150+ },
1151+ "default-gateway": {
1152+ "version": "2.7.2",
1153+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz",
1154+ "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==",
1155+ "dev": true,
1156+ "requires": {
1157+ "execa": "^0.10.0",
1158+ "ip-regex": "^2.1.0"
1159+ }
1160+ },
1161+ "define-property": {
1162+ "version": "2.0.2",
1163+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
1164+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
1165+ "dev": true,
1166+ "requires": {
1167+ "is-descriptor": "^1.0.2",
1168+ "isobject": "^3.0.1"
1169+ },
1170+ "dependencies": {
1171+ "is-accessor-descriptor": {
1172+ "version": "1.0.0",
1173+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1174+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1175+ "dev": true,
1176+ "requires": {
1177+ "kind-of": "^6.0.0"
1178+ }
1179+ },
1180+ "is-data-descriptor": {
1181+ "version": "1.0.0",
1182+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1183+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1184+ "dev": true,
1185+ "requires": {
1186+ "kind-of": "^6.0.0"
1187+ }
1188+ },
1189+ "is-descriptor": {
1190+ "version": "1.0.2",
1191+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1192+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1193+ "dev": true,
1194+ "requires": {
1195+ "is-accessor-descriptor": "^1.0.0",
1196+ "is-data-descriptor": "^1.0.0",
1197+ "kind-of": "^6.0.2"
1198+ }
1199+ }
1200+ }
1201+ },
1202+ "del": {
1203+ "version": "3.0.0",
1204+ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
1205+ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
1206+ "dev": true,
1207+ "requires": {
1208+ "globby": "^6.1.0",
1209+ "is-path-cwd": "^1.0.0",
1210+ "is-path-in-cwd": "^1.0.0",
1211+ "p-map": "^1.1.1",
1212+ "pify": "^3.0.0",
1213+ "rimraf": "^2.2.8"
1214+ }
1215+ },
1216+ "depd": {
1217+ "version": "1.1.2",
1218+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
1219+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
1220+ "dev": true
1221+ },
1222+ "des.js": {
1223+ "version": "1.0.0",
1224+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
1225+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
1226+ "dev": true,
1227+ "requires": {
1228+ "inherits": "^2.0.1",
1229+ "minimalistic-assert": "^1.0.0"
1230+ }
1231+ },
1232+ "destroy": {
1233+ "version": "1.0.4",
1234+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
1235+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
1236+ "dev": true
1237+ },
1238+ "detect-node": {
1239+ "version": "2.0.4",
1240+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
1241+ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
1242+ "dev": true
1243+ },
1244+ "diffie-hellman": {
1245+ "version": "5.0.3",
1246+ "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
1247+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
1248+ "dev": true,
1249+ "requires": {
1250+ "bn.js": "^4.1.0",
1251+ "miller-rabin": "^4.0.0",
1252+ "randombytes": "^2.0.0"
1253+ }
1254+ },
1255+ "dir-glob": {
1256+ "version": "2.0.0",
1257+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
1258+ "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
1259+ "dev": true,
1260+ "requires": {
1261+ "arrify": "^1.0.1",
1262+ "path-type": "^3.0.0"
1263+ }
1264+ },
1265+ "dns-equal": {
1266+ "version": "1.0.0",
1267+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
1268+ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
1269+ "dev": true
1270+ },
1271+ "dns-packet": {
1272+ "version": "1.3.1",
1273+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
1274+ "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
1275+ "dev": true,
1276+ "requires": {
1277+ "ip": "^1.1.0",
1278+ "safe-buffer": "^5.0.1"
1279+ }
1280+ },
1281+ "dns-txt": {
1282+ "version": "2.0.2",
1283+ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
1284+ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
1285+ "dev": true,
1286+ "requires": {
1287+ "buffer-indexof": "^1.0.0"
1288+ }
1289+ },
1290+ "domain-browser": {
1291+ "version": "1.2.0",
1292+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
1293+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
1294+ "dev": true
1295+ },
1296+ "duplexify": {
1297+ "version": "3.6.0",
1298+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
1299+ "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
1300+ "dev": true,
1301+ "requires": {
1302+ "end-of-stream": "^1.0.0",
1303+ "inherits": "^2.0.1",
1304+ "readable-stream": "^2.0.0",
1305+ "stream-shift": "^1.0.0"
1306+ }
1307+ },
1308+ "ee-first": {
1309+ "version": "1.1.1",
1310+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1311+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
1312+ "dev": true
1313+ },
1314+ "elliptic": {
1315+ "version": "6.4.1",
1316+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
1317+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
1318+ "dev": true,
1319+ "requires": {
1320+ "bn.js": "^4.4.0",
1321+ "brorand": "^1.0.1",
1322+ "hash.js": "^1.0.0",
1323+ "hmac-drbg": "^1.0.0",
1324+ "inherits": "^2.0.1",
1325+ "minimalistic-assert": "^1.0.0",
1326+ "minimalistic-crypto-utils": "^1.0.0"
1327+ }
1328+ },
1329+ "emojis-list": {
1330+ "version": "2.1.0",
1331+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
1332+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
1333+ "dev": true
1334+ },
1335+ "encodeurl": {
1336+ "version": "1.0.2",
1337+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
1338+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
1339+ "dev": true
1340+ },
1341+ "end-of-stream": {
1342+ "version": "1.4.1",
1343+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
1344+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
1345+ "dev": true,
1346+ "requires": {
1347+ "once": "^1.4.0"
1348+ }
1349+ },
1350+ "enhanced-resolve": {
1351+ "version": "4.1.0",
1352+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
1353+ "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
1354+ "dev": true,
1355+ "requires": {
1356+ "graceful-fs": "^4.1.2",
1357+ "memory-fs": "^0.4.0",
1358+ "tapable": "^1.0.0"
1359+ }
1360+ },
1361+ "errno": {
1362+ "version": "0.1.7",
1363+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
1364+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
1365+ "dev": true,
1366+ "requires": {
1367+ "prr": "~1.0.1"
1368+ }
1369+ },
1370+ "escape-html": {
1371+ "version": "1.0.3",
1372+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1373+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
1374+ "dev": true
1375+ },
1376+ "escape-string-regexp": {
1377+ "version": "1.0.5",
1378+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1379+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1380+ "dev": true
1381+ },
1382+ "eslint-scope": {
1383+ "version": "4.0.0",
1384+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
1385+ "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
1386+ "dev": true,
1387+ "requires": {
1388+ "esrecurse": "^4.1.0",
1389+ "estraverse": "^4.1.1"
1390+ }
1391+ },
1392+ "esrecurse": {
1393+ "version": "4.2.1",
1394+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
1395+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
1396+ "dev": true,
1397+ "requires": {
1398+ "estraverse": "^4.1.0"
1399+ }
1400+ },
1401+ "estraverse": {
1402+ "version": "4.2.0",
1403+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
1404+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
1405+ "dev": true
1406+ },
1407+ "etag": {
1408+ "version": "1.8.1",
1409+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
1410+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
1411+ "dev": true
1412+ },
1413+ "eventemitter3": {
1414+ "version": "3.1.0",
1415+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
1416+ "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
1417+ "dev": true
1418+ },
1419+ "events": {
1420+ "version": "1.1.1",
1421+ "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz",
1422+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
1423+ "dev": true
1424+ },
1425+ "eventsource": {
1426+ "version": "1.0.7",
1427+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
1428+ "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
1429+ "dev": true,
1430+ "requires": {
1431+ "original": "^1.0.0"
1432+ }
1433+ },
1434+ "evp_bytestokey": {
1435+ "version": "1.0.3",
1436+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
1437+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
1438+ "dev": true,
1439+ "requires": {
1440+ "md5.js": "^1.3.4",
1441+ "safe-buffer": "^5.1.1"
1442+ }
1443+ },
1444+ "execa": {
1445+ "version": "0.10.0",
1446+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
1447+ "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
1448+ "dev": true,
1449+ "requires": {
1450+ "cross-spawn": "^6.0.0",
1451+ "get-stream": "^3.0.0",
1452+ "is-stream": "^1.1.0",
1453+ "npm-run-path": "^2.0.0",
1454+ "p-finally": "^1.0.0",
1455+ "signal-exit": "^3.0.0",
1456+ "strip-eof": "^1.0.0"
1457+ }
1458+ },
1459+ "expand-brackets": {
1460+ "version": "2.1.4",
1461+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
1462+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
1463+ "dev": true,
1464+ "requires": {
1465+ "debug": "^2.3.3",
1466+ "define-property": "^0.2.5",
1467+ "extend-shallow": "^2.0.1",
1468+ "posix-character-classes": "^0.1.0",
1469+ "regex-not": "^1.0.0",
1470+ "snapdragon": "^0.8.1",
1471+ "to-regex": "^3.0.1"
1472+ },
1473+ "dependencies": {
1474+ "debug": {
1475+ "version": "2.6.9",
1476+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1477+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1478+ "dev": true,
1479+ "requires": {
1480+ "ms": "2.0.0"
1481+ }
1482+ },
1483+ "define-property": {
1484+ "version": "0.2.5",
1485+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1486+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1487+ "dev": true,
1488+ "requires": {
1489+ "is-descriptor": "^0.1.0"
1490+ }
1491+ },
1492+ "extend-shallow": {
1493+ "version": "2.0.1",
1494+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1495+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1496+ "dev": true,
1497+ "requires": {
1498+ "is-extendable": "^0.1.0"
1499+ }
1500+ }
1501+ }
1502+ },
1503+ "express": {
1504+ "version": "4.16.4",
1505+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
1506+ "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
1507+ "dev": true,
1508+ "requires": {
1509+ "accepts": "~1.3.5",
1510+ "array-flatten": "1.1.1",
1511+ "body-parser": "1.18.3",
1512+ "content-disposition": "0.5.2",
1513+ "content-type": "~1.0.4",
1514+ "cookie": "0.3.1",
1515+ "cookie-signature": "1.0.6",
1516+ "debug": "2.6.9",
1517+ "depd": "~1.1.2",
1518+ "encodeurl": "~1.0.2",
1519+ "escape-html": "~1.0.3",
1520+ "etag": "~1.8.1",
1521+ "finalhandler": "1.1.1",
1522+ "fresh": "0.5.2",
1523+ "merge-descriptors": "1.0.1",
1524+ "methods": "~1.1.2",
1525+ "on-finished": "~2.3.0",
1526+ "parseurl": "~1.3.2",
1527+ "path-to-regexp": "0.1.7",
1528+ "proxy-addr": "~2.0.4",
1529+ "qs": "6.5.2",
1530+ "range-parser": "~1.2.0",
1531+ "safe-buffer": "5.1.2",
1532+ "send": "0.16.2",
1533+ "serve-static": "1.13.2",
1534+ "setprototypeof": "1.1.0",
1535+ "statuses": "~1.4.0",
1536+ "type-is": "~1.6.16",
1537+ "utils-merge": "1.0.1",
1538+ "vary": "~1.1.2"
1539+ },
1540+ "dependencies": {
1541+ "array-flatten": {
1542+ "version": "1.1.1",
1543+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
1544+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
1545+ "dev": true
1546+ },
1547+ "debug": {
1548+ "version": "2.6.9",
1549+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1550+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1551+ "dev": true,
1552+ "requires": {
1553+ "ms": "2.0.0"
1554+ }
1555+ }
1556+ }
1557+ },
1558+ "extend-shallow": {
1559+ "version": "3.0.2",
1560+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
1561+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
1562+ "dev": true,
1563+ "requires": {
1564+ "assign-symbols": "^1.0.0",
1565+ "is-extendable": "^1.0.1"
1566+ },
1567+ "dependencies": {
1568+ "is-extendable": {
1569+ "version": "1.0.1",
1570+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1571+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1572+ "dev": true,
1573+ "requires": {
1574+ "is-plain-object": "^2.0.4"
1575+ }
1576+ }
1577+ }
1578+ },
1579+ "extglob": {
1580+ "version": "2.0.4",
1581+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
1582+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
1583+ "dev": true,
1584+ "requires": {
1585+ "array-unique": "^0.3.2",
1586+ "define-property": "^1.0.0",
1587+ "expand-brackets": "^2.1.4",
1588+ "extend-shallow": "^2.0.1",
1589+ "fragment-cache": "^0.2.1",
1590+ "regex-not": "^1.0.0",
1591+ "snapdragon": "^0.8.1",
1592+ "to-regex": "^3.0.1"
1593+ },
1594+ "dependencies": {
1595+ "define-property": {
1596+ "version": "1.0.0",
1597+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1598+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
1599+ "dev": true,
1600+ "requires": {
1601+ "is-descriptor": "^1.0.0"
1602+ }
1603+ },
1604+ "extend-shallow": {
1605+ "version": "2.0.1",
1606+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1607+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1608+ "dev": true,
1609+ "requires": {
1610+ "is-extendable": "^0.1.0"
1611+ }
1612+ },
1613+ "is-accessor-descriptor": {
1614+ "version": "1.0.0",
1615+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1616+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1617+ "dev": true,
1618+ "requires": {
1619+ "kind-of": "^6.0.0"
1620+ }
1621+ },
1622+ "is-data-descriptor": {
1623+ "version": "1.0.0",
1624+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1625+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1626+ "dev": true,
1627+ "requires": {
1628+ "kind-of": "^6.0.0"
1629+ }
1630+ },
1631+ "is-descriptor": {
1632+ "version": "1.0.2",
1633+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1634+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1635+ "dev": true,
1636+ "requires": {
1637+ "is-accessor-descriptor": "^1.0.0",
1638+ "is-data-descriptor": "^1.0.0",
1639+ "kind-of": "^6.0.2"
1640+ }
1641+ }
1642+ }
1643+ },
1644+ "fast-deep-equal": {
1645+ "version": "2.0.1",
1646+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
1647+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
1648+ "dev": true
1649+ },
1650+ "fast-json-stable-stringify": {
1651+ "version": "2.0.0",
1652+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
1653+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
1654+ "dev": true
1655+ },
1656+ "faye-websocket": {
1657+ "version": "0.10.0",
1658+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
1659+ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
1660+ "dev": true,
1661+ "requires": {
1662+ "websocket-driver": ">=0.5.1"
1663+ }
1664+ },
1665+ "fill-range": {
1666+ "version": "4.0.0",
1667+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
1668+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
1669+ "dev": true,
1670+ "requires": {
1671+ "extend-shallow": "^2.0.1",
1672+ "is-number": "^3.0.0",
1673+ "repeat-string": "^1.6.1",
1674+ "to-regex-range": "^2.1.0"
1675+ },
1676+ "dependencies": {
1677+ "extend-shallow": {
1678+ "version": "2.0.1",
1679+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1680+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1681+ "dev": true,
1682+ "requires": {
1683+ "is-extendable": "^0.1.0"
1684+ }
1685+ }
1686+ }
1687+ },
1688+ "finalhandler": {
1689+ "version": "1.1.1",
1690+ "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
1691+ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
1692+ "dev": true,
1693+ "requires": {
1694+ "debug": "2.6.9",
1695+ "encodeurl": "~1.0.2",
1696+ "escape-html": "~1.0.3",
1697+ "on-finished": "~2.3.0",
1698+ "parseurl": "~1.3.2",
1699+ "statuses": "~1.4.0",
1700+ "unpipe": "~1.0.0"
1701+ },
1702+ "dependencies": {
1703+ "debug": {
1704+ "version": "2.6.9",
1705+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1706+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1707+ "dev": true,
1708+ "requires": {
1709+ "ms": "2.0.0"
1710+ }
1711+ }
1712+ }
1713+ },
1714+ "find-cache-dir": {
1715+ "version": "1.0.0",
1716+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
1717+ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
1718+ "dev": true,
1719+ "requires": {
1720+ "commondir": "^1.0.1",
1721+ "make-dir": "^1.0.0",
1722+ "pkg-dir": "^2.0.0"
1723+ }
1724+ },
1725+ "find-up": {
1726+ "version": "2.1.0",
1727+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
1728+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
1729+ "dev": true,
1730+ "requires": {
1731+ "locate-path": "^2.0.0"
1732+ }
1733+ },
1734+ "flush-write-stream": {
1735+ "version": "1.0.3",
1736+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
1737+ "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
1738+ "dev": true,
1739+ "requires": {
1740+ "inherits": "^2.0.1",
1741+ "readable-stream": "^2.0.4"
1742+ }
1743+ },
1744+ "follow-redirects": {
1745+ "version": "1.5.9",
1746+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz",
1747+ "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==",
1748+ "dev": true,
1749+ "requires": {
1750+ "debug": "=3.1.0"
1751+ },
1752+ "dependencies": {
1753+ "debug": {
1754+ "version": "3.1.0",
1755+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
1756+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
1757+ "dev": true,
1758+ "requires": {
1759+ "ms": "2.0.0"
1760+ }
1761+ }
1762+ }
1763+ },
1764+ "for-in": {
1765+ "version": "1.0.2",
1766+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1767+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1768+ "dev": true
1769+ },
1770+ "forwarded": {
1771+ "version": "0.1.2",
1772+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
1773+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
1774+ "dev": true
1775+ },
1776+ "fragment-cache": {
1777+ "version": "0.2.1",
1778+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
1779+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
1780+ "dev": true,
1781+ "requires": {
1782+ "map-cache": "^0.2.2"
1783+ }
1784+ },
1785+ "fresh": {
1786+ "version": "0.5.2",
1787+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1788+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
1789+ "dev": true
1790+ },
1791+ "from2": {
1792+ "version": "2.3.0",
1793+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
1794+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
1795+ "dev": true,
1796+ "requires": {
1797+ "inherits": "^2.0.1",
1798+ "readable-stream": "^2.0.0"
1799+ }
1800+ },
1801+ "fs-write-stream-atomic": {
1802+ "version": "1.0.10",
1803+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
1804+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
1805+ "dev": true,
1806+ "requires": {
1807+ "graceful-fs": "^4.1.2",
1808+ "iferr": "^0.1.5",
1809+ "imurmurhash": "^0.1.4",
1810+ "readable-stream": "1 || 2"
1811+ }
1812+ },
1813+ "fs.realpath": {
1814+ "version": "1.0.0",
1815+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1816+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1817+ "dev": true
1818+ },
1819+ "fsevents": {
1820+ "version": "1.2.4",
1821+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
1822+ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
1823+ "dev": true,
1824+ "optional": true,
1825+ "requires": {
1826+ "nan": "^2.9.2",
1827+ "node-pre-gyp": "^0.10.0"
1828+ },
1829+ "dependencies": {
1830+ "abbrev": {
1831+ "version": "1.1.1",
1832+ "bundled": true,
1833+ "dev": true,
1834+ "optional": true
1835+ },
1836+ "ansi-regex": {
1837+ "version": "2.1.1",
1838+ "bundled": true,
1839+ "dev": true
1840+ },
1841+ "aproba": {
1842+ "version": "1.2.0",
1843+ "bundled": true,
1844+ "dev": true,
1845+ "optional": true
1846+ },
1847+ "are-we-there-yet": {
1848+ "version": "1.1.4",
1849+ "bundled": true,
1850+ "dev": true,
1851+ "optional": true,
1852+ "requires": {
1853+ "delegates": "^1.0.0",
1854+ "readable-stream": "^2.0.6"
1855+ }
1856+ },
1857+ "balanced-match": {
1858+ "version": "1.0.0",
1859+ "bundled": true,
1860+ "dev": true
1861+ },
1862+ "brace-expansion": {
1863+ "version": "1.1.11",
1864+ "bundled": true,
1865+ "dev": true,
1866+ "requires": {
1867+ "balanced-match": "^1.0.0",
1868+ "concat-map": "0.0.1"
1869+ }
1870+ },
1871+ "chownr": {
1872+ "version": "1.0.1",
1873+ "bundled": true,
1874+ "dev": true,
1875+ "optional": true
1876+ },
1877+ "code-point-at": {
1878+ "version": "1.1.0",
1879+ "bundled": true,
1880+ "dev": true
1881+ },
1882+ "concat-map": {
1883+ "version": "0.0.1",
1884+ "bundled": true,
1885+ "dev": true
1886+ },
1887+ "console-control-strings": {
1888+ "version": "1.1.0",
1889+ "bundled": true,
1890+ "dev": true
1891+ },
1892+ "core-util-is": {
1893+ "version": "1.0.2",
1894+ "bundled": true,
1895+ "dev": true,
1896+ "optional": true
1897+ },
1898+ "debug": {
1899+ "version": "2.6.9",
1900+ "bundled": true,
1901+ "dev": true,
1902+ "optional": true,
1903+ "requires": {
1904+ "ms": "2.0.0"
1905+ }
1906+ },
1907+ "deep-extend": {
1908+ "version": "0.5.1",
1909+ "bundled": true,
1910+ "dev": true,
1911+ "optional": true
1912+ },
1913+ "delegates": {
1914+ "version": "1.0.0",
1915+ "bundled": true,
1916+ "dev": true,
1917+ "optional": true
1918+ },
1919+ "detect-libc": {
1920+ "version": "1.0.3",
1921+ "bundled": true,
1922+ "dev": true,
1923+ "optional": true
1924+ },
1925+ "fs-minipass": {
1926+ "version": "1.2.5",
1927+ "bundled": true,
1928+ "dev": true,
1929+ "optional": true,
1930+ "requires": {
1931+ "minipass": "^2.2.1"
1932+ }
1933+ },
1934+ "fs.realpath": {
1935+ "version": "1.0.0",
1936+ "bundled": true,
1937+ "dev": true,
1938+ "optional": true
1939+ },
1940+ "gauge": {
1941+ "version": "2.7.4",
1942+ "bundled": true,
1943+ "dev": true,
1944+ "optional": true,
1945+ "requires": {
1946+ "aproba": "^1.0.3",
1947+ "console-control-strings": "^1.0.0",
1948+ "has-unicode": "^2.0.0",
1949+ "object-assign": "^4.1.0",
1950+ "signal-exit": "^3.0.0",
1951+ "string-width": "^1.0.1",
1952+ "strip-ansi": "^3.0.1",
1953+ "wide-align": "^1.1.0"
1954+ }
1955+ },
1956+ "glob": {
1957+ "version": "7.1.2",
1958+ "bundled": true,
1959+ "dev": true,
1960+ "optional": true,
1961+ "requires": {
1962+ "fs.realpath": "^1.0.0",
1963+ "inflight": "^1.0.4",
1964+ "inherits": "2",
1965+ "minimatch": "^3.0.4",
1966+ "once": "^1.3.0",
1967+ "path-is-absolute": "^1.0.0"
1968+ }
1969+ },
1970+ "has-unicode": {
1971+ "version": "2.0.1",
1972+ "bundled": true,
1973+ "dev": true,
1974+ "optional": true
1975+ },
1976+ "iconv-lite": {
1977+ "version": "0.4.21",
1978+ "bundled": true,
1979+ "dev": true,
1980+ "optional": true,
1981+ "requires": {
1982+ "safer-buffer": "^2.1.0"
1983+ }
1984+ },
1985+ "ignore-walk": {
1986+ "version": "3.0.1",
1987+ "bundled": true,
1988+ "dev": true,
1989+ "optional": true,
1990+ "requires": {
1991+ "minimatch": "^3.0.4"
1992+ }
1993+ },
1994+ "inflight": {
1995+ "version": "1.0.6",
1996+ "bundled": true,
1997+ "dev": true,
1998+ "optional": true,
1999+ "requires": {
2000+ "once": "^1.3.0",
2001+ "wrappy": "1"
2002+ }
2003+ },
2004+ "inherits": {
2005+ "version": "2.0.3",
2006+ "bundled": true,
2007+ "dev": true
2008+ },
2009+ "ini": {
2010+ "version": "1.3.5",
2011+ "bundled": true,
2012+ "dev": true,
2013+ "optional": true
2014+ },
2015+ "is-fullwidth-code-point": {
2016+ "version": "1.0.0",
2017+ "bundled": true,
2018+ "dev": true,
2019+ "requires": {
2020+ "number-is-nan": "^1.0.0"
2021+ }
2022+ },
2023+ "isarray": {
2024+ "version": "1.0.0",
2025+ "bundled": true,
2026+ "dev": true,
2027+ "optional": true
2028+ },
2029+ "minimatch": {
2030+ "version": "3.0.4",
2031+ "bundled": true,
2032+ "dev": true,
2033+ "requires": {
2034+ "brace-expansion": "^1.1.7"
2035+ }
2036+ },
2037+ "minimist": {
2038+ "version": "0.0.8",
2039+ "bundled": true,
2040+ "dev": true
2041+ },
2042+ "minipass": {
2043+ "version": "2.2.4",
2044+ "bundled": true,
2045+ "dev": true,
2046+ "requires": {
2047+ "safe-buffer": "^5.1.1",
2048+ "yallist": "^3.0.0"
2049+ }
2050+ },
2051+ "minizlib": {
2052+ "version": "1.1.0",
2053+ "bundled": true,
2054+ "dev": true,
2055+ "optional": true,
2056+ "requires": {
2057+ "minipass": "^2.2.1"
2058+ }
2059+ },
2060+ "mkdirp": {
2061+ "version": "0.5.1",
2062+ "bundled": true,
2063+ "dev": true,
2064+ "requires": {
2065+ "minimist": "0.0.8"
2066+ }
2067+ },
2068+ "ms": {
2069+ "version": "2.0.0",
2070+ "bundled": true,
2071+ "dev": true,
2072+ "optional": true
2073+ },
2074+ "needle": {
2075+ "version": "2.2.0",
2076+ "bundled": true,
2077+ "dev": true,
2078+ "optional": true,
2079+ "requires": {
2080+ "debug": "^2.1.2",
2081+ "iconv-lite": "^0.4.4",
2082+ "sax": "^1.2.4"
2083+ }
2084+ },
2085+ "node-pre-gyp": {
2086+ "version": "0.10.0",
2087+ "bundled": true,
2088+ "dev": true,
2089+ "optional": true,
2090+ "requires": {
2091+ "detect-libc": "^1.0.2",
2092+ "mkdirp": "^0.5.1",
2093+ "needle": "^2.2.0",
2094+ "nopt": "^4.0.1",
2095+ "npm-packlist": "^1.1.6",
2096+ "npmlog": "^4.0.2",
2097+ "rc": "^1.1.7",
2098+ "rimraf": "^2.6.1",
2099+ "semver": "^5.3.0",
2100+ "tar": "^4"
2101+ }
2102+ },
2103+ "nopt": {
2104+ "version": "4.0.1",
2105+ "bundled": true,
2106+ "dev": true,
2107+ "optional": true,
2108+ "requires": {
2109+ "abbrev": "1",
2110+ "osenv": "^0.1.4"
2111+ }
2112+ },
2113+ "npm-bundled": {
2114+ "version": "1.0.3",
2115+ "bundled": true,
2116+ "dev": true,
2117+ "optional": true
2118+ },
2119+ "npm-packlist": {
2120+ "version": "1.1.10",
2121+ "bundled": true,
2122+ "dev": true,
2123+ "optional": true,
2124+ "requires": {
2125+ "ignore-walk": "^3.0.1",
2126+ "npm-bundled": "^1.0.1"
2127+ }
2128+ },
2129+ "npmlog": {
2130+ "version": "4.1.2",
2131+ "bundled": true,
2132+ "dev": true,
2133+ "optional": true,
2134+ "requires": {
2135+ "are-we-there-yet": "~1.1.2",
2136+ "console-control-strings": "~1.1.0",
2137+ "gauge": "~2.7.3",
2138+ "set-blocking": "~2.0.0"
2139+ }
2140+ },
2141+ "number-is-nan": {
2142+ "version": "1.0.1",
2143+ "bundled": true,
2144+ "dev": true
2145+ },
2146+ "object-assign": {
2147+ "version": "4.1.1",
2148+ "bundled": true,
2149+ "dev": true,
2150+ "optional": true
2151+ },
2152+ "once": {
2153+ "version": "1.4.0",
2154+ "bundled": true,
2155+ "dev": true,
2156+ "requires": {
2157+ "wrappy": "1"
2158+ }
2159+ },
2160+ "os-homedir": {
2161+ "version": "1.0.2",
2162+ "bundled": true,
2163+ "dev": true,
2164+ "optional": true
2165+ },
2166+ "os-tmpdir": {
2167+ "version": "1.0.2",
2168+ "bundled": true,
2169+ "dev": true,
2170+ "optional": true
2171+ },
2172+ "osenv": {
2173+ "version": "0.1.5",
2174+ "bundled": true,
2175+ "dev": true,
2176+ "optional": true,
2177+ "requires": {
2178+ "os-homedir": "^1.0.0",
2179+ "os-tmpdir": "^1.0.0"
2180+ }
2181+ },
2182+ "path-is-absolute": {
2183+ "version": "1.0.1",
2184+ "bundled": true,
2185+ "dev": true,
2186+ "optional": true
2187+ },
2188+ "process-nextick-args": {
2189+ "version": "2.0.0",
2190+ "bundled": true,
2191+ "dev": true,
2192+ "optional": true
2193+ },
2194+ "rc": {
2195+ "version": "1.2.7",
2196+ "bundled": true,
2197+ "dev": true,
2198+ "optional": true,
2199+ "requires": {
2200+ "deep-extend": "^0.5.1",
2201+ "ini": "~1.3.0",
2202+ "minimist": "^1.2.0",
2203+ "strip-json-comments": "~2.0.1"
2204+ },
2205+ "dependencies": {
2206+ "minimist": {
2207+ "version": "1.2.0",
2208+ "bundled": true,
2209+ "dev": true,
2210+ "optional": true
2211+ }
2212+ }
2213+ },
2214+ "readable-stream": {
2215+ "version": "2.3.6",
2216+ "bundled": true,
2217+ "dev": true,
2218+ "optional": true,
2219+ "requires": {
2220+ "core-util-is": "~1.0.0",
2221+ "inherits": "~2.0.3",
2222+ "isarray": "~1.0.0",
2223+ "process-nextick-args": "~2.0.0",
2224+ "safe-buffer": "~5.1.1",
2225+ "string_decoder": "~1.1.1",
2226+ "util-deprecate": "~1.0.1"
2227+ }
2228+ },
2229+ "rimraf": {
2230+ "version": "2.6.2",
2231+ "bundled": true,
2232+ "dev": true,
2233+ "optional": true,
2234+ "requires": {
2235+ "glob": "^7.0.5"
2236+ }
2237+ },
2238+ "safe-buffer": {
2239+ "version": "5.1.1",
2240+ "bundled": true,
2241+ "dev": true
2242+ },
2243+ "safer-buffer": {
2244+ "version": "2.1.2",
2245+ "bundled": true,
2246+ "dev": true,
2247+ "optional": true
2248+ },
2249+ "sax": {
2250+ "version": "1.2.4",
2251+ "bundled": true,
2252+ "dev": true,
2253+ "optional": true
2254+ },
2255+ "semver": {
2256+ "version": "5.5.0",
2257+ "bundled": true,
2258+ "dev": true,
2259+ "optional": true
2260+ },
2261+ "set-blocking": {
2262+ "version": "2.0.0",
2263+ "bundled": true,
2264+ "dev": true,
2265+ "optional": true
2266+ },
2267+ "signal-exit": {
2268+ "version": "3.0.2",
2269+ "bundled": true,
2270+ "dev": true,
2271+ "optional": true
2272+ },
2273+ "string-width": {
2274+ "version": "1.0.2",
2275+ "bundled": true,
2276+ "dev": true,
2277+ "requires": {
2278+ "code-point-at": "^1.0.0",
2279+ "is-fullwidth-code-point": "^1.0.0",
2280+ "strip-ansi": "^3.0.0"
2281+ }
2282+ },
2283+ "string_decoder": {
2284+ "version": "1.1.1",
2285+ "bundled": true,
2286+ "dev": true,
2287+ "optional": true,
2288+ "requires": {
2289+ "safe-buffer": "~5.1.0"
2290+ }
2291+ },
2292+ "strip-ansi": {
2293+ "version": "3.0.1",
2294+ "bundled": true,
2295+ "dev": true,
2296+ "requires": {
2297+ "ansi-regex": "^2.0.0"
2298+ }
2299+ },
2300+ "strip-json-comments": {
2301+ "version": "2.0.1",
2302+ "bundled": true,
2303+ "dev": true,
2304+ "optional": true
2305+ },
2306+ "tar": {
2307+ "version": "4.4.1",
2308+ "bundled": true,
2309+ "dev": true,
2310+ "optional": true,
2311+ "requires": {
2312+ "chownr": "^1.0.1",
2313+ "fs-minipass": "^1.2.5",
2314+ "minipass": "^2.2.4",
2315+ "minizlib": "^1.1.0",
2316+ "mkdirp": "^0.5.0",
2317+ "safe-buffer": "^5.1.1",
2318+ "yallist": "^3.0.2"
2319+ }
2320+ },
2321+ "util-deprecate": {
2322+ "version": "1.0.2",
2323+ "bundled": true,
2324+ "dev": true,
2325+ "optional": true
2326+ },
2327+ "wide-align": {
2328+ "version": "1.1.2",
2329+ "bundled": true,
2330+ "dev": true,
2331+ "optional": true,
2332+ "requires": {
2333+ "string-width": "^1.0.2"
2334+ }
2335+ },
2336+ "wrappy": {
2337+ "version": "1.0.2",
2338+ "bundled": true,
2339+ "dev": true
2340+ },
2341+ "yallist": {
2342+ "version": "3.0.2",
2343+ "bundled": true,
2344+ "dev": true
2345+ }
2346+ }
2347+ },
2348+ "get-caller-file": {
2349+ "version": "1.0.3",
2350+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
2351+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
2352+ "dev": true
2353+ },
2354+ "get-stream": {
2355+ "version": "3.0.0",
2356+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
2357+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
2358+ "dev": true
2359+ },
2360+ "get-value": {
2361+ "version": "2.0.6",
2362+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
2363+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
2364+ "dev": true
2365+ },
2366+ "glob": {
2367+ "version": "7.1.2",
2368+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
2369+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
2370+ "dev": true,
2371+ "requires": {
2372+ "fs.realpath": "^1.0.0",
2373+ "inflight": "^1.0.4",
2374+ "inherits": "2",
2375+ "minimatch": "^3.0.4",
2376+ "once": "^1.3.0",
2377+ "path-is-absolute": "^1.0.0"
2378+ }
2379+ },
2380+ "glob-parent": {
2381+ "version": "3.1.0",
2382+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
2383+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
2384+ "dev": true,
2385+ "requires": {
2386+ "is-glob": "^3.1.0",
2387+ "path-dirname": "^1.0.0"
2388+ },
2389+ "dependencies": {
2390+ "is-glob": {
2391+ "version": "3.1.0",
2392+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
2393+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
2394+ "dev": true,
2395+ "requires": {
2396+ "is-extglob": "^2.1.0"
2397+ }
2398+ }
2399+ }
2400+ },
2401+ "global-modules-path": {
2402+ "version": "2.3.0",
2403+ "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz",
2404+ "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==",
2405+ "dev": true
2406+ },
2407+ "globby": {
2408+ "version": "6.1.0",
2409+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
2410+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
2411+ "dev": true,
2412+ "requires": {
2413+ "array-union": "^1.0.1",
2414+ "glob": "^7.0.3",
2415+ "object-assign": "^4.0.1",
2416+ "pify": "^2.0.0",
2417+ "pinkie-promise": "^2.0.0"
2418+ },
2419+ "dependencies": {
2420+ "pify": {
2421+ "version": "2.3.0",
2422+ "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2423+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
2424+ "dev": true
2425+ }
2426+ }
2427+ },
2428+ "graceful-fs": {
2429+ "version": "4.1.11",
2430+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
2431+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
2432+ "dev": true
2433+ },
2434+ "handle-thing": {
2435+ "version": "1.2.5",
2436+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
2437+ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
2438+ "dev": true
2439+ },
2440+ "has-flag": {
2441+ "version": "3.0.0",
2442+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2443+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
2444+ "dev": true
2445+ },
2446+ "has-value": {
2447+ "version": "1.0.0",
2448+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
2449+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
2450+ "dev": true,
2451+ "requires": {
2452+ "get-value": "^2.0.6",
2453+ "has-values": "^1.0.0",
2454+ "isobject": "^3.0.0"
2455+ }
2456+ },
2457+ "has-values": {
2458+ "version": "1.0.0",
2459+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
2460+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
2461+ "dev": true,
2462+ "requires": {
2463+ "is-number": "^3.0.0",
2464+ "kind-of": "^4.0.0"
2465+ },
2466+ "dependencies": {
2467+ "kind-of": {
2468+ "version": "4.0.0",
2469+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
2470+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
2471+ "dev": true,
2472+ "requires": {
2473+ "is-buffer": "^1.1.5"
2474+ }
2475+ }
2476+ }
2477+ },
2478+ "hash-base": {
2479+ "version": "3.0.4",
2480+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
2481+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
2482+ "dev": true,
2483+ "requires": {
2484+ "inherits": "^2.0.1",
2485+ "safe-buffer": "^5.0.1"
2486+ }
2487+ },
2488+ "hash.js": {
2489+ "version": "1.1.5",
2490+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
2491+ "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
2492+ "dev": true,
2493+ "requires": {
2494+ "inherits": "^2.0.3",
2495+ "minimalistic-assert": "^1.0.1"
2496+ }
2497+ },
2498+ "hmac-drbg": {
2499+ "version": "1.0.1",
2500+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
2501+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
2502+ "dev": true,
2503+ "requires": {
2504+ "hash.js": "^1.0.3",
2505+ "minimalistic-assert": "^1.0.0",
2506+ "minimalistic-crypto-utils": "^1.0.1"
2507+ }
2508+ },
2509+ "hpack.js": {
2510+ "version": "2.1.6",
2511+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
2512+ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
2513+ "dev": true,
2514+ "requires": {
2515+ "inherits": "^2.0.1",
2516+ "obuf": "^1.0.0",
2517+ "readable-stream": "^2.0.1",
2518+ "wbuf": "^1.1.0"
2519+ }
2520+ },
2521+ "html-entities": {
2522+ "version": "1.2.1",
2523+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
2524+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
2525+ "dev": true
2526+ },
2527+ "http-deceiver": {
2528+ "version": "1.2.7",
2529+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
2530+ "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
2531+ "dev": true
2532+ },
2533+ "http-errors": {
2534+ "version": "1.6.3",
2535+ "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
2536+ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
2537+ "dev": true,
2538+ "requires": {
2539+ "depd": "~1.1.2",
2540+ "inherits": "2.0.3",
2541+ "setprototypeof": "1.1.0",
2542+ "statuses": ">= 1.4.0 < 2"
2543+ }
2544+ },
2545+ "http-parser-js": {
2546+ "version": "0.5.0",
2547+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
2548+ "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==",
2549+ "dev": true
2550+ },
2551+ "http-proxy": {
2552+ "version": "1.17.0",
2553+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
2554+ "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
2555+ "dev": true,
2556+ "requires": {
2557+ "eventemitter3": "^3.0.0",
2558+ "follow-redirects": "^1.0.0",
2559+ "requires-port": "^1.0.0"
2560+ }
2561+ },
2562+ "http-proxy-middleware": {
2563+ "version": "0.18.0",
2564+ "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
2565+ "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
2566+ "dev": true,
2567+ "requires": {
2568+ "http-proxy": "^1.16.2",
2569+ "is-glob": "^4.0.0",
2570+ "lodash": "^4.17.5",
2571+ "micromatch": "^3.1.9"
2572+ }
2573+ },
2574+ "https-browserify": {
2575+ "version": "1.0.0",
2576+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
2577+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
2578+ "dev": true
2579+ },
2580+ "iconv-lite": {
2581+ "version": "0.4.23",
2582+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
2583+ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
2584+ "dev": true,
2585+ "requires": {
2586+ "safer-buffer": ">= 2.1.2 < 3"
2587+ }
2588+ },
2589+ "ieee754": {
2590+ "version": "1.1.12",
2591+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
2592+ "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
2593+ "dev": true
2594+ },
2595+ "iferr": {
2596+ "version": "0.1.5",
2597+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
2598+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
2599+ "dev": true
2600+ },
2601+ "ignore": {
2602+ "version": "3.3.10",
2603+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
2604+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
2605+ "dev": true
2606+ },
2607+ "import-local": {
2608+ "version": "2.0.0",
2609+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
2610+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
2611+ "dev": true,
2612+ "requires": {
2613+ "pkg-dir": "^3.0.0",
2614+ "resolve-cwd": "^2.0.0"
2615+ },
2616+ "dependencies": {
2617+ "find-up": {
2618+ "version": "3.0.0",
2619+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
2620+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
2621+ "dev": true,
2622+ "requires": {
2623+ "locate-path": "^3.0.0"
2624+ }
2625+ },
2626+ "locate-path": {
2627+ "version": "3.0.0",
2628+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
2629+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
2630+ "dev": true,
2631+ "requires": {
2632+ "p-locate": "^3.0.0",
2633+ "path-exists": "^3.0.0"
2634+ }
2635+ },
2636+ "p-limit": {
2637+ "version": "2.0.0",
2638+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
2639+ "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
2640+ "dev": true,
2641+ "requires": {
2642+ "p-try": "^2.0.0"
2643+ }
2644+ },
2645+ "p-locate": {
2646+ "version": "3.0.0",
2647+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
2648+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
2649+ "dev": true,
2650+ "requires": {
2651+ "p-limit": "^2.0.0"
2652+ }
2653+ },
2654+ "p-try": {
2655+ "version": "2.0.0",
2656+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
2657+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
2658+ "dev": true
2659+ },
2660+ "pkg-dir": {
2661+ "version": "3.0.0",
2662+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
2663+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
2664+ "dev": true,
2665+ "requires": {
2666+ "find-up": "^3.0.0"
2667+ }
2668+ }
2669+ }
2670+ },
2671+ "imurmurhash": {
2672+ "version": "0.1.4",
2673+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2674+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
2675+ "dev": true
2676+ },
2677+ "indexof": {
2678+ "version": "0.0.1",
2679+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
2680+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
2681+ "dev": true
2682+ },
2683+ "inflight": {
2684+ "version": "1.0.6",
2685+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2686+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
2687+ "dev": true,
2688+ "requires": {
2689+ "once": "^1.3.0",
2690+ "wrappy": "1"
2691+ }
2692+ },
2693+ "inherits": {
2694+ "version": "2.0.3",
2695+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
2696+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
2697+ "dev": true
2698+ },
2699+ "internal-ip": {
2700+ "version": "3.0.1",
2701+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz",
2702+ "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==",
2703+ "dev": true,
2704+ "requires": {
2705+ "default-gateway": "^2.6.0",
2706+ "ipaddr.js": "^1.5.2"
2707+ }
2708+ },
2709+ "interpret": {
2710+ "version": "1.1.0",
2711+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
2712+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
2713+ "dev": true
2714+ },
2715+ "invert-kv": {
2716+ "version": "2.0.0",
2717+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
2718+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
2719+ "dev": true
2720+ },
2721+ "ip": {
2722+ "version": "1.1.5",
2723+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
2724+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
2725+ "dev": true
2726+ },
2727+ "ip-regex": {
2728+ "version": "2.1.0",
2729+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
2730+ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
2731+ "dev": true
2732+ },
2733+ "ipaddr.js": {
2734+ "version": "1.8.0",
2735+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
2736+ "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
2737+ "dev": true
2738+ },
2739+ "is-accessor-descriptor": {
2740+ "version": "0.1.6",
2741+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
2742+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
2743+ "dev": true,
2744+ "requires": {
2745+ "kind-of": "^3.0.2"
2746+ },
2747+ "dependencies": {
2748+ "kind-of": {
2749+ "version": "3.2.2",
2750+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2751+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2752+ "dev": true,
2753+ "requires": {
2754+ "is-buffer": "^1.1.5"
2755+ }
2756+ }
2757+ }
2758+ },
2759+ "is-binary-path": {
2760+ "version": "1.0.1",
2761+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
2762+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
2763+ "dev": true,
2764+ "requires": {
2765+ "binary-extensions": "^1.0.0"
2766+ }
2767+ },
2768+ "is-buffer": {
2769+ "version": "1.1.6",
2770+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
2771+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
2772+ "dev": true
2773+ },
2774+ "is-data-descriptor": {
2775+ "version": "0.1.4",
2776+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
2777+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
2778+ "dev": true,
2779+ "requires": {
2780+ "kind-of": "^3.0.2"
2781+ },
2782+ "dependencies": {
2783+ "kind-of": {
2784+ "version": "3.2.2",
2785+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2786+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2787+ "dev": true,
2788+ "requires": {
2789+ "is-buffer": "^1.1.5"
2790+ }
2791+ }
2792+ }
2793+ },
2794+ "is-descriptor": {
2795+ "version": "0.1.6",
2796+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
2797+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
2798+ "dev": true,
2799+ "requires": {
2800+ "is-accessor-descriptor": "^0.1.6",
2801+ "is-data-descriptor": "^0.1.4",
2802+ "kind-of": "^5.0.0"
2803+ },
2804+ "dependencies": {
2805+ "kind-of": {
2806+ "version": "5.1.0",
2807+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
2808+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
2809+ "dev": true
2810+ }
2811+ }
2812+ },
2813+ "is-extendable": {
2814+ "version": "0.1.1",
2815+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
2816+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
2817+ "dev": true
2818+ },
2819+ "is-extglob": {
2820+ "version": "2.1.1",
2821+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2822+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2823+ "dev": true
2824+ },
2825+ "is-fullwidth-code-point": {
2826+ "version": "2.0.0",
2827+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2828+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2829+ "dev": true
2830+ },
2831+ "is-glob": {
2832+ "version": "4.0.0",
2833+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
2834+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
2835+ "dev": true,
2836+ "requires": {
2837+ "is-extglob": "^2.1.1"
2838+ }
2839+ },
2840+ "is-number": {
2841+ "version": "3.0.0",
2842+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
2843+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
2844+ "dev": true,
2845+ "requires": {
2846+ "kind-of": "^3.0.2"
2847+ },
2848+ "dependencies": {
2849+ "kind-of": {
2850+ "version": "3.2.2",
2851+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2852+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2853+ "dev": true,
2854+ "requires": {
2855+ "is-buffer": "^1.1.5"
2856+ }
2857+ }
2858+ }
2859+ },
2860+ "is-path-cwd": {
2861+ "version": "1.0.0",
2862+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
2863+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
2864+ "dev": true
2865+ },
2866+ "is-path-in-cwd": {
2867+ "version": "1.0.1",
2868+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
2869+ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
2870+ "dev": true,
2871+ "requires": {
2872+ "is-path-inside": "^1.0.0"
2873+ }
2874+ },
2875+ "is-path-inside": {
2876+ "version": "1.0.1",
2877+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
2878+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
2879+ "dev": true,
2880+ "requires": {
2881+ "path-is-inside": "^1.0.1"
2882+ }
2883+ },
2884+ "is-plain-object": {
2885+ "version": "2.0.4",
2886+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
2887+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
2888+ "dev": true,
2889+ "requires": {
2890+ "isobject": "^3.0.1"
2891+ }
2892+ },
2893+ "is-stream": {
2894+ "version": "1.1.0",
2895+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
2896+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
2897+ "dev": true
2898+ },
2899+ "is-windows": {
2900+ "version": "1.0.2",
2901+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
2902+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
2903+ "dev": true
2904+ },
2905+ "is-wsl": {
2906+ "version": "1.1.0",
2907+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
2908+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
2909+ "dev": true
2910+ },
2911+ "isarray": {
2912+ "version": "1.0.0",
2913+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2914+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
2915+ "dev": true
2916+ },
2917+ "isexe": {
2918+ "version": "2.0.0",
2919+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2920+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2921+ "dev": true
2922+ },
2923+ "isobject": {
2924+ "version": "3.0.1",
2925+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
2926+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
2927+ "dev": true
2928+ },
2929+ "json-parse-better-errors": {
2930+ "version": "1.0.2",
2931+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
2932+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
2933+ "dev": true
2934+ },
2935+ "json-schema-traverse": {
2936+ "version": "0.4.1",
2937+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2938+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2939+ "dev": true
2940+ },
2941+ "json3": {
2942+ "version": "3.3.2",
2943+ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
2944+ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
2945+ "dev": true
2946+ },
2947+ "json5": {
2948+ "version": "0.5.1",
2949+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
2950+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
2951+ "dev": true
2952+ },
2953+ "killable": {
2954+ "version": "1.0.1",
2955+ "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
2956+ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
2957+ "dev": true
2958+ },
2959+ "kind-of": {
2960+ "version": "6.0.2",
2961+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
2962+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
2963+ "dev": true
2964+ },
2965+ "lcid": {
2966+ "version": "2.0.0",
2967+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
2968+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
2969+ "dev": true,
2970+ "requires": {
2971+ "invert-kv": "^2.0.0"
2972+ }
2973+ },
2974+ "loader-runner": {
2975+ "version": "2.3.1",
2976+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz",
2977+ "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==",
2978+ "dev": true
2979+ },
2980+ "loader-utils": {
2981+ "version": "1.1.0",
2982+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
2983+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
2984+ "dev": true,
2985+ "requires": {
2986+ "big.js": "^3.1.3",
2987+ "emojis-list": "^2.0.0",
2988+ "json5": "^0.5.0"
2989+ }
2990+ },
2991+ "locate-path": {
2992+ "version": "2.0.0",
2993+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2994+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2995+ "dev": true,
2996+ "requires": {
2997+ "p-locate": "^2.0.0",
2998+ "path-exists": "^3.0.0"
2999+ }
3000+ },
3001+ "lodash": {
3002+ "version": "4.17.11",
3003+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
3004+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
3005+ "dev": true
3006+ },
3007+ "lodash.debounce": {
3008+ "version": "4.0.8",
3009+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
3010+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
3011+ "dev": true
3012+ },
3013+ "loglevel": {
3014+ "version": "1.6.1",
3015+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
3016+ "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=",
3017+ "dev": true
3018+ },
3019+ "lru-cache": {
3020+ "version": "4.1.3",
3021+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
3022+ "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
3023+ "dev": true,
3024+ "requires": {
3025+ "pseudomap": "^1.0.2",
3026+ "yallist": "^2.1.2"
3027+ }
3028+ },
3029+ "make-dir": {
3030+ "version": "1.3.0",
3031+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
3032+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
3033+ "dev": true,
3034+ "requires": {
3035+ "pify": "^3.0.0"
3036+ }
3037+ },
3038+ "map-age-cleaner": {
3039+ "version": "0.1.2",
3040+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz",
3041+ "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==",
3042+ "dev": true,
3043+ "requires": {
3044+ "p-defer": "^1.0.0"
3045+ }
3046+ },
3047+ "map-cache": {
3048+ "version": "0.2.2",
3049+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
3050+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
3051+ "dev": true
3052+ },
3053+ "map-visit": {
3054+ "version": "1.0.0",
3055+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
3056+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
3057+ "dev": true,
3058+ "requires": {
3059+ "object-visit": "^1.0.0"
3060+ }
3061+ },
3062+ "md5.js": {
3063+ "version": "1.3.5",
3064+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
3065+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
3066+ "dev": true,
3067+ "requires": {
3068+ "hash-base": "^3.0.0",
3069+ "inherits": "^2.0.1",
3070+ "safe-buffer": "^5.1.2"
3071+ }
3072+ },
3073+ "media-typer": {
3074+ "version": "0.3.0",
3075+ "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
3076+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
3077+ "dev": true
3078+ },
3079+ "mem": {
3080+ "version": "4.0.0",
3081+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
3082+ "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
3083+ "dev": true,
3084+ "requires": {
3085+ "map-age-cleaner": "^0.1.1",
3086+ "mimic-fn": "^1.0.0",
3087+ "p-is-promise": "^1.1.0"
3088+ }
3089+ },
3090+ "memory-fs": {
3091+ "version": "0.4.1",
3092+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
3093+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
3094+ "dev": true,
3095+ "requires": {
3096+ "errno": "^0.1.3",
3097+ "readable-stream": "^2.0.1"
3098+ }
3099+ },
3100+ "merge-descriptors": {
3101+ "version": "1.0.1",
3102+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
3103+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
3104+ "dev": true
3105+ },
3106+ "methods": {
3107+ "version": "1.1.2",
3108+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
3109+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
3110+ "dev": true
3111+ },
3112+ "micromatch": {
3113+ "version": "3.1.10",
3114+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
3115+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
3116+ "dev": true,
3117+ "requires": {
3118+ "arr-diff": "^4.0.0",
3119+ "array-unique": "^0.3.2",
3120+ "braces": "^2.3.1",
3121+ "define-property": "^2.0.2",
3122+ "extend-shallow": "^3.0.2",
3123+ "extglob": "^2.0.4",
3124+ "fragment-cache": "^0.2.1",
3125+ "kind-of": "^6.0.2",
3126+ "nanomatch": "^1.2.9",
3127+ "object.pick": "^1.3.0",
3128+ "regex-not": "^1.0.0",
3129+ "snapdragon": "^0.8.1",
3130+ "to-regex": "^3.0.2"
3131+ }
3132+ },
3133+ "miller-rabin": {
3134+ "version": "4.0.1",
3135+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
3136+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
3137+ "dev": true,
3138+ "requires": {
3139+ "bn.js": "^4.0.0",
3140+ "brorand": "^1.0.1"
3141+ }
3142+ },
3143+ "mime": {
3144+ "version": "1.4.1",
3145+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
3146+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
3147+ "dev": true
3148+ },
3149+ "mime-db": {
3150+ "version": "1.37.0",
3151+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
3152+ "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
3153+ "dev": true
3154+ },
3155+ "mime-types": {
3156+ "version": "2.1.21",
3157+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
3158+ "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
3159+ "dev": true,
3160+ "requires": {
3161+ "mime-db": "~1.37.0"
3162+ }
3163+ },
3164+ "mimic-fn": {
3165+ "version": "1.2.0",
3166+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
3167+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
3168+ "dev": true
3169+ },
3170+ "minimalistic-assert": {
3171+ "version": "1.0.1",
3172+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
3173+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
3174+ "dev": true
3175+ },
3176+ "minimalistic-crypto-utils": {
3177+ "version": "1.0.1",
3178+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
3179+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
3180+ "dev": true
3181+ },
3182+ "minimatch": {
3183+ "version": "3.0.4",
3184+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
3185+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
3186+ "dev": true,
3187+ "requires": {
3188+ "brace-expansion": "^1.1.7"
3189+ }
3190+ },
3191+ "minimist": {
3192+ "version": "0.0.8",
3193+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
3194+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
3195+ "dev": true
3196+ },
3197+ "mississippi": {
3198+ "version": "2.0.0",
3199+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
3200+ "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
3201+ "dev": true,
3202+ "requires": {
3203+ "concat-stream": "^1.5.0",
3204+ "duplexify": "^3.4.2",
3205+ "end-of-stream": "^1.1.0",
3206+ "flush-write-stream": "^1.0.0",
3207+ "from2": "^2.1.0",
3208+ "parallel-transform": "^1.1.0",
3209+ "pump": "^2.0.1",
3210+ "pumpify": "^1.3.3",
3211+ "stream-each": "^1.1.0",
3212+ "through2": "^2.0.0"
3213+ }
3214+ },
3215+ "mixin-deep": {
3216+ "version": "1.3.1",
3217+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
3218+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
3219+ "dev": true,
3220+ "requires": {
3221+ "for-in": "^1.0.2",
3222+ "is-extendable": "^1.0.1"
3223+ },
3224+ "dependencies": {
3225+ "is-extendable": {
3226+ "version": "1.0.1",
3227+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
3228+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
3229+ "dev": true,
3230+ "requires": {
3231+ "is-plain-object": "^2.0.4"
3232+ }
3233+ }
3234+ }
3235+ },
3236+ "mkdirp": {
3237+ "version": "0.5.1",
3238+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
3239+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
3240+ "dev": true,
3241+ "requires": {
3242+ "minimist": "0.0.8"
3243+ }
3244+ },
3245+ "move-concurrently": {
3246+ "version": "1.0.1",
3247+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
3248+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
3249+ "dev": true,
3250+ "requires": {
3251+ "aproba": "^1.1.1",
3252+ "copy-concurrently": "^1.0.0",
3253+ "fs-write-stream-atomic": "^1.0.8",
3254+ "mkdirp": "^0.5.1",
3255+ "rimraf": "^2.5.4",
3256+ "run-queue": "^1.0.3"
3257+ }
3258+ },
3259+ "ms": {
3260+ "version": "2.0.0",
3261+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
3262+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
3263+ "dev": true
3264+ },
3265+ "multicast-dns": {
3266+ "version": "6.2.3",
3267+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
3268+ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
3269+ "dev": true,
3270+ "requires": {
3271+ "dns-packet": "^1.3.1",
3272+ "thunky": "^1.0.2"
3273+ }
3274+ },
3275+ "multicast-dns-service-types": {
3276+ "version": "1.1.0",
3277+ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
3278+ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
3279+ "dev": true
3280+ },
3281+ "nan": {
3282+ "version": "2.10.0",
3283+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
3284+ "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
3285+ "dev": true,
3286+ "optional": true
3287+ },
3288+ "nanomatch": {
3289+ "version": "1.2.13",
3290+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
3291+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
3292+ "dev": true,
3293+ "requires": {
3294+ "arr-diff": "^4.0.0",
3295+ "array-unique": "^0.3.2",
3296+ "define-property": "^2.0.2",
3297+ "extend-shallow": "^3.0.2",
3298+ "fragment-cache": "^0.2.1",
3299+ "is-windows": "^1.0.2",
3300+ "kind-of": "^6.0.2",
3301+ "object.pick": "^1.3.0",
3302+ "regex-not": "^1.0.0",
3303+ "snapdragon": "^0.8.1",
3304+ "to-regex": "^3.0.1"
3305+ }
3306+ },
3307+ "negotiator": {
3308+ "version": "0.6.1",
3309+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
3310+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
3311+ "dev": true
3312+ },
3313+ "neo-async": {
3314+ "version": "2.6.0",
3315+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
3316+ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
3317+ "dev": true
3318+ },
3319+ "nice-try": {
3320+ "version": "1.0.4",
3321+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz",
3322+ "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==",
3323+ "dev": true
3324+ },
3325+ "node-forge": {
3326+ "version": "0.7.5",
3327+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
3328+ "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
3329+ "dev": true
3330+ },
3331+ "node-libs-browser": {
3332+ "version": "2.1.0",
3333+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
3334+ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
3335+ "dev": true,
3336+ "requires": {
3337+ "assert": "^1.1.1",
3338+ "browserify-zlib": "^0.2.0",
3339+ "buffer": "^4.3.0",
3340+ "console-browserify": "^1.1.0",
3341+ "constants-browserify": "^1.0.0",
3342+ "crypto-browserify": "^3.11.0",
3343+ "domain-browser": "^1.1.1",
3344+ "events": "^1.0.0",
3345+ "https-browserify": "^1.0.0",
3346+ "os-browserify": "^0.3.0",
3347+ "path-browserify": "0.0.0",
3348+ "process": "^0.11.10",
3349+ "punycode": "^1.2.4",
3350+ "querystring-es3": "^0.2.0",
3351+ "readable-stream": "^2.3.3",
3352+ "stream-browserify": "^2.0.1",
3353+ "stream-http": "^2.7.2",
3354+ "string_decoder": "^1.0.0",
3355+ "timers-browserify": "^2.0.4",
3356+ "tty-browserify": "0.0.0",
3357+ "url": "^0.11.0",
3358+ "util": "^0.10.3",
3359+ "vm-browserify": "0.0.4"
3360+ },
3361+ "dependencies": {
3362+ "punycode": {
3363+ "version": "1.4.1",
3364+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
3365+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
3366+ "dev": true
3367+ }
3368+ }
3369+ },
3370+ "normalize-path": {
3371+ "version": "2.1.1",
3372+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
3373+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
3374+ "dev": true,
3375+ "requires": {
3376+ "remove-trailing-separator": "^1.0.1"
3377+ }
3378+ },
3379+ "npm-run-path": {
3380+ "version": "2.0.2",
3381+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
3382+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
3383+ "dev": true,
3384+ "requires": {
3385+ "path-key": "^2.0.0"
3386+ }
3387+ },
3388+ "number-is-nan": {
3389+ "version": "1.0.1",
3390+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
3391+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
3392+ "dev": true
3393+ },
3394+ "object-assign": {
3395+ "version": "4.1.1",
3396+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3397+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
3398+ "dev": true
3399+ },
3400+ "object-copy": {
3401+ "version": "0.1.0",
3402+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
3403+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
3404+ "dev": true,
3405+ "requires": {
3406+ "copy-descriptor": "^0.1.0",
3407+ "define-property": "^0.2.5",
3408+ "kind-of": "^3.0.3"
3409+ },
3410+ "dependencies": {
3411+ "define-property": {
3412+ "version": "0.2.5",
3413+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
3414+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
3415+ "dev": true,
3416+ "requires": {
3417+ "is-descriptor": "^0.1.0"
3418+ }
3419+ },
3420+ "kind-of": {
3421+ "version": "3.2.2",
3422+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
3423+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
3424+ "dev": true,
3425+ "requires": {
3426+ "is-buffer": "^1.1.5"
3427+ }
3428+ }
3429+ }
3430+ },
3431+ "object-visit": {
3432+ "version": "1.0.1",
3433+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
3434+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
3435+ "dev": true,
3436+ "requires": {
3437+ "isobject": "^3.0.0"
3438+ }
3439+ },
3440+ "object.pick": {
3441+ "version": "1.3.0",
3442+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
3443+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
3444+ "dev": true,
3445+ "requires": {
3446+ "isobject": "^3.0.1"
3447+ }
3448+ },
3449+ "obuf": {
3450+ "version": "1.1.2",
3451+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
3452+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
3453+ "dev": true
3454+ },
3455+ "on-finished": {
3456+ "version": "2.3.0",
3457+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
3458+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
3459+ "dev": true,
3460+ "requires": {
3461+ "ee-first": "1.1.1"
3462+ }
3463+ },
3464+ "on-headers": {
3465+ "version": "1.0.1",
3466+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
3467+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
3468+ "dev": true
3469+ },
3470+ "once": {
3471+ "version": "1.4.0",
3472+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3473+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
3474+ "dev": true,
3475+ "requires": {
3476+ "wrappy": "1"
3477+ }
3478+ },
3479+ "opn": {
3480+ "version": "5.4.0",
3481+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz",
3482+ "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==",
3483+ "dev": true,
3484+ "requires": {
3485+ "is-wsl": "^1.1.0"
3486+ }
3487+ },
3488+ "original": {
3489+ "version": "1.0.2",
3490+ "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
3491+ "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
3492+ "dev": true,
3493+ "requires": {
3494+ "url-parse": "^1.4.3"
3495+ }
3496+ },
3497+ "os-browserify": {
3498+ "version": "0.3.0",
3499+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
3500+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
3501+ "dev": true
3502+ },
3503+ "os-locale": {
3504+ "version": "3.0.1",
3505+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
3506+ "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
3507+ "dev": true,
3508+ "requires": {
3509+ "execa": "^0.10.0",
3510+ "lcid": "^2.0.0",
3511+ "mem": "^4.0.0"
3512+ }
3513+ },
3514+ "p-defer": {
3515+ "version": "1.0.0",
3516+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
3517+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
3518+ "dev": true
3519+ },
3520+ "p-finally": {
3521+ "version": "1.0.0",
3522+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
3523+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
3524+ "dev": true
3525+ },
3526+ "p-is-promise": {
3527+ "version": "1.1.0",
3528+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
3529+ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
3530+ "dev": true
3531+ },
3532+ "p-limit": {
3533+ "version": "1.3.0",
3534+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
3535+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
3536+ "dev": true,
3537+ "requires": {
3538+ "p-try": "^1.0.0"
3539+ }
3540+ },
3541+ "p-locate": {
3542+ "version": "2.0.0",
3543+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
3544+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
3545+ "dev": true,
3546+ "requires": {
3547+ "p-limit": "^1.1.0"
3548+ }
3549+ },
3550+ "p-map": {
3551+ "version": "1.2.0",
3552+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
3553+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
3554+ "dev": true
3555+ },
3556+ "p-try": {
3557+ "version": "1.0.0",
3558+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
3559+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
3560+ "dev": true
3561+ },
3562+ "pako": {
3563+ "version": "1.0.6",
3564+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
3565+ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
3566+ "dev": true
3567+ },
3568+ "parallel-transform": {
3569+ "version": "1.1.0",
3570+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
3571+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
3572+ "dev": true,
3573+ "requires": {
3574+ "cyclist": "~0.2.2",
3575+ "inherits": "^2.0.3",
3576+ "readable-stream": "^2.1.5"
3577+ }
3578+ },
3579+ "parse-asn1": {
3580+ "version": "5.1.1",
3581+ "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
3582+ "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
3583+ "dev": true,
3584+ "requires": {
3585+ "asn1.js": "^4.0.0",
3586+ "browserify-aes": "^1.0.0",
3587+ "create-hash": "^1.1.0",
3588+ "evp_bytestokey": "^1.0.0",
3589+ "pbkdf2": "^3.0.3"
3590+ }
3591+ },
3592+ "parseurl": {
3593+ "version": "1.3.2",
3594+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
3595+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
3596+ "dev": true
3597+ },
3598+ "pascalcase": {
3599+ "version": "0.1.1",
3600+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
3601+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
3602+ "dev": true
3603+ },
3604+ "path-browserify": {
3605+ "version": "0.0.0",
3606+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
3607+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
3608+ "dev": true
3609+ },
3610+ "path-dirname": {
3611+ "version": "1.0.2",
3612+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
3613+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
3614+ "dev": true
3615+ },
3616+ "path-exists": {
3617+ "version": "3.0.0",
3618+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
3619+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
3620+ "dev": true
3621+ },
3622+ "path-is-absolute": {
3623+ "version": "1.0.1",
3624+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3625+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3626+ "dev": true
3627+ },
3628+ "path-is-inside": {
3629+ "version": "1.0.2",
3630+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
3631+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
3632+ "dev": true
3633+ },
3634+ "path-key": {
3635+ "version": "2.0.1",
3636+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
3637+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
3638+ "dev": true
3639+ },
3640+ "path-to-regexp": {
3641+ "version": "0.1.7",
3642+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
3643+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
3644+ "dev": true
3645+ },
3646+ "path-type": {
3647+ "version": "3.0.0",
3648+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
3649+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
3650+ "dev": true,
3651+ "requires": {
3652+ "pify": "^3.0.0"
3653+ }
3654+ },
3655+ "pbkdf2": {
3656+ "version": "3.0.17",
3657+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
3658+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
3659+ "dev": true,
3660+ "requires": {
3661+ "create-hash": "^1.1.2",
3662+ "create-hmac": "^1.1.4",
3663+ "ripemd160": "^2.0.1",
3664+ "safe-buffer": "^5.0.1",
3665+ "sha.js": "^2.4.8"
3666+ }
3667+ },
3668+ "pify": {
3669+ "version": "3.0.0",
3670+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
3671+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
3672+ "dev": true
3673+ },
3674+ "pinkie": {
3675+ "version": "2.0.4",
3676+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
3677+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
3678+ "dev": true
3679+ },
3680+ "pinkie-promise": {
3681+ "version": "2.0.1",
3682+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
3683+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
3684+ "dev": true,
3685+ "requires": {
3686+ "pinkie": "^2.0.0"
3687+ }
3688+ },
3689+ "pkg-dir": {
3690+ "version": "2.0.0",
3691+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
3692+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
3693+ "dev": true,
3694+ "requires": {
3695+ "find-up": "^2.1.0"
3696+ }
3697+ },
3698+ "portfinder": {
3699+ "version": "1.0.19",
3700+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.19.tgz",
3701+ "integrity": "sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw==",
3702+ "dev": true,
3703+ "requires": {
3704+ "async": "^1.5.2",
3705+ "debug": "^2.2.0",
3706+ "mkdirp": "0.5.x"
3707+ },
3708+ "dependencies": {
3709+ "debug": {
3710+ "version": "2.6.9",
3711+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
3712+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
3713+ "dev": true,
3714+ "requires": {
3715+ "ms": "2.0.0"
3716+ }
3717+ }
3718+ }
3719+ },
3720+ "posix-character-classes": {
3721+ "version": "0.1.1",
3722+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
3723+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
3724+ "dev": true
3725+ },
3726+ "process": {
3727+ "version": "0.11.10",
3728+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
3729+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
3730+ "dev": true
3731+ },
3732+ "process-nextick-args": {
3733+ "version": "2.0.0",
3734+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
3735+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
3736+ "dev": true
3737+ },
3738+ "promise-inflight": {
3739+ "version": "1.0.1",
3740+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
3741+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
3742+ "dev": true
3743+ },
3744+ "proxy-addr": {
3745+ "version": "2.0.4",
3746+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
3747+ "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
3748+ "dev": true,
3749+ "requires": {
3750+ "forwarded": "~0.1.2",
3751+ "ipaddr.js": "1.8.0"
3752+ }
3753+ },
3754+ "prr": {
3755+ "version": "1.0.1",
3756+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
3757+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
3758+ "dev": true
3759+ },
3760+ "pseudomap": {
3761+ "version": "1.0.2",
3762+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
3763+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
3764+ "dev": true
3765+ },
3766+ "public-encrypt": {
3767+ "version": "4.0.3",
3768+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
3769+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
3770+ "dev": true,
3771+ "requires": {
3772+ "bn.js": "^4.1.0",
3773+ "browserify-rsa": "^4.0.0",
3774+ "create-hash": "^1.1.0",
3775+ "parse-asn1": "^5.0.0",
3776+ "randombytes": "^2.0.1",
3777+ "safe-buffer": "^5.1.2"
3778+ }
3779+ },
3780+ "pump": {
3781+ "version": "2.0.1",
3782+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
3783+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
3784+ "dev": true,
3785+ "requires": {
3786+ "end-of-stream": "^1.1.0",
3787+ "once": "^1.3.1"
3788+ }
3789+ },
3790+ "pumpify": {
3791+ "version": "1.5.1",
3792+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
3793+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
3794+ "dev": true,
3795+ "requires": {
3796+ "duplexify": "^3.6.0",
3797+ "inherits": "^2.0.3",
3798+ "pump": "^2.0.0"
3799+ }
3800+ },
3801+ "punycode": {
3802+ "version": "2.1.1",
3803+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3804+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
3805+ "dev": true
3806+ },
3807+ "qs": {
3808+ "version": "6.5.2",
3809+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
3810+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
3811+ "dev": true
3812+ },
3813+ "querystring": {
3814+ "version": "0.2.0",
3815+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
3816+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
3817+ "dev": true
3818+ },
3819+ "querystring-es3": {
3820+ "version": "0.2.1",
3821+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
3822+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
3823+ "dev": true
3824+ },
3825+ "querystringify": {
3826+ "version": "2.1.0",
3827+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
3828+ "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
3829+ "dev": true
3830+ },
3831+ "randombytes": {
3832+ "version": "2.0.6",
3833+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
3834+ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
3835+ "dev": true,
3836+ "requires": {
3837+ "safe-buffer": "^5.1.0"
3838+ }
3839+ },
3840+ "randomfill": {
3841+ "version": "1.0.4",
3842+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
3843+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
3844+ "dev": true,
3845+ "requires": {
3846+ "randombytes": "^2.0.5",
3847+ "safe-buffer": "^5.1.0"
3848+ }
3849+ },
3850+ "range-parser": {
3851+ "version": "1.2.0",
3852+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
3853+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
3854+ "dev": true
3855+ },
3856+ "raw-body": {
3857+ "version": "2.3.3",
3858+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
3859+ "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
3860+ "dev": true,
3861+ "requires": {
3862+ "bytes": "3.0.0",
3863+ "http-errors": "1.6.3",
3864+ "iconv-lite": "0.4.23",
3865+ "unpipe": "1.0.0"
3866+ }
3867+ },
3868+ "readable-stream": {
3869+ "version": "2.3.6",
3870+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
3871+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
3872+ "dev": true,
3873+ "requires": {
3874+ "core-util-is": "~1.0.0",
3875+ "inherits": "~2.0.3",
3876+ "isarray": "~1.0.0",
3877+ "process-nextick-args": "~2.0.0",
3878+ "safe-buffer": "~5.1.1",
3879+ "string_decoder": "~1.1.1",
3880+ "util-deprecate": "~1.0.1"
3881+ }
3882+ },
3883+ "readdirp": {
3884+ "version": "2.1.0",
3885+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
3886+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
3887+ "dev": true,
3888+ "requires": {
3889+ "graceful-fs": "^4.1.2",
3890+ "minimatch": "^3.0.2",
3891+ "readable-stream": "^2.0.2",
3892+ "set-immediate-shim": "^1.0.1"
3893+ }
3894+ },
3895+ "regex-not": {
3896+ "version": "1.0.2",
3897+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
3898+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
3899+ "dev": true,
3900+ "requires": {
3901+ "extend-shallow": "^3.0.2",
3902+ "safe-regex": "^1.1.0"
3903+ }
3904+ },
3905+ "remove-trailing-separator": {
3906+ "version": "1.1.0",
3907+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
3908+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
3909+ "dev": true
3910+ },
3911+ "repeat-element": {
3912+ "version": "1.1.2",
3913+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
3914+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
3915+ "dev": true
3916+ },
3917+ "repeat-string": {
3918+ "version": "1.6.1",
3919+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
3920+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
3921+ "dev": true
3922+ },
3923+ "require-directory": {
3924+ "version": "2.1.1",
3925+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
3926+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
3927+ "dev": true
3928+ },
3929+ "require-main-filename": {
3930+ "version": "1.0.1",
3931+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
3932+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
3933+ "dev": true
3934+ },
3935+ "requires-port": {
3936+ "version": "1.0.0",
3937+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
3938+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
3939+ "dev": true
3940+ },
3941+ "resolve-cwd": {
3942+ "version": "2.0.0",
3943+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
3944+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
3945+ "dev": true,
3946+ "requires": {
3947+ "resolve-from": "^3.0.0"
3948+ }
3949+ },
3950+ "resolve-from": {
3951+ "version": "3.0.0",
3952+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
3953+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
3954+ "dev": true
3955+ },
3956+ "resolve-url": {
3957+ "version": "0.2.1",
3958+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
3959+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
3960+ "dev": true
3961+ },
3962+ "ret": {
3963+ "version": "0.1.15",
3964+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
3965+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
3966+ "dev": true
3967+ },
3968+ "rimraf": {
3969+ "version": "2.6.2",
3970+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
3971+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
3972+ "dev": true,
3973+ "requires": {
3974+ "glob": "^7.0.5"
3975+ }
3976+ },
3977+ "ripemd160": {
3978+ "version": "2.0.2",
3979+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
3980+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
3981+ "dev": true,
3982+ "requires": {
3983+ "hash-base": "^3.0.0",
3984+ "inherits": "^2.0.1"
3985+ }
3986+ },
3987+ "run-queue": {
3988+ "version": "1.0.3",
3989+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
3990+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
3991+ "dev": true,
3992+ "requires": {
3993+ "aproba": "^1.1.1"
3994+ }
3995+ },
3996+ "safe-buffer": {
3997+ "version": "5.1.2",
3998+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3999+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
4000+ "dev": true
4001+ },
4002+ "safe-regex": {
4003+ "version": "1.1.0",
4004+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
4005+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
4006+ "dev": true,
4007+ "requires": {
4008+ "ret": "~0.1.10"
4009+ }
4010+ },
4011+ "safer-buffer": {
4012+ "version": "2.1.2",
4013+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
4014+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
4015+ "dev": true
4016+ },
4017+ "schema-utils": {
4018+ "version": "0.4.7",
4019+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
4020+ "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
4021+ "dev": true,
4022+ "requires": {
4023+ "ajv": "^6.1.0",
4024+ "ajv-keywords": "^3.1.0"
4025+ }
4026+ },
4027+ "select-hose": {
4028+ "version": "2.0.0",
4029+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
4030+ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
4031+ "dev": true
4032+ },
4033+ "selfsigned": {
4034+ "version": "1.10.4",
4035+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz",
4036+ "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==",
4037+ "dev": true,
4038+ "requires": {
4039+ "node-forge": "0.7.5"
4040+ }
4041+ },
4042+ "semver": {
4043+ "version": "5.5.0",
4044+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
4045+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
4046+ "dev": true
4047+ },
4048+ "send": {
4049+ "version": "0.16.2",
4050+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
4051+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
4052+ "dev": true,
4053+ "requires": {
4054+ "debug": "2.6.9",
4055+ "depd": "~1.1.2",
4056+ "destroy": "~1.0.4",
4057+ "encodeurl": "~1.0.2",
4058+ "escape-html": "~1.0.3",
4059+ "etag": "~1.8.1",
4060+ "fresh": "0.5.2",
4061+ "http-errors": "~1.6.2",
4062+ "mime": "1.4.1",
4063+ "ms": "2.0.0",
4064+ "on-finished": "~2.3.0",
4065+ "range-parser": "~1.2.0",
4066+ "statuses": "~1.4.0"
4067+ },
4068+ "dependencies": {
4069+ "debug": {
4070+ "version": "2.6.9",
4071+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4072+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4073+ "dev": true,
4074+ "requires": {
4075+ "ms": "2.0.0"
4076+ }
4077+ }
4078+ }
4079+ },
4080+ "serialize-javascript": {
4081+ "version": "1.5.0",
4082+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz",
4083+ "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==",
4084+ "dev": true
4085+ },
4086+ "serve-index": {
4087+ "version": "1.9.1",
4088+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
4089+ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
4090+ "dev": true,
4091+ "requires": {
4092+ "accepts": "~1.3.4",
4093+ "batch": "0.6.1",
4094+ "debug": "2.6.9",
4095+ "escape-html": "~1.0.3",
4096+ "http-errors": "~1.6.2",
4097+ "mime-types": "~2.1.17",
4098+ "parseurl": "~1.3.2"
4099+ },
4100+ "dependencies": {
4101+ "debug": {
4102+ "version": "2.6.9",
4103+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4104+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4105+ "dev": true,
4106+ "requires": {
4107+ "ms": "2.0.0"
4108+ }
4109+ }
4110+ }
4111+ },
4112+ "serve-static": {
4113+ "version": "1.13.2",
4114+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
4115+ "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
4116+ "dev": true,
4117+ "requires": {
4118+ "encodeurl": "~1.0.2",
4119+ "escape-html": "~1.0.3",
4120+ "parseurl": "~1.3.2",
4121+ "send": "0.16.2"
4122+ }
4123+ },
4124+ "set-blocking": {
4125+ "version": "2.0.0",
4126+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
4127+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
4128+ "dev": true
4129+ },
4130+ "set-immediate-shim": {
4131+ "version": "1.0.1",
4132+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
4133+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
4134+ "dev": true
4135+ },
4136+ "set-value": {
4137+ "version": "2.0.0",
4138+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
4139+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
4140+ "dev": true,
4141+ "requires": {
4142+ "extend-shallow": "^2.0.1",
4143+ "is-extendable": "^0.1.1",
4144+ "is-plain-object": "^2.0.3",
4145+ "split-string": "^3.0.1"
4146+ },
4147+ "dependencies": {
4148+ "extend-shallow": {
4149+ "version": "2.0.1",
4150+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
4151+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
4152+ "dev": true,
4153+ "requires": {
4154+ "is-extendable": "^0.1.0"
4155+ }
4156+ }
4157+ }
4158+ },
4159+ "setimmediate": {
4160+ "version": "1.0.5",
4161+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
4162+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
4163+ "dev": true
4164+ },
4165+ "setprototypeof": {
4166+ "version": "1.1.0",
4167+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
4168+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
4169+ "dev": true
4170+ },
4171+ "sha.js": {
4172+ "version": "2.4.11",
4173+ "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
4174+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
4175+ "dev": true,
4176+ "requires": {
4177+ "inherits": "^2.0.1",
4178+ "safe-buffer": "^5.0.1"
4179+ }
4180+ },
4181+ "shebang-command": {
4182+ "version": "1.2.0",
4183+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
4184+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
4185+ "dev": true,
4186+ "requires": {
4187+ "shebang-regex": "^1.0.0"
4188+ }
4189+ },
4190+ "shebang-regex": {
4191+ "version": "1.0.0",
4192+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
4193+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
4194+ "dev": true
4195+ },
4196+ "signal-exit": {
4197+ "version": "3.0.2",
4198+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
4199+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
4200+ "dev": true
4201+ },
4202+ "slash": {
4203+ "version": "1.0.0",
4204+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
4205+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
4206+ "dev": true
4207+ },
4208+ "snapdragon": {
4209+ "version": "0.8.2",
4210+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
4211+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
4212+ "dev": true,
4213+ "requires": {
4214+ "base": "^0.11.1",
4215+ "debug": "^2.2.0",
4216+ "define-property": "^0.2.5",
4217+ "extend-shallow": "^2.0.1",
4218+ "map-cache": "^0.2.2",
4219+ "source-map": "^0.5.6",
4220+ "source-map-resolve": "^0.5.0",
4221+ "use": "^3.1.0"
4222+ },
4223+ "dependencies": {
4224+ "debug": {
4225+ "version": "2.6.9",
4226+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4227+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4228+ "dev": true,
4229+ "requires": {
4230+ "ms": "2.0.0"
4231+ }
4232+ },
4233+ "define-property": {
4234+ "version": "0.2.5",
4235+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
4236+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
4237+ "dev": true,
4238+ "requires": {
4239+ "is-descriptor": "^0.1.0"
4240+ }
4241+ },
4242+ "extend-shallow": {
4243+ "version": "2.0.1",
4244+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
4245+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
4246+ "dev": true,
4247+ "requires": {
4248+ "is-extendable": "^0.1.0"
4249+ }
4250+ }
4251+ }
4252+ },
4253+ "snapdragon-node": {
4254+ "version": "2.1.1",
4255+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
4256+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
4257+ "dev": true,
4258+ "requires": {
4259+ "define-property": "^1.0.0",
4260+ "isobject": "^3.0.0",
4261+ "snapdragon-util": "^3.0.1"
4262+ },
4263+ "dependencies": {
4264+ "define-property": {
4265+ "version": "1.0.0",
4266+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
4267+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
4268+ "dev": true,
4269+ "requires": {
4270+ "is-descriptor": "^1.0.0"
4271+ }
4272+ },
4273+ "is-accessor-descriptor": {
4274+ "version": "1.0.0",
4275+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
4276+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
4277+ "dev": true,
4278+ "requires": {
4279+ "kind-of": "^6.0.0"
4280+ }
4281+ },
4282+ "is-data-descriptor": {
4283+ "version": "1.0.0",
4284+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
4285+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
4286+ "dev": true,
4287+ "requires": {
4288+ "kind-of": "^6.0.0"
4289+ }
4290+ },
4291+ "is-descriptor": {
4292+ "version": "1.0.2",
4293+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
4294+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
4295+ "dev": true,
4296+ "requires": {
4297+ "is-accessor-descriptor": "^1.0.0",
4298+ "is-data-descriptor": "^1.0.0",
4299+ "kind-of": "^6.0.2"
4300+ }
4301+ }
4302+ }
4303+ },
4304+ "snapdragon-util": {
4305+ "version": "3.0.1",
4306+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
4307+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
4308+ "dev": true,
4309+ "requires": {
4310+ "kind-of": "^3.2.0"
4311+ },
4312+ "dependencies": {
4313+ "kind-of": {
4314+ "version": "3.2.2",
4315+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
4316+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
4317+ "dev": true,
4318+ "requires": {
4319+ "is-buffer": "^1.1.5"
4320+ }
4321+ }
4322+ }
4323+ },
4324+ "sockjs": {
4325+ "version": "0.3.19",
4326+ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
4327+ "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
4328+ "dev": true,
4329+ "requires": {
4330+ "faye-websocket": "^0.10.0",
4331+ "uuid": "^3.0.1"
4332+ }
4333+ },
4334+ "sockjs-client": {
4335+ "version": "1.3.0",
4336+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz",
4337+ "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==",
4338+ "dev": true,
4339+ "requires": {
4340+ "debug": "^3.2.5",
4341+ "eventsource": "^1.0.7",
4342+ "faye-websocket": "~0.11.1",
4343+ "inherits": "^2.0.3",
4344+ "json3": "^3.3.2",
4345+ "url-parse": "^1.4.3"
4346+ },
4347+ "dependencies": {
4348+ "faye-websocket": {
4349+ "version": "0.11.1",
4350+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
4351+ "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
4352+ "dev": true,
4353+ "requires": {
4354+ "websocket-driver": ">=0.5.1"
4355+ }
4356+ }
4357+ }
4358+ },
4359+ "source-list-map": {
4360+ "version": "2.0.1",
4361+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
4362+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
4363+ "dev": true
4364+ },
4365+ "source-map": {
4366+ "version": "0.5.7",
4367+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
4368+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
4369+ "dev": true
4370+ },
4371+ "source-map-resolve": {
4372+ "version": "0.5.2",
4373+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
4374+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
4375+ "dev": true,
4376+ "requires": {
4377+ "atob": "^2.1.1",
4378+ "decode-uri-component": "^0.2.0",
4379+ "resolve-url": "^0.2.1",
4380+ "source-map-url": "^0.4.0",
4381+ "urix": "^0.1.0"
4382+ }
4383+ },
4384+ "source-map-url": {
4385+ "version": "0.4.0",
4386+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
4387+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
4388+ "dev": true
4389+ },
4390+ "spdy": {
4391+ "version": "3.4.7",
4392+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
4393+ "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
4394+ "dev": true,
4395+ "requires": {
4396+ "debug": "^2.6.8",
4397+ "handle-thing": "^1.2.5",
4398+ "http-deceiver": "^1.2.7",
4399+ "safe-buffer": "^5.0.1",
4400+ "select-hose": "^2.0.0",
4401+ "spdy-transport": "^2.0.18"
4402+ },
4403+ "dependencies": {
4404+ "debug": {
4405+ "version": "2.6.9",
4406+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4407+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4408+ "dev": true,
4409+ "requires": {
4410+ "ms": "2.0.0"
4411+ }
4412+ }
4413+ }
4414+ },
4415+ "spdy-transport": {
4416+ "version": "2.1.0",
4417+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz",
4418+ "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==",
4419+ "dev": true,
4420+ "requires": {
4421+ "debug": "^2.6.8",
4422+ "detect-node": "^2.0.3",
4423+ "hpack.js": "^2.1.6",
4424+ "obuf": "^1.1.1",
4425+ "readable-stream": "^2.2.9",
4426+ "safe-buffer": "^5.0.1",
4427+ "wbuf": "^1.7.2"
4428+ },
4429+ "dependencies": {
4430+ "debug": {
4431+ "version": "2.6.9",
4432+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4433+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4434+ "dev": true,
4435+ "requires": {
4436+ "ms": "2.0.0"
4437+ }
4438+ }
4439+ }
4440+ },
4441+ "split-string": {
4442+ "version": "3.1.0",
4443+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
4444+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
4445+ "dev": true,
4446+ "requires": {
4447+ "extend-shallow": "^3.0.0"
4448+ }
4449+ },
4450+ "ssri": {
4451+ "version": "5.3.0",
4452+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz",
4453+ "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
4454+ "dev": true,
4455+ "requires": {
4456+ "safe-buffer": "^5.1.1"
4457+ }
4458+ },
4459+ "static-extend": {
4460+ "version": "0.1.2",
4461+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
4462+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
4463+ "dev": true,
4464+ "requires": {
4465+ "define-property": "^0.2.5",
4466+ "object-copy": "^0.1.0"
4467+ },
4468+ "dependencies": {
4469+ "define-property": {
4470+ "version": "0.2.5",
4471+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
4472+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
4473+ "dev": true,
4474+ "requires": {
4475+ "is-descriptor": "^0.1.0"
4476+ }
4477+ }
4478+ }
4479+ },
4480+ "statuses": {
4481+ "version": "1.4.0",
4482+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
4483+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
4484+ "dev": true
4485+ },
4486+ "stream-browserify": {
4487+ "version": "2.0.1",
4488+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
4489+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
4490+ "dev": true,
4491+ "requires": {
4492+ "inherits": "~2.0.1",
4493+ "readable-stream": "^2.0.2"
4494+ }
4495+ },
4496+ "stream-each": {
4497+ "version": "1.2.3",
4498+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
4499+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
4500+ "dev": true,
4501+ "requires": {
4502+ "end-of-stream": "^1.1.0",
4503+ "stream-shift": "^1.0.0"
4504+ }
4505+ },
4506+ "stream-http": {
4507+ "version": "2.8.3",
4508+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
4509+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
4510+ "dev": true,
4511+ "requires": {
4512+ "builtin-status-codes": "^3.0.0",
4513+ "inherits": "^2.0.1",
4514+ "readable-stream": "^2.3.6",
4515+ "to-arraybuffer": "^1.0.0",
4516+ "xtend": "^4.0.0"
4517+ }
4518+ },
4519+ "stream-shift": {
4520+ "version": "1.0.0",
4521+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
4522+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
4523+ "dev": true
4524+ },
4525+ "string-width": {
4526+ "version": "2.1.1",
4527+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
4528+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
4529+ "dev": true,
4530+ "requires": {
4531+ "is-fullwidth-code-point": "^2.0.0",
4532+ "strip-ansi": "^4.0.0"
4533+ }
4534+ },
4535+ "string_decoder": {
4536+ "version": "1.1.1",
4537+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
4538+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
4539+ "dev": true,
4540+ "requires": {
4541+ "safe-buffer": "~5.1.0"
4542+ }
4543+ },
4544+ "strip-ansi": {
4545+ "version": "4.0.0",
4546+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
4547+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
4548+ "dev": true,
4549+ "requires": {
4550+ "ansi-regex": "^3.0.0"
4551+ }
4552+ },
4553+ "strip-eof": {
4554+ "version": "1.0.0",
4555+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
4556+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
4557+ "dev": true
4558+ },
4559+ "supports-color": {
4560+ "version": "5.4.0",
4561+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
4562+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
4563+ "dev": true,
4564+ "requires": {
4565+ "has-flag": "^3.0.0"
4566+ }
4567+ },
4568+ "tapable": {
4569+ "version": "1.0.0",
4570+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz",
4571+ "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==",
4572+ "dev": true
4573+ },
4574+ "through2": {
4575+ "version": "2.0.3",
4576+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
4577+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
4578+ "dev": true,
4579+ "requires": {
4580+ "readable-stream": "^2.1.5",
4581+ "xtend": "~4.0.1"
4582+ }
4583+ },
4584+ "thunky": {
4585+ "version": "1.0.3",
4586+ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz",
4587+ "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==",
4588+ "dev": true
4589+ },
4590+ "timers-browserify": {
4591+ "version": "2.0.10",
4592+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
4593+ "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
4594+ "dev": true,
4595+ "requires": {
4596+ "setimmediate": "^1.0.4"
4597+ }
4598+ },
4599+ "to-arraybuffer": {
4600+ "version": "1.0.1",
4601+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
4602+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
4603+ "dev": true
4604+ },
4605+ "to-object-path": {
4606+ "version": "0.3.0",
4607+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
4608+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
4609+ "dev": true,
4610+ "requires": {
4611+ "kind-of": "^3.0.2"
4612+ },
4613+ "dependencies": {
4614+ "kind-of": {
4615+ "version": "3.2.2",
4616+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
4617+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
4618+ "dev": true,
4619+ "requires": {
4620+ "is-buffer": "^1.1.5"
4621+ }
4622+ }
4623+ }
4624+ },
4625+ "to-regex": {
4626+ "version": "3.0.2",
4627+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
4628+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
4629+ "dev": true,
4630+ "requires": {
4631+ "define-property": "^2.0.2",
4632+ "extend-shallow": "^3.0.2",
4633+ "regex-not": "^1.0.2",
4634+ "safe-regex": "^1.1.0"
4635+ }
4636+ },
4637+ "to-regex-range": {
4638+ "version": "2.1.1",
4639+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
4640+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
4641+ "dev": true,
4642+ "requires": {
4643+ "is-number": "^3.0.0",
4644+ "repeat-string": "^1.6.1"
4645+ }
4646+ },
4647+ "tslib": {
4648+ "version": "1.9.3",
4649+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
4650+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
4651+ "dev": true
4652+ },
4653+ "tty-browserify": {
4654+ "version": "0.0.0",
4655+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
4656+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
4657+ "dev": true
4658+ },
4659+ "type-is": {
4660+ "version": "1.6.16",
4661+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
4662+ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
4663+ "dev": true,
4664+ "requires": {
4665+ "media-typer": "0.3.0",
4666+ "mime-types": "~2.1.18"
4667+ }
4668+ },
4669+ "typedarray": {
4670+ "version": "0.0.6",
4671+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
4672+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
4673+ "dev": true
4674+ },
4675+ "uglify-es": {
4676+ "version": "3.3.9",
4677+ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
4678+ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
4679+ "dev": true,
4680+ "requires": {
4681+ "commander": "~2.13.0",
4682+ "source-map": "~0.6.1"
4683+ },
4684+ "dependencies": {
4685+ "source-map": {
4686+ "version": "0.6.1",
4687+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
4688+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
4689+ "dev": true
4690+ }
4691+ }
4692+ },
4693+ "uglifyjs-webpack-plugin": {
4694+ "version": "1.3.0",
4695+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz",
4696+ "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==",
4697+ "dev": true,
4698+ "requires": {
4699+ "cacache": "^10.0.4",
4700+ "find-cache-dir": "^1.0.0",
4701+ "schema-utils": "^0.4.5",
4702+ "serialize-javascript": "^1.4.0",
4703+ "source-map": "^0.6.1",
4704+ "uglify-es": "^3.3.4",
4705+ "webpack-sources": "^1.1.0",
4706+ "worker-farm": "^1.5.2"
4707+ },
4708+ "dependencies": {
4709+ "source-map": {
4710+ "version": "0.6.1",
4711+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
4712+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
4713+ "dev": true
4714+ }
4715+ }
4716+ },
4717+ "union-value": {
4718+ "version": "1.0.0",
4719+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
4720+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
4721+ "dev": true,
4722+ "requires": {
4723+ "arr-union": "^3.1.0",
4724+ "get-value": "^2.0.6",
4725+ "is-extendable": "^0.1.1",
4726+ "set-value": "^0.4.3"
4727+ },
4728+ "dependencies": {
4729+ "extend-shallow": {
4730+ "version": "2.0.1",
4731+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
4732+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
4733+ "dev": true,
4734+ "requires": {
4735+ "is-extendable": "^0.1.0"
4736+ }
4737+ },
4738+ "set-value": {
4739+ "version": "0.4.3",
4740+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
4741+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
4742+ "dev": true,
4743+ "requires": {
4744+ "extend-shallow": "^2.0.1",
4745+ "is-extendable": "^0.1.1",
4746+ "is-plain-object": "^2.0.1",
4747+ "to-object-path": "^0.3.0"
4748+ }
4749+ }
4750+ }
4751+ },
4752+ "unique-filename": {
4753+ "version": "1.1.0",
4754+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz",
4755+ "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
4756+ "dev": true,
4757+ "requires": {
4758+ "unique-slug": "^2.0.0"
4759+ }
4760+ },
4761+ "unique-slug": {
4762+ "version": "2.0.0",
4763+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz",
4764+ "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
4765+ "dev": true,
4766+ "requires": {
4767+ "imurmurhash": "^0.1.4"
4768+ }
4769+ },
4770+ "unpipe": {
4771+ "version": "1.0.0",
4772+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
4773+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
4774+ "dev": true
4775+ },
4776+ "unset-value": {
4777+ "version": "1.0.0",
4778+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
4779+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
4780+ "dev": true,
4781+ "requires": {
4782+ "has-value": "^0.3.1",
4783+ "isobject": "^3.0.0"
4784+ },
4785+ "dependencies": {
4786+ "has-value": {
4787+ "version": "0.3.1",
4788+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
4789+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
4790+ "dev": true,
4791+ "requires": {
4792+ "get-value": "^2.0.3",
4793+ "has-values": "^0.1.4",
4794+ "isobject": "^2.0.0"
4795+ },
4796+ "dependencies": {
4797+ "isobject": {
4798+ "version": "2.1.0",
4799+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
4800+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
4801+ "dev": true,
4802+ "requires": {
4803+ "isarray": "1.0.0"
4804+ }
4805+ }
4806+ }
4807+ },
4808+ "has-values": {
4809+ "version": "0.1.4",
4810+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
4811+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
4812+ "dev": true
4813+ }
4814+ }
4815+ },
4816+ "upath": {
4817+ "version": "1.1.0",
4818+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
4819+ "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
4820+ "dev": true
4821+ },
4822+ "uri-js": {
4823+ "version": "4.2.2",
4824+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
4825+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
4826+ "dev": true,
4827+ "requires": {
4828+ "punycode": "^2.1.0"
4829+ }
4830+ },
4831+ "urix": {
4832+ "version": "0.1.0",
4833+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
4834+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
4835+ "dev": true
4836+ },
4837+ "url": {
4838+ "version": "0.11.0",
4839+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
4840+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
4841+ "dev": true,
4842+ "requires": {
4843+ "punycode": "1.3.2",
4844+ "querystring": "0.2.0"
4845+ },
4846+ "dependencies": {
4847+ "punycode": {
4848+ "version": "1.3.2",
4849+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
4850+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
4851+ "dev": true
4852+ }
4853+ }
4854+ },
4855+ "url-parse": {
4856+ "version": "1.4.3",
4857+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
4858+ "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
4859+ "dev": true,
4860+ "requires": {
4861+ "querystringify": "^2.0.0",
4862+ "requires-port": "^1.0.0"
4863+ }
4864+ },
4865+ "use": {
4866+ "version": "3.1.1",
4867+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
4868+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
4869+ "dev": true
4870+ },
4871+ "util": {
4872+ "version": "0.10.4",
4873+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
4874+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
4875+ "dev": true,
4876+ "requires": {
4877+ "inherits": "2.0.3"
4878+ }
4879+ },
4880+ "util-deprecate": {
4881+ "version": "1.0.2",
4882+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4883+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
4884+ "dev": true
4885+ },
4886+ "utils-merge": {
4887+ "version": "1.0.1",
4888+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
4889+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
4890+ "dev": true
4891+ },
4892+ "uuid": {
4893+ "version": "3.3.2",
4894+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
4895+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
4896+ "dev": true
4897+ },
4898+ "v8-compile-cache": {
4899+ "version": "2.0.2",
4900+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz",
4901+ "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==",
4902+ "dev": true
4903+ },
4904+ "vary": {
4905+ "version": "1.1.2",
4906+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
4907+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
4908+ "dev": true
4909+ },
4910+ "vm-browserify": {
4911+ "version": "0.0.4",
4912+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
4913+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
4914+ "dev": true,
4915+ "requires": {
4916+ "indexof": "0.0.1"
4917+ }
4918+ },
4919+ "watchpack": {
4920+ "version": "1.6.0",
4921+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
4922+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
4923+ "dev": true,
4924+ "requires": {
4925+ "chokidar": "^2.0.2",
4926+ "graceful-fs": "^4.1.2",
4927+ "neo-async": "^2.5.0"
4928+ }
4929+ },
4930+ "wbuf": {
4931+ "version": "1.7.3",
4932+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
4933+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
4934+ "dev": true,
4935+ "requires": {
4936+ "minimalistic-assert": "^1.0.0"
4937+ }
4938+ },
4939+ "webpack": {
4940+ "version": "4.22.0",
4941+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.22.0.tgz",
4942+ "integrity": "sha512-2+3EYFqyhPl12buLQ42QPHEEh8BHn3P9ipRvGRHhdfKJ1u9svhZ3QjhIoEdL5SeIhL5gfOZVbBnartYEabkEsg==",
4943+ "dev": true,
4944+ "requires": {
4945+ "@webassemblyjs/ast": "1.7.8",
4946+ "@webassemblyjs/helper-module-context": "1.7.8",
4947+ "@webassemblyjs/wasm-edit": "1.7.8",
4948+ "@webassemblyjs/wasm-parser": "1.7.8",
4949+ "acorn": "^5.6.2",
4950+ "acorn-dynamic-import": "^3.0.0",
4951+ "ajv": "^6.1.0",
4952+ "ajv-keywords": "^3.1.0",
4953+ "chrome-trace-event": "^1.0.0",
4954+ "enhanced-resolve": "^4.1.0",
4955+ "eslint-scope": "^4.0.0",
4956+ "json-parse-better-errors": "^1.0.2",
4957+ "loader-runner": "^2.3.0",
4958+ "loader-utils": "^1.1.0",
4959+ "memory-fs": "~0.4.1",
4960+ "micromatch": "^3.1.8",
4961+ "mkdirp": "~0.5.0",
4962+ "neo-async": "^2.5.0",
4963+ "node-libs-browser": "^2.0.0",
4964+ "schema-utils": "^0.4.4",
4965+ "tapable": "^1.1.0",
4966+ "uglifyjs-webpack-plugin": "^1.2.4",
4967+ "watchpack": "^1.5.0",
4968+ "webpack-sources": "^1.3.0"
4969+ },
4970+ "dependencies": {
4971+ "tapable": {
4972+ "version": "1.1.0",
4973+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz",
4974+ "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==",
4975+ "dev": true
4976+ }
4977+ }
4978+ },
4979+ "webpack-cli": {
4980+ "version": "3.1.2",
4981+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz",
4982+ "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==",
4983+ "dev": true,
4984+ "requires": {
4985+ "chalk": "^2.4.1",
4986+ "cross-spawn": "^6.0.5",
4987+ "enhanced-resolve": "^4.1.0",
4988+ "global-modules-path": "^2.3.0",
4989+ "import-local": "^2.0.0",
4990+ "interpret": "^1.1.0",
4991+ "loader-utils": "^1.1.0",
4992+ "supports-color": "^5.5.0",
4993+ "v8-compile-cache": "^2.0.2",
4994+ "yargs": "^12.0.2"
4995+ },
4996+ "dependencies": {
4997+ "supports-color": {
4998+ "version": "5.5.0",
4999+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
5000+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
5001+ "dev": true,
5002+ "requires": {
5003+ "has-flag": "^3.0.0"
5004+ }
5005+ }
5006+ }
5007+ },
5008+ "webpack-dev-middleware": {
5009+ "version": "3.4.0",
5010+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz",
5011+ "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==",
5012+ "dev": true,
5013+ "requires": {
5014+ "memory-fs": "~0.4.1",
5015+ "mime": "^2.3.1",
5016+ "range-parser": "^1.0.3",
5017+ "webpack-log": "^2.0.0"
5018+ },
5019+ "dependencies": {
5020+ "mime": {
5021+ "version": "2.3.1",
5022+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
5023+ "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
5024+ "dev": true
5025+ }
5026+ }
5027+ },
5028+ "webpack-dev-server": {
5029+ "version": "3.1.10",
5030+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz",
5031+ "integrity": "sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww==",
5032+ "dev": true,
5033+ "requires": {
5034+ "ansi-html": "0.0.7",
5035+ "bonjour": "^3.5.0",
5036+ "chokidar": "^2.0.0",
5037+ "compression": "^1.5.2",
5038+ "connect-history-api-fallback": "^1.3.0",
5039+ "debug": "^3.1.0",
5040+ "del": "^3.0.0",
5041+ "express": "^4.16.2",
5042+ "html-entities": "^1.2.0",
5043+ "http-proxy-middleware": "~0.18.0",
5044+ "import-local": "^2.0.0",
5045+ "internal-ip": "^3.0.1",
5046+ "ip": "^1.1.5",
5047+ "killable": "^1.0.0",
5048+ "loglevel": "^1.4.1",
5049+ "opn": "^5.1.0",
5050+ "portfinder": "^1.0.9",
5051+ "schema-utils": "^1.0.0",
5052+ "selfsigned": "^1.9.1",
5053+ "serve-index": "^1.7.2",
5054+ "sockjs": "0.3.19",
5055+ "sockjs-client": "1.3.0",
5056+ "spdy": "^3.4.1",
5057+ "strip-ansi": "^3.0.0",
5058+ "supports-color": "^5.1.0",
5059+ "webpack-dev-middleware": "3.4.0",
5060+ "webpack-log": "^2.0.0",
5061+ "yargs": "12.0.2"
5062+ },
5063+ "dependencies": {
5064+ "ansi-regex": {
5065+ "version": "2.1.1",
5066+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
5067+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
5068+ "dev": true
5069+ },
5070+ "schema-utils": {
5071+ "version": "1.0.0",
5072+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
5073+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
5074+ "dev": true,
5075+ "requires": {
5076+ "ajv": "^6.1.0",
5077+ "ajv-errors": "^1.0.0",
5078+ "ajv-keywords": "^3.1.0"
5079+ }
5080+ },
5081+ "strip-ansi": {
5082+ "version": "3.0.1",
5083+ "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
5084+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
5085+ "dev": true,
5086+ "requires": {
5087+ "ansi-regex": "^2.0.0"
5088+ }
5089+ }
5090+ }
5091+ },
5092+ "webpack-log": {
5093+ "version": "2.0.0",
5094+ "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
5095+ "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
5096+ "dev": true,
5097+ "requires": {
5098+ "ansi-colors": "^3.0.0",
5099+ "uuid": "^3.3.2"
5100+ }
5101+ },
5102+ "webpack-sources": {
5103+ "version": "1.3.0",
5104+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
5105+ "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
5106+ "dev": true,
5107+ "requires": {
5108+ "source-list-map": "^2.0.0",
5109+ "source-map": "~0.6.1"
5110+ },
5111+ "dependencies": {
5112+ "source-map": {
5113+ "version": "0.6.1",
5114+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
5115+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
5116+ "dev": true
5117+ }
5118+ }
5119+ },
5120+ "websocket-driver": {
5121+ "version": "0.7.0",
5122+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
5123+ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
5124+ "dev": true,
5125+ "requires": {
5126+ "http-parser-js": ">=0.4.0",
5127+ "websocket-extensions": ">=0.1.1"
5128+ }
5129+ },
5130+ "websocket-extensions": {
5131+ "version": "0.1.3",
5132+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
5133+ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
5134+ "dev": true
5135+ },
5136+ "which": {
5137+ "version": "1.3.1",
5138+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
5139+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
5140+ "dev": true,
5141+ "requires": {
5142+ "isexe": "^2.0.0"
5143+ }
5144+ },
5145+ "which-module": {
5146+ "version": "2.0.0",
5147+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
5148+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
5149+ "dev": true
5150+ },
5151+ "worker-farm": {
5152+ "version": "1.6.0",
5153+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
5154+ "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
5155+ "dev": true,
5156+ "requires": {
5157+ "errno": "~0.1.7"
5158+ }
5159+ },
5160+ "wrap-ansi": {
5161+ "version": "2.1.0",
5162+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
5163+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
5164+ "dev": true,
5165+ "requires": {
5166+ "string-width": "^1.0.1",
5167+ "strip-ansi": "^3.0.1"
5168+ },
5169+ "dependencies": {
5170+ "ansi-regex": {
5171+ "version": "2.1.1",
5172+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
5173+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
5174+ "dev": true
5175+ },
5176+ "is-fullwidth-code-point": {
5177+ "version": "1.0.0",
5178+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
5179+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
5180+ "dev": true,
5181+ "requires": {
5182+ "number-is-nan": "^1.0.0"
5183+ }
5184+ },
5185+ "string-width": {
5186+ "version": "1.0.2",
5187+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
5188+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
5189+ "dev": true,
5190+ "requires": {
5191+ "code-point-at": "^1.0.0",
5192+ "is-fullwidth-code-point": "^1.0.0",
5193+ "strip-ansi": "^3.0.0"
5194+ }
5195+ },
5196+ "strip-ansi": {
5197+ "version": "3.0.1",
5198+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
5199+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
5200+ "dev": true,
5201+ "requires": {
5202+ "ansi-regex": "^2.0.0"
5203+ }
5204+ }
5205+ }
5206+ },
5207+ "wrappy": {
5208+ "version": "1.0.2",
5209+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
5210+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
5211+ "dev": true
5212+ },
5213+ "xregexp": {
5214+ "version": "4.0.0",
5215+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
5216+ "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
5217+ "dev": true
5218+ },
5219+ "xtend": {
5220+ "version": "4.0.1",
5221+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
5222+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
5223+ "dev": true
5224+ },
5225+ "y18n": {
5226+ "version": "4.0.0",
5227+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
5228+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
5229+ "dev": true
5230+ },
5231+ "yallist": {
5232+ "version": "2.1.2",
5233+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
5234+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
5235+ "dev": true
5236+ },
5237+ "yargs": {
5238+ "version": "12.0.2",
5239+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
5240+ "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
5241+ "dev": true,
5242+ "requires": {
5243+ "cliui": "^4.0.0",
5244+ "decamelize": "^2.0.0",
5245+ "find-up": "^3.0.0",
5246+ "get-caller-file": "^1.0.1",
5247+ "os-locale": "^3.0.0",
5248+ "require-directory": "^2.1.1",
5249+ "require-main-filename": "^1.0.1",
5250+ "set-blocking": "^2.0.0",
5251+ "string-width": "^2.0.0",
5252+ "which-module": "^2.0.0",
5253+ "y18n": "^3.2.1 || ^4.0.0",
5254+ "yargs-parser": "^10.1.0"
5255+ },
5256+ "dependencies": {
5257+ "find-up": {
5258+ "version": "3.0.0",
5259+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
5260+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
5261+ "dev": true,
5262+ "requires": {
5263+ "locate-path": "^3.0.0"
5264+ }
5265+ },
5266+ "locate-path": {
5267+ "version": "3.0.0",
5268+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
5269+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
5270+ "dev": true,
5271+ "requires": {
5272+ "p-locate": "^3.0.0",
5273+ "path-exists": "^3.0.0"
5274+ }
5275+ },
5276+ "p-limit": {
5277+ "version": "2.0.0",
5278+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
5279+ "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
5280+ "dev": true,
5281+ "requires": {
5282+ "p-try": "^2.0.0"
5283+ }
5284+ },
5285+ "p-locate": {
5286+ "version": "3.0.0",
5287+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
5288+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
5289+ "dev": true,
5290+ "requires": {
5291+ "p-limit": "^2.0.0"
5292+ }
5293+ },
5294+ "p-try": {
5295+ "version": "2.0.0",
5296+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
5297+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
5298+ "dev": true
5299+ }
5300+ }
5301+ },
5302+ "yargs-parser": {
5303+ "version": "10.1.0",
5304+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
5305+ "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
5306+ "dev": true,
5307+ "requires": {
5308+ "camelcase": "^4.1.0"
5309+ }
5310+ }
5311+ }
5312+}
example/js/package.jsonnew file+35
@@ -0,0 +1,35 @@
1+{
2+ "name": "create-wasm-app",
3+ "version": "0.1.0",
4+ "description": "create an app to consume rust-generated wasm packages",
5+ "main": "index.js",
6+ "bin": {
7+ "create-wasm-app": ".bin/create-wasm-app.js"
8+ },
9+ "scripts": {
10+ "build": "webpack --config webpack.config.js",
11+ "start": "webpack-dev-server"
12+ },
13+ "repository": {
14+ "type": "git",
15+ "url": "git+https://github.com/rustwasm/create-wasm-app.git"
16+ },
17+ "keywords": [
18+ "webassembly",
19+ "wasm",
20+ "rust",
21+ "webpack"
22+ ],
23+ "author": "Ashley Williams <ashley666ashley@gmail.com>",
24+ "license": "(MIT OR Apache-2.0)",
25+ "bugs": {
26+ "url": "https://github.com/rustwasm/create-wasm-app/issues"
27+ },
28+ "homepage": "https://github.com/rustwasm/create-wasm-app#readme",
29+ "devDependencies": {
30+ "webpack": "^4.16.3",
31+ "webpack-cli": "^3.1.0",
32+ "webpack-dev-server": "^3.1.5",
33+ "copy-webpack-plugin": "^4.5.2"
34+ }
35+}
example/js/webpack.config.jsnew file+14
@@ -0,0 +1,14 @@
1+const CopyWebpackPlugin = require("copy-webpack-plugin");
2+const path = require('path');
3+
4+module.exports = {
5+ entry: "./bootstrap.js",
6+ output: {
7+ path: path.resolve(__dirname, "dist"),
8+ filename: "bootstrap.js",
9+ },
10+ mode: "development",
11+ plugins: [
12+ new CopyWebpackPlugin(['index.html'])
13+ ],
14+};
example/rust/.gitignorenew file+6
@@ -0,0 +1,6 @@
1+/target
2+**/*.rs.bk
3+Cargo.lock
4+/pkg
5+/bin
6+wasm-pack.log
example/rust/Cargo.tomlnew file+28
@@ -0,0 +1,28 @@
1+[package]
2+name = "dodrio-example"
3+version = "0.1.0"
4+authors = ["Nick Fitzgerald <fitzgen@gmail.com>"]
5+edition = "2018"
6+
7+[lib]
8+crate-type = ["cdylib", "rlib"]
9+
10+[features]
11+
12+[dependencies]
13+bumpalo = { path = "../../../bumpalo" }
14+dodrio = { path = "../.." }
15+wasm-bindgen = "0.2"
16+console_error_panic_hook = "0.1.1"
17+
18+[dependencies.web-sys]
19+version = "0.3.2"
20+features = [
21+ "Document",
22+ "HtmlElement",
23+ "Node",
24+ "Window",
25+]
26+
27+[dev-dependencies]
28+wasm-bindgen-test = "0.2"
example/rust/README.mdnew file+54
@@ -0,0 +1,54 @@
1+<meta charset="utf-8"/>
2+
3+# 🦀🕸️ `wasm-pack-template`
4+
5+A template for kick starting a Rust and WebAssembly project using
6+[`wasm-pack`](https://github.com/rustwasm/wasm-pack).
7+
8+This template is designed for compiling Rust libraries into WebAssembly and
9+publishing the resulting package to NPM.
10+
11+* Want to use the published NPM package in a Website? [Check out
12+ `create-wasm-app`.](https://github.com/rustwasm/create-wasm-app)
13+* Want to make a monorepo-style Website without publishing to NPM? Check out
14+ [`rust-webpack-template`](https://github.com/rustwasm/rust-webpack-template)
15+ and/or
16+ [`rust-parcel-template`](https://github.com/rustwasm/rust-parcel-template).
17+
18+## 🔋 Batteries Included
19+
20+* [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating
21+ between WebAssembly and JavaScript.
22+* [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook)
23+ for logging panic messages to the developer console.
24+* [`wee_alloc`](https://github.com/rustwasm/wee_alloc), an allocator optimized
25+ for small code size.
26+
27+## 🚴 Usage
28+
29+### 🐑 Use `cargo generate` to Clone this Template
30+
31+[Learn more about `cargo generate` here.](https://github.com/ashleygwilliams/cargo-generate)
32+
33+```
34+cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name my-project
35+cd my-project
36+```
37+
38+### 🛠️ Build with `wasm-pack build`
39+
40+```
41+wasm-pack build
42+```
43+
44+### 🔬 Test in Headless Browsers with `wasm-pack test`
45+
46+```
47+wasm-pack test --headless --firefox
48+```
49+
50+### 🎁 Publish to NPM with `wasm-pack publish`
51+
52+```
53+wasm-pack publish
54+```
example/rust/src/lib.rsnew file+45
@@ -0,0 +1,45 @@
1+use bumpalo::Bump;
2+use dodrio::{Node, Render};
3+use wasm_bindgen::prelude::*;
4+
5+struct HelloWorld<'a>(&'a str);
6+
7+impl<'who> HelloWorld<'who> {
8+ fn new(who: &str) -> HelloWorld {
9+ HelloWorld(who)
10+ }
11+}
12+
13+impl<'who> Render for HelloWorld<'who> {
14+ fn render<'a, 'bump>(&'a self, bump: &'bump Bump<'bump>) -> dodrio::node::NodeRef<'bump>
15+ where
16+ 'a: 'bump,
17+ {
18+ bump.alloc(Node::element(
19+ "p",
20+ [],
21+ [
22+ bump.alloc(Node::text("Hello, ")).into(),
23+ bump.alloc(Node::text(self.0)).into(),
24+ bump.alloc(Node::text("!")).into(),
25+ ],
26+ ))
27+ .into()
28+ }
29+}
30+
31+#[wasm_bindgen]
32+pub fn run() {
33+ console_error_panic_hook::set_once();
34+
35+ let window = web_sys::window().unwrap();
36+ let document = window.document().unwrap();
37+ let body = document.body().unwrap();
38+
39+ // Create a new dodrio vdom contained in the body, with an initial virtual
40+ // dom.
41+ let mut vdom = dodrio::Vdom::new(body.as_ref(), HelloWorld::new("World"));
42+
43+ // Render a new node tree into the virtual dom.
44+ vdom.render(HelloWorld::new("Dodrio"));
45+}
example/rust/tests/web.rsnew file+13
@@ -0,0 +1,13 @@
1+//! Test suite for the Web and headless browsers.
2+
3+#![cfg(target_arch = "wasm32")]
4+
5+extern crate wasm_bindgen_test;
6+use wasm_bindgen_test::*;
7+
8+wasm_bindgen_test_configure!(run_in_browser);
9+
10+#[wasm_bindgen_test]
11+fn pass() {
12+ assert_eq!(1 + 1, 2);
13+}
js/change-list.jsnew file+148
@@ -0,0 +1,148 @@
1+const decoder = new TextDecoder();
2+
3+function top(stack) {
4+ return stack[stack.length - 1];
5+}
6+
7+function string(mem, pointer, length) {
8+ const buf = mem.subarray(pointer, pointer + length);
9+ return decoder.decode(buf);
10+}
11+
12+const OP_TABLE = [
13+ // 0
14+ function setText(stack, mem8, mem32, i) {
15+ const pointer = mem32[i++];
16+ const length = mem32[i++];
17+ const str = string(mem8, pointer, length);
18+ top(stack).textContent = str;
19+ return i;
20+ },
21+
22+ // 1
23+ function removeSelfAndNextSiblings(stack, mem8, mem32, i) {
24+ const node = stack.pop();
25+ let sibling = node.nextSibling;
26+ while (sibling) {
27+ const temp = sibling.nextSibling;
28+ sibling.remove();
29+ sibling = temp;
30+ }
31+ node.remove();
32+ return i;
33+ },
34+
35+ // 2
36+ function replaceWith(stack, mem8, mem32, i) {
37+ const newNode = stack.pop();
38+ const oldNode = stack.pop();
39+ oldNode.replaceWith(newNode);
40+ stack.push(newNode);
41+ return i;
42+ },
43+
44+ // 3
45+ function setAttribute(stack, mem8, mem32, i) {
46+ const pointer1 = mem32[i++];
47+ const length1 = mem32[i++];
48+ const name = string(mem8, pointer1, length1);
49+ const pointer2 = mem32[i++];
50+ const length2 = mem32[i++];
51+ const value = string(mem8, pointer2, length2);
52+ top(stack).setAttribute(name, value);
53+ return i;
54+ },
55+
56+ // 4
57+ function removeAttribute(stack, mem8, mem32, i) {
58+ const pointer = mem32[i++];
59+ const length = mem32[i++];
60+ const name = string(mem8, pointer, length);
61+ top(stack).removeAttribute(name);
62+ return i;
63+ },
64+
65+ // 5
66+ function pushFirstChild(stack, mem8, mem32, i) {
67+ stack.push(top(stack).firstChild);
68+ return i;
69+ },
70+
71+ // 6
72+ function popPushNextSibling(stack, mem8, mem32, i) {
73+ const node = stack.pop();
74+ stack.push(node.nextSibling);
75+ return i;
76+ },
77+
78+ // 7
79+ function pop(stack, mem8, mem32, i) {
80+ stack.pop();
81+ return i;
82+ },
83+
84+ // 8
85+ function appendChild(stack, mem8, mem32, i) {
86+ const child = stack.pop();
87+ top(stack).appendChild(child);
88+ return i;
89+ },
90+
91+ // 9
92+ function createTextNode(stack, mem8, mem32, i) {
93+ const pointer = mem32[i++];
94+ const length = mem32[i++];
95+ const text = string(mem8, pointer, length);
96+ stack.push(document.createTextNode(text));
97+ return i;
98+ },
99+
100+ // 10
101+ function createElement(stack, mem8, mem32, i) {
102+ const pointer = mem32[i++];
103+ const length = mem32[i++];
104+ const tagName = string(mem8, pointer, length);
105+ stack.push(document.createElement(tagName));
106+ return i;
107+ }
108+];
109+
110+export class ChangeList {
111+ constructor(container) {
112+ this.container = container;
113+ this.ranges = [];
114+ this.stack = [];
115+ }
116+
117+ addChangeListRange(start, len) {
118+ this.ranges.push(start);
119+ this.ranges.push(len);
120+ }
121+
122+ applyChanges(memory) {
123+ if (this.ranges.length == 0) {
124+ return;
125+ }
126+
127+ this.stack.push(this.container.firstChild);
128+ const mem8 = new Uint8Array(memory.buffer);
129+ const mem32 = new Uint32Array(memory.buffer);
130+
131+ for (let i = 0; i < this.ranges.length; i += 2) {
132+ const start = this.ranges[i];
133+ const len = this.ranges[i + 1];
134+ this.applyChangeRange(mem8, mem32, start, len);
135+ }
136+
137+ this.ranges.length = 0;
138+ this.stack.length = 0;
139+ }
140+
141+ applyChangeRange(mem8, mem32, start, len) {
142+ const end = (start + len) / 4;
143+ for (let i = start / 4; i < end; ) {
144+ const op = mem32[i++];
145+ i = OP_TABLE[op](this.stack, mem8, mem32, i);
146+ }
147+ }
148+}
js/package-lock.jsonnew file+5
@@ -0,0 +1,5 @@
1+{
2+ "name": "dodrio",
3+ "version": "0.1.0",
4+ "lockfileVersion": 1
5+}
js/package.jsonnew file+11
@@ -0,0 +1,11 @@
1+{
2+ "name": "dodrio",
3+ "version": "0.1.0",
4+ "description": "Dodrio",
5+ "main": "dodrio.js",
6+ "scripts": {
7+ "test": "echo \"Error: no test specified\" && exit 1"
8+ },
9+ "author": "Nick Fitzgerald <fitzgen@gmail.com>",
10+ "license": "MPL-2.0"
11+}
src/change_list.rsnew file+224
@@ -0,0 +1,224 @@
1+use bumpalo::{Bump, BumpAllocSafe};
2+use wasm_bindgen::prelude::*;
3+
4+pub mod js {
5+ use wasm_bindgen::prelude::*;
6+
7+ #[wasm_bindgen(module = "dodrio/change-list")]
8+ extern "C" {
9+ #[derive(Clone, Debug)]
10+ pub type ChangeList;
11+
12+ #[wasm_bindgen(constructor)]
13+ pub fn new(container: &web_sys::Node) -> ChangeList;
14+
15+ #[wasm_bindgen(method, js_name = addChangeListRange)]
16+ pub fn add_change_list_range(this: &ChangeList, start: usize, len: usize);
17+
18+ #[wasm_bindgen(method, js_name = applyChanges)]
19+ pub fn apply_changes(this: &ChangeList, memory: JsValue);
20+ }
21+}
22+
23+pub(crate) struct ChangeList {
24+ bump: Bump,
25+ js: js::ChangeList,
26+}
27+
28+impl ChangeList {
29+ pub(crate) fn new(container: &web_sys::Node) -> ChangeList {
30+ let bump = Bump::new();
31+ let js = js::ChangeList::new(container);
32+ ChangeList { bump, js }
33+ }
34+
35+ pub(crate) fn apply_changes(&mut self) {
36+ let js = &self.js;
37+ unsafe {
38+ self.bump.each_allocated_chunk(|ch| {
39+ js.add_change_list_range(ch.as_ptr() as usize, ch.len());
40+ });
41+ }
42+ js.apply_changes(wasm_bindgen::memory());
43+ self.bump.reset();
44+ }
45+}
46+
47+#[wasm_bindgen]
48+#[repr(u32)]
49+pub enum ChangeDiscriminant {
50+ /// Immediates: `(pointer, length)`
51+ ///
52+ /// Stack: `[... TextNode] -> [... TextNode]`
53+ ///
54+ /// ```text
55+ /// stack.top().textContent = String(pointer, length)
56+ /// ```
57+ SetText = 0,
58+
59+ /// Immediates: `()`
60+ ///
61+ /// Stack: `[... Node] -> [...]`
62+ ///
63+ /// ```text
64+ /// node = stack.pop()
65+ /// while (node.nextSibling) {
66+ /// node.nextSibling.remove();
67+ /// }
68+ /// node.remove()
69+ /// ```
70+ RemoveSelfAndNextSiblings = 1,
71+
72+ /// Immediates: `()`
73+ ///
74+ /// Stack: `[... Node Node] -> [... Node]`
75+ ///
76+ /// ```text
77+ /// new = stack.pop()
78+ /// old = stack.pop()
79+ /// old.replaceWith(new)
80+ /// stack.push(new)
81+ /// ```
82+ ReplaceWith = 2,
83+
84+ /// Immediates: `(pointer1, length1, pointer2, length2)`
85+ ///
86+ /// Stack: `[... Node] -> [... Node]`
87+ ///
88+ /// ```text
89+ /// stack.top().setAttribute(String(pointer1, length1), String(pointer2, length2))
90+ /// ```
91+ SetAttribute = 3,
92+
93+ /// Immediates: (pointer, length)
94+ ///
95+ /// Stack: `[... Node] -> [... Node]`
96+ ///
97+ /// ```text
98+ /// stack.top().removeAttribute(String(pointer, length))
99+ /// ```
100+ RemoveAttribute = 4,
101+
102+ /// Immediates: `()`
103+ ///
104+ /// Stack: `[... Node] -> [... Node node]`
105+ ///
106+ /// ```text
107+ /// stack.push(stack.top().firstChild)
108+ /// ```
109+ PushFirstChild = 5,
110+
111+ /// Immediates: `()`
112+ ///
113+ /// Stack: `[... Node] -> [... Node]`
114+ ///
115+ /// ```text
116+ /// stack.push(stack.pop().nextSibling)
117+ /// ```
118+ PopPushNextSibling = 6,
119+
120+ /// Immediates: `()`
121+ ///
122+ /// Stack: `[... T] -> [...]`
123+ ///
124+ /// ```text
125+ /// stack.pop()
126+ /// ```
127+ Pop = 7,
128+
129+ /// Immediates: `()`
130+ ///
131+ /// Stack: `[... Node Node] -> [... Node]`
132+ ///
133+ /// ```text
134+ /// child = stack.pop()
135+ /// stack.top().appendChild(child)
136+ /// ```
137+ AppendChild = 8,
138+
139+ /// Immediates: `(pointer, length)`
140+ ///
141+ /// Stack: `[...] -> [... Node]`
142+ ///
143+ /// ```text
144+ /// stack.push(createTextNode(String(pointer, length)))
145+ /// ```
146+ CreateTextNode = 9,
147+
148+ /// Immediates: `(pointer, length)`
149+ ///
150+ /// Stack: `[...] -> [... Node]`
151+ ///
152+ /// ```text
153+ /// stack.push(createElement(String(pointer, length))
154+ /// ```
155+ CreateElement = 10,
156+}
157+
158+impl BumpAllocSafe for ChangeDiscriminant {}
159+
160+impl ChangeList {
161+ pub(crate) fn emit_set_text(&self, text: &str) {
162+ self.bump
163+ .alloc((ChangeDiscriminant::SetText, text.as_ptr(), text.len()));
164+ }
165+
166+ pub(crate) fn emit_remove_self_and_next_siblings(&self) {
167+ self.bump
168+ .alloc(ChangeDiscriminant::RemoveSelfAndNextSiblings);
169+ }
170+
171+ pub(crate) fn emit_replace_with(&self) {
172+ self.bump.alloc(ChangeDiscriminant::ReplaceWith);
173+ }
174+
175+ pub(crate) fn emit_set_attribute(&self, name: &str, value: &str) {
176+ self.bump.alloc((
177+ ChangeDiscriminant::SetAttribute,
178+ name.as_ptr(),
179+ name.len(),
180+ value.as_ptr(),
181+ value.len(),
182+ ));
183+ }
184+
185+ pub(crate) fn emit_remove_attribute(&self, name: &str) {
186+ self.bump.alloc((
187+ ChangeDiscriminant::RemoveAttribute,
188+ name.as_ptr(),
189+ name.len(),
190+ ));
191+ }
192+
193+ pub(crate) fn emit_push_first_child(&self) {
194+ self.bump.alloc(ChangeDiscriminant::PushFirstChild);
195+ }
196+
197+ pub(crate) fn emit_pop_push_next_sibling(&self) {
198+ self.bump.alloc(ChangeDiscriminant::PopPushNextSibling);
199+ }
200+
201+ pub(crate) fn emit_pop(&self) {
202+ self.bump.alloc(ChangeDiscriminant::Pop);
203+ }
204+
205+ pub(crate) fn emit_append_child(&self) {
206+ self.bump.alloc(ChangeDiscriminant::AppendChild);
207+ }
208+
209+ pub(crate) fn emit_create_text_node(&self, text: &str) {
210+ self.bump.alloc((
211+ ChangeDiscriminant::CreateTextNode,
212+ text.as_ptr(),
213+ text.len(),
214+ ));
215+ }
216+
217+ pub(crate) fn emit_create_element(&self, tag_name: &str) {
218+ self.bump.alloc((
219+ ChangeDiscriminant::CreateElement,
220+ tag_name.as_ptr(),
221+ tag_name.len(),
222+ ));
223+ }
224+}
src/lib.rsnew file+14
@@ -0,0 +1,14 @@
1+use bumpalo::Bump;
2+
3+pub mod change_list;
4+pub mod node;
5+pub mod vdom;
6+
7+pub use self::node::{Node, NodeRef};
8+pub use self::vdom::Vdom;
9+
10+pub trait Render {
11+ fn render<'a, 'bump>(&'a self, bump: &'bump Bump) -> NodeRef<'bump>
12+ where
13+ 'a: 'bump;
14+}
src/node.rsnew file+94
@@ -0,0 +1,94 @@
1+use bumpalo::BumpAllocSafe;
2+
3+#[derive(Clone, Debug)]
4+pub struct Node<'a, Attributes, Children> {
5+ data: NodeData<'a>,
6+ attributes: Attributes,
7+ children: Children,
8+}
9+
10+#[derive(Clone, Copy, Debug)]
11+pub enum NodeData<'a> {
12+ Element { tag_name: &'a str },
13+ Text { text: &'a str },
14+}
15+
16+#[derive(Clone, Debug)]
17+pub struct NodeRef<'a> {
18+ pub(crate) data: NodeData<'a>,
19+ pub(crate) attributes: &'a [Attribute<'a>],
20+ pub(crate) children: &'a [NodeRef<'a>],
21+}
22+
23+#[derive(Clone, Debug)]
24+pub struct Attribute<'a> {
25+ pub name: &'a str,
26+ pub value: &'a str,
27+}
28+
29+impl<'a, Attributes, Children> BumpAllocSafe for Node<'a, Attributes, Children>
30+where
31+ Attributes: BumpAllocSafe,
32+ Children: BumpAllocSafe,
33+{
34+}
35+
36+impl<'a, Attributes, Children> From<&'a Node<'a, Attributes, Children>> for NodeRef<'a>
37+where
38+ Attributes: AsRef<[Attribute<'a>]>,
39+ Children: AsRef<[NodeRef<'a>]>,
40+{
41+ fn from(node: &'a Node<'a, Attributes, Children>) -> NodeRef<'a> {
42+ NodeRef {
43+ data: node.data,
44+ attributes: node.attributes.as_ref(),
45+ children: node.children.as_ref(),
46+ }
47+ }
48+}
49+
50+impl<'a, Attributes, Children> From<&'a mut Node<'a, Attributes, Children>> for NodeRef<'a>
51+where
52+ Attributes: AsRef<[Attribute<'a>]>,
53+ Children: AsRef<[NodeRef<'a>]>,
54+{
55+ fn from(node: &'a mut Node<'a, Attributes, Children>) -> NodeRef<'a> {
56+ NodeRef {
57+ data: node.data,
58+ attributes: node.attributes.as_ref(),
59+ children: node.children.as_ref(),
60+ }
61+ }
62+}
63+
64+impl<'a, Attributes, Children> Node<'a, Attributes, Children>
65+where
66+ Attributes: AsRef<[Attribute<'a>]>,
67+ Children: AsRef<[NodeRef<'a>]>,
68+{
69+ pub fn element(
70+ tag_name: &'a str,
71+ attributes: Attributes,
72+ children: Children,
73+ ) -> Node<'a, Attributes, Children> {
74+ let data = NodeData::Element { tag_name };
75+ Node {
76+ data,
77+ attributes,
78+ children,
79+ }
80+ }
81+}
82+
83+impl<'a> Node<'a, [Attribute<'a>; 0], [NodeRef<'a>; 0]> {
84+ pub fn text(text: &'a str) -> Node<'a, [Attribute<'a>; 0], [NodeRef<'a>; 0]> {
85+ let data = NodeData::Text { text };
86+ let attributes = [];
87+ let children = [];
88+ Node {
89+ data,
90+ attributes,
91+ children,
92+ }
93+ }
94+}
src/vdom.rsnew file+189
@@ -0,0 +1,189 @@
1+use super::change_list::ChangeList;
2+use super::node::{Node, NodeData, NodeRef};
3+use super::Render;
4+use bumpalo::Bump;
5+use std::mem;
6+
7+pub struct Vdom {
8+ dom_buffers: [Bump; 2],
9+ change_list: ChangeList,
10+
11+ // Actually a reference into `self.dom_buffers[0]`.
12+ current_root: Option<NodeRef<'static>>,
13+}
14+
15+unsafe fn extend_node_lifetime<'a>(node: NodeRef<'a>) -> NodeRef<'static> {
16+ mem::transmute(node)
17+}
18+
19+impl Vdom {
20+ pub fn new<R>(container: &web_sys::Node, contents: R) -> Vdom
21+ where
22+ R: Render,
23+ {
24+ let dom_buffers = [Bump::new(), Bump::new()];
25+ let change_list = ChangeList::new(container);
26+
27+ // Create a dummy `<div/>` in our container.
28+ let current_root: NodeRef = dom_buffers[0].alloc(Node::element("div", [], [])).into();
29+ let current_root = Some(unsafe { extend_node_lifetime(current_root) });
30+ let window = web_sys::window().expect("should have acess to the Window");
31+ let document = window
32+ .document()
33+ .expect("should have access to the Document");
34+ container
35+ .append_child(
36+ document
37+ .create_element("div")
38+ .expect("should create element OK")
39+ .as_ref(),
40+ )
41+ .expect("should append child OK");
42+
43+ // Diff and apply the `contents` against this dummy node.
44+ let mut vdom = Vdom {
45+ dom_buffers,
46+ change_list,
47+ current_root,
48+ };
49+ vdom.render(contents);
50+ vdom
51+ }
52+
53+ pub fn render<R>(&mut self, contents: R)
54+ where
55+ R: Render,
56+ {
57+ unsafe {
58+ self.dom_buffers[1].reset();
59+ let new_contents = contents.render(&self.dom_buffers[1]);
60+ let new_contents = extend_node_lifetime(new_contents);
61+
62+ let old_contents = self.current_root.take().unwrap();
63+ self.diff(old_contents, new_contents.clone());
64+
65+ self.swap_buffers();
66+ self.set_current_root(new_contents);
67+
68+ self.change_list.apply_changes();
69+ }
70+ }
71+
72+ fn swap_buffers(&mut self) {
73+ let (first, second) = self.dom_buffers.as_mut().split_at_mut(1);
74+ mem::swap(&mut first[0], &mut second[0]);
75+ }
76+
77+ unsafe fn set_current_root(&mut self, current: NodeRef<'static>) {
78+ debug_assert!(self.current_root.is_none());
79+ self.current_root = Some(current);
80+ }
81+
82+ fn diff(&self, old: NodeRef, new: NodeRef) {
83+ match (new.data, old.data) {
84+ (NodeData::Text { text: new_text }, NodeData::Text { text: old_text }) => {
85+ if new_text != old_text {
86+ self.change_list.emit_set_text(new_text);
87+ }
88+ }
89+ (NodeData::Text { .. }, NodeData::Element { .. }) => {
90+ self.create(new);
91+ self.change_list.emit_replace_with();
92+ }
93+ (NodeData::Element { .. }, NodeData::Text { .. }) => {
94+ self.create(new);
95+ self.change_list.emit_replace_with();
96+ }
97+ (
98+ NodeData::Element {
99+ tag_name: new_tag_name,
100+ },
101+ NodeData::Element {
102+ tag_name: old_tag_name,
103+ },
104+ ) => {
105+ if new_tag_name != old_tag_name {
106+ self.create(new);
107+ self.change_list.emit_replace_with();
108+ return;
109+ }
110+
111+ // Do O(n^2) passes to add/update and remove attributes, since
112+ // there are almost always very few attributes.
113+ 'outer: for new_attr in new.attributes {
114+ for old_attr in old.attributes {
115+ if old_attr.name == new_attr.name {
116+ if old_attr.value != new_attr.value {
117+ self.change_list
118+ .emit_set_attribute(new_attr.name, new_attr.value);
119+ }
120+ continue 'outer;
121+ }
122+ }
123+ self.change_list
124+ .emit_set_attribute(new_attr.name, new_attr.value);
125+ }
126+ 'outer2: for old_attr in old.attributes {
127+ for new_attr in new.attributes {
128+ if old_attr.name == new_attr.name {
129+ continue 'outer2;
130+ }
131+ }
132+ self.change_list.emit_remove_attribute(old_attr.name);
133+ }
134+
135+ let mut new_children = new.children.iter();
136+ let mut old_children = old.children.iter();
137+ let mut pushed_first_child = false;
138+
139+ for (i, (new_child, old_child)) in
140+ new_children.by_ref().zip(old_children.by_ref()).enumerate()
141+ {
142+ if i == 0 {
143+ self.change_list.emit_push_first_child();
144+ pushed_first_child = true;
145+ } else {
146+ self.change_list.emit_pop_push_next_sibling();
147+ }
148+
149+ self.diff(old_child.clone(), new_child.clone());
150+ }
151+
152+ if old_children.next().is_some() {
153+ if !pushed_first_child {
154+ self.change_list.emit_push_first_child();
155+ }
156+ self.change_list.emit_remove_self_and_next_siblings();
157+ }
158+
159+ for (i, new_child) in new_children.enumerate() {
160+ if i == 0 && pushed_first_child {
161+ self.change_list.emit_pop();
162+ }
163+ self.create(new_child.clone());
164+ self.change_list.emit_append_child();
165+ }
166+
167+ self.change_list.emit_pop();
168+ }
169+ }
170+ }
171+
172+ fn create(&self, node: NodeRef) {
173+ match node.data {
174+ NodeData::Text { text } => {
175+ self.change_list.emit_create_text_node(text);
176+ }
177+ NodeData::Element { tag_name } => {
178+ self.change_list.emit_create_element(tag_name);
179+ for attr in node.attributes {
180+ self.change_list.emit_set_attribute(&attr.name, &attr.value);
181+ }
182+ for child in node.children {
183+ self.create(child.clone());
184+ self.change_list.emit_append_child();
185+ }
186+ }
187+ }
188+ }
189+}
tests/web.rsnew file+13
@@ -0,0 +1,13 @@
1+//! Test suite for the Web and headless browsers.
2+
3+#![cfg(target_arch = "wasm32")]
4+
5+extern crate wasm_bindgen_test;
6+use wasm_bindgen_test::*;
7+
8+wasm_bindgen_test_configure!(run_in_browser);
9+
10+#[wasm_bindgen_test]
11+fn pass() {
12+ assert_eq!(1 + 1, 2);
13+}